§ Код процедуры
Данная процедура выводит числа от -32768 до 32767, которые могут быть записаны в AX.-
BX
- указатель, где будет строка (временная) - Для процедуры необходимо 5 символов места
DS:BX
1itoa: lea si, [bx + 5] ; Переместить указатель в конец 2 mov [si], byte 0 ; Поставить там символ завершения вывода на экран 3 test ax, $8000 ; Тест на знак 4 jns .L1 ; Это не знаковое, пропуск 5 6 neg ax ; AX = -AX 7 push ax ; Сохранить число AX 8 mov ah, 0Eh ; AH=0e печать одного символа 9 mov al, '-' ; Этот символ '-' 10 int 10h ; Вызов Биос-функции печати символа 11 pop ax ; Восстановить число AX 12 13.L1: mov bx, 10 ; bx=10 (на что делим) 14.L2: xor dx, dx ; dx=очистить обязательно! 15 div bx ; делим ax / bx, получаем ax, остаток dx 16 add dl, '0' ; dl = 0..9, приводим к ASCII виду '0'..'9' 17 dec si ; Сдвиг курсора налево 18 mov [si], dl ; Запись полученного символа 19 and ax, ax ; Проверить AX на 0 20 jne .L2 ; Если еще не 0, есть символы еще слева 21 22.L3: lodsb ; Загрузить символ из [SI] 23 and al, al ; Проверка AL=0 24 je .L4 ; Если да, завершить 25 mov ah, 0Eh ; Код вывода символа 26 int 10h ; Вывод символа через BIOS 27 jmp .L3 28 29.L4: ret