§ Описание

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

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

1; ----------------------------------------------------------------------
2; Конвертация HL строки [0-9]+ в [uint_16 DE]
3; HL будет находится после последнего разобранного символа
4; ----------------------------------------------------------------------
5
6atoi:       push    af
7            push    bc
8            ld      de, $0000
9atoil:      ld      a, (hl)
10            inc     hl
11            sub     '0'
12            jr      c, atoie
13            cp      10
14            jr      nc, atoie       ; 0 <= Acc <= 9
15            push    hl
16            ld      bc, 10
17            call    mul16u          ; DE *= 10
18            ex      de, hl
19            ld      b, 0
20            ld      c, a
21            add     hl, bc
22            ex      de, hl          ; DE = DE*10 + A
23            pop     hl
24            jr      atoil
25atoie:      pop     bc
26            pop     af
27            ret