Здесь происходит вызов связанной процедуры деления div16u
; ----------------------------------------------------------------------
; Пропечатка в буфер integer 16 битного
; Вход:  DE-входящие данные
; Выход: DE-указатель на полученную строку
; ----------------------------------------------------------------------

; Переменные
itoa_dt:    defb    6,5,5,3,5,0

; Процедура
itoa:       push    bc
            push    hl
            ld      hl, itoa_dt+4       ; Последний символ
            ld      bc, 10
itoal:      push    hl
            call    div16u              ; L=DE mod 10 (Разделить число на 10)
            ld      a, l                ; Записать остаток в A
            add     a, '0'
            pop     hl
            ld      (hl), a             ; Запись числа 0..9 ASCII
            dec     hl
            ld      a, d
            or      e
            jr      nz, itoal           ; Повторять пока не будет 0
            inc     hl                  ; Восстановить указатель
            ex      de, hl              ; Поместить HL -> DE
            pop     hl
            pop     bc
            ret
2 сен, 2020
© 2007-2022 Кружка кродеться отлично