Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2009, 23:31   #1
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию перевод чисел

надо ввести число и перевести из 5 системы в 13

пока получается только ввести строку и алгоритм перевода в число вроде понятен, но вот написать его никак...

Код:
; vvod stroki
input PROC

   mov ah,0Ah
   mov dx,offset buffer
   int 21h
   ret

endp

; vivod stroki
output PROC 
    
   mov ah,9
   mov dx, offset buffer[2]
   int 21h
   ret 

endp  

; nachalo programmy
start:

   mov   ax,DGROUP         
   mov   ds,ax             

   mov ah,9
   mov dx, offset zapros  
   int 21h

   mov dx,offset caretka   
   mov ah,9
   int 21h

   call input                       ; funkciya vvoda

   mov ah,9   
   mov dx,offset caretka  
   int 21h
   

   call output                    ;funkciya vivoda

   mov  ax,4C00h            ; vichod iz programmy
   int  21h
хотелось бы узнать как найти длину введенной строки , ее индексация и как реализовать перевод в 10 (например) систему
counter вне форума Ответить с цитированием
Старый 05.06.2009, 00:55   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Сочинил только что, поэтому сильно прошу не пинать. Программа для перевода из одной системы счисления в другую. Проверки на правельность ввода здесь нет.
Вложения
Тип файла: rar temp.rar (2.2 Кб, 32 просмотров)
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 05.06.2009 в 01:22.
Goodwin98 вне форума Ответить с цитированием
Старый 05.06.2009, 15:11   #3
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

а что делает этот код

Код:
l1:	
	cmp cx,osnout*osnout*osnout*osnout     ; если число больше
	jb l2
	sub cx,osnout*osnout*osnout*osnout	; то вычитаем   - особенно тут?
	inc dx		                        ; и увеличиваем счетчик
	cmp dl,10
	jnz l1
	add dx,7
	jmp l1
counter вне форума Ответить с цитированием
Старый 05.06.2009, 15:30   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

У меня не очень хорошо получается понятно обьяснять что-либо, но попробую.
В этом месте и далее число раскладывается по разрядам в нужной системе счисления.
Код:
sub cx,osnout*osnout*osnout*osnout	; то вычитаем   - особенно тут?
Здесь из исходного числа вычитается osnout^4, т.е в нашем случае 13 в степени 4. Количество этих вычитаний будет старшим разрядом. В числе 3951513 это будет 3.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 05.06.2009 в 15:43.
Goodwin98 вне форума Ответить с цитированием
Старый 05.06.2009, 22:41   #5
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

спасибо попробую разобраться
counter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль перевод чисел Darf Помощь студентам 9 27.05.2009 17:46
Перевод чисел в строку RedWolf Помощь студентам 6 17.01.2008 00:09
Перевод чисел в различные С.С. Omedus Общие вопросы Delphi 5 05.11.2007 14:06