КОНВЕРСИЯ ЧИСЕЛ
(С) Pantera
_________________________________________
Ну вот я решил еще кое-что вам подарить.
Конечно это не ново, но все таки.
Это не что иное как процедура конверсии
чисел из символьного вида в десятичный
формат. Эту процедуру я использовал в
CMOS 1.0. А вдруг кому то пригодится ;-).
;процедура активно uспoлюзyет регистр IЧ
ORG #8000
JR STR
ADR DEFS 2 ;Буфер адреса
;для STRING
STRING DEFB "21",#0D ;Символ для
;преобразования
;в dec формат
R_STR DEFS 2 ;Конечный ре-
;зультат
STR LD HL,STRING
LD (ADR),HL ;адрес в буфер
PUSH IX
CALL STR_0
LD (R_STR),IX;В IX результат
РОР IX
RET
STR_0
LD A,(HL)
СР #0D ;Проверка на
JR Z,STR_1 ;конец строки
INC HL
JR STR_0
STR_1
LD IX,0
DEC HL
LD DE,1 ;Проверка на
CALL REG ;единицы
LD DE,10 ;на десятки
CALL REG
LD DE,100 ;на сотни
CALL REG
LD DE,1000 ;на тысячи
CALL REG
LD DE,10000 ;на десятки
CALL REG ;тысяч
RET
REG
OR A
LD ВС,(ADR)
SBC HL,ВС
PUSH AF
ADD HL,ВС
РОР AF
RET С
LD A,(HL)
DEC HL
SUB #30
LD В,A
ADD IX,DE
DJNZ $-2
RET
Продолжение следует...
Other articles: