§ Описание

Здесь происходит вызов связанной процедуры mul16u
На вход подается указатель на строку HL, на выход получается целочисленный неотрицательный результат DE. Разбор происходит до последнего знака из набора 0..9

§ Программный код

; ----------------------------------------------------------------------
; Конвертация HL строки [0-9]+ в [uint_16 DE]
; HL будет находится после последнего разобранного символа
; ----------------------------------------------------------------------

atoi:       push    af
            push    bc
            ld      de, $0000
atoil:      ld      a, (hl)
            inc     hl
            sub     '0'
            jr      c, atoie
            cp      10
            jr      nc, atoie       ; 0 <= Acc <= 9
            push    hl
            ld      bc, 10
            call    mul16u          ; DE *= 10
            ex      de, hl
            ld      b, 0
            ld      c, a
            add     hl, bc
            ex      de, hl          ; DE = DE*10 + A
            pop     hl
            jr      atoil
atoie:      pop     bc
            pop     af
            ret