§ Код процедуры

Данная процедура выводит числа от -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