; Преобразование в SDWORD
Invoke atol,ADDR buffer;результат в EAX
. . .
Вывод. При выводе решается обратная задача: необходимо преобразовать число, представленное во внутреннем формате, в символьную строку, завершающуюся нулем. Обратное преобразование из внутреннего формата в символьный обычно использует стандартное правило перевода числа из двоичной системы счисления в десятичную: деление на 10 с выделением остатков. В этом случае десятичные цифры получаются в обратном порядке. Если среди выводимых чисел могут быть отрицательные, то необходимо предусмотреть специальную проверку и преобразовывать отрицательные числа в прямой код.
Гораздо проще для этого применить стандартную процедуру.
Процедура преобразования числа в строку:
Dwtoa PROC public dwValue:DWORD, lpBuffer:PTR BYTE
Первый параметр – целое число формата DWORD, второй – адрес буфера, размером 16 байт. Полученная после преобразования строка обычно короче 16 символов, так как не содержит незначащих нулей.
Процедура вывода завершающейся нулем строки в окно консоли:
StdOut PROC lpszBuffer:DWORD
Параметр – адрес буфера вывода.
Пример.Программа вывода числа
DATA
result DWORD ?; поле результата
string DB 13,10,'Result ='; заголовок вывода
resstr DB 16 dup (?); выводимое число-строка
CODE
. . .
; Преобразование числа в символьную строку