home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
progm
/
dpl.zip
/
_HSTOI.D
< prev
next >
Wrap
Text File
|
1988-07-11
|
1KB
|
55 lines
; Doug's Programming Language -- DPL, Version 2.22
; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
;--------------------------------
; _ H S T O I - HEX STRING TO INTEGER CONVERSION
;
; Entry conditions:
; SI holds the string offset
; Exit conditions:
; AX holds the 16 bit value
; SI points to the last no-good hex character
; STATUS = 0, end of line encountered, 1=bad character encountered
;
SUBPGM _HSTOI
;
BEGIN _HSTOI
SUB AX,AX
SUB BX,BX
MOV [STATUS],00 ; DEFAULT TO GOOD RESULT
;
@HSTI_05:
MOV BL,[SI] ; FETCH THE CHARACTER
INC SI
OR BL,BL ; END OF LINE?
JZ @HSTI_20 ; YES, EXIT
CMP BL,'0' ; LESS THAN 0?
JL @HSTI_15 ; YES, EXIT
CMP BL,'9' ; GT 9?
JG @HSTI_10 ; YES
SUB BL,'0' ; REMOVE THE ASCII PORTION
MOV CL,4 ; ADVANCE THE HEX POSITIONAL VALUE
SHL AX,CL
ADD AX,BX ; ADD TO ACCUMULATOR
JMP SHORT @HSTI_05 ; CONTINUE ON...
;
@HSTI_10:
AND BL,05FH ; CONVERT TO UPPERCASE
SUB BL,'A' ; LESS THAN 'A'?
JL @HSTI_15 ; YES, EXIT
CMP BL,05 ; GT 5
JG @HSTI_15 ; YES, EXIT
ADD BL,10 ; ADJUST TO CREATE 10-15
MOV CL,4 ; ADVANCE THE HEX POSITIONAL VALUE
SHL AX,CL
ADD AX,BX ; ACCUMULATE THE VALUE
JMP SHORT @HSTI_05 ; CONTINUE ON...
;
@HSTI_15:
MOV [STATUS],01 ; BAD VALUE - REPORT IT
;
@HSTI_20:
RET
ENDPGM _HSTOI
;