Вход

Просмотр полной версии : str2int



breeze
04.04.2012, 00:51
Нужна готовая процедура перевода строки десятичных цифр в 16-битное число.

Что-то типа:



ld hl,string
call str2int
ret ; на выходе в DE число #4000
string db "16384",0

может есть у кого готовое решение? кстати чисел в строке не обязательно должно быть пять, может быть и одно число :)

заранее спасибо. :rolleyes:

Shadow Maker
04.04.2012, 01:04
Ну почти такое, сам уж конвертацию ascii в нужный формат сделаешь поди.

(DE).4 8-digit packed decimal number
<HL> Adress from result
(HL).4 4-byte result


DEBU1: PUSH BC
LD B,20 ;[B]=32D, cycles counter
DED11: XOR A ;<CY>=0
CALL DH4 ;devision into two parts
CALL RR4 ;4-Byte shift to right
DJNZ DED11
POP BC
RET

RR4: PUSH BC
PUSH HL
LD B,4
RR41: RR (HL)
INC HL
DJNZ RR41
POP HL
POP BC
RET

DH4: LD C,4
DHN: PUSH BC
PUSH DE
DHN1: LD A,(DE)
RRA
PUSH AF
BIT 3,A ;handling carried
JR Z, DHN2
SUB 3
DHN2: CP 80H ;handling carried
JR C,DHN3
SUB 30H
DHN3 LD (DE),A
POP AF
INC DE
DEC C
JR NZ,DHN1
POP DE
POP BC
RET

Gomez

breeze
04.04.2012, 01:15
Не совсем понял что на вход подавать?

Destr
04.04.2012, 02:51
Тут есть распознавайка: http://zxpress.ru/article.php?id=8555
(в процессе разбора поймёшь много других полезных вещей, гарантирую)

breeze
04.04.2012, 03:17
Тут есть распознавайка: http://zxpress.ru/article.php?id=8555
(в процессе разбора поймёшь много других полезных вещей, гарантирую)

спасибо, при случае почитаю :) ну а пока написал свой вариант… :D