кто-то не сочтёт за труд подсказать новичку в ассемблере, как преобразовать целочисленное байтовое в строку с учётом знака?
Для tasm/.186
Что вы делали для поиска решения?
Ходил в Гугл. Сейчас изучаю SHR/SAL. Как я понимаю необходимо поймать бит знака и на основании него в строку добавить ASCII код "-" и сдвинуть начальный адрес в строке для дальнейшей записи числа.
а чего его ловить? делаешь test ax,ax jns @f ;выполняем если число отрицательное @@: ;выполняем во всех остальных случаях
Да, так проще. Я с SAL и CF сижу мудрю.
Накалякал тут преобразователь 4-х байтовых чисел с учётом знака (от -2.147.483.648 до 2.147.483.647) Может пригодится, хотя тебе вроде бы только однобайтовый пока нужен но с ним ещё проще. Итак, допустим на входе: 80000000h, на выходе будет: -2147483648: mov eax, 80000000h and eax, eax pushf jns positive neg eax positive: mov edi, decimal+10 mov ebx, 10 loop: cmp eax, 9 jbe enough xor edx, edx div ebx add dl, 30h ;'0' mov [edi], dl dec edi jmp loop enough: add al, 30h mov [edi], al popf jns exit dec edi mov byte [edi], 2dh ;'-' exit: ret decimal: dq 0, 0
У меня несколько проще: Проверяю на минус, укладываю его в первую ячейку строки, дальше по лэйблу str разбираю исходное число познаково. mov al, res+1 test al,al jns lbl_str mov res, 2Dh
Обсуждают сегодня