Помогите с программой на ассемблере
326 сообщений
#16 лет назад
Кто ассемблером занимается, помогите пожалуйста 
Нужно перевести целое шестнадцатеричное число в упакованное десятичное
Сама задача вот какая:
Ввод символьных 5 – разрядных целых шестнадцатиричных чисел, преобразование их в упакованные десятичные числа, их вычитание, используя арифметику упакованных десятичных чисел, преобразование результата в символьный вид и вывод его на экран
Если с арифметикой всё более-менее понятно, то перевод туда-обратно
Я думаю нужно брать таблицу '012...F'
86 сообщений
#16 лет назад
Таблица не нужна.если в текст : сдвигом выделяем цифру , прибавляем к ней код "0" и записываем в строку.
если в 16 вид: выделяем цифру, прибавляем к результату. результат множим на 10 ( можно сдвигом, можно еще как...) повторяем пока есть цифры...
собственно и все... 30-40 команд на asme
326 сообщений
#16 лет назад
Цитата:собственно и все... 30-40 команд на asme
Я только начал изучать asm, так что эта фраза не обнадеживает

Не совсем понял Цитата:
если в текст :
если в 16 вид:
86 сообщений
#16 лет назад
В текст = преобразовать в ASCII коды символов, отображающих десятичное-упакованное число. 0x112233 => 0xA1A1A2A2A3A3 = '112233', т.е. каждую десятичную цифру заменить на код символа, который ее отображает.... 1 -> 0xA1, 2->0xA2 .... и т.д.в 16-й вид: 0x20 (дес.упаков. ) => 0x14 (шестнадцатиричное) , т.е. десятичное число преобразовать в шестнадцатиричное. Как это сделать - написал выше.
если из 16-го в десятичный...то тут через деление, пока остаток в AH больше 0, ( а в AL как раз будет очередная цифра - и ее сохраняем в какой то строке, потом объединяем младшие 4 бита каждого байта в одно число....)
К тому же какой именно ассемблер? они разные бывают.... мне приходилась с 4 работать....
,
98 сообщений
#16 лет назад
Цитата ("s-t-r-i-k-e-r"):Кто ассемблером занимается, помогите пожалуйста
Лет пятнадцать не кодил в плотном режиме...
Цитата ("s-t-r-i-k-e-r"):
Нужно перевести целое шестнадцатеричное число в упакованное десятичное
google отменили?


ну держи результат моего 3х минутного поиска:
DecToHexDword proc
push ebp
mov ebp,esp
push 0
push 0
push 0 ;локальная переменная в 10 байт (10+2 для ровности) равная 0
mov eax,
mov ,eax ;Загружаем в младшее слово наше 10-ное число
fbld ;Передаём его сороцессору
fistp dword ptr ;Считываем переданное число как 16-ное
mov eax, ;Возвращаем его
leave
ret 4
DecToHexDword endp
HexToDecDword proc
push ebp
mov ebp,esp
sub esp,0ch ;локальная переменная в 10 байт (10+2 для ровности)
fild dword ptr ;Загружаем в младшее слово наше 16-ное число
fbstp ;Считываем переданное число как 10-ное
mov eax, ;Возвращаем его
leave
ret 4
HexToDecDword endp