home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / dpl.zip / _HSTOI.D < prev    next >
Text File  |  1988-07-11  |  1KB  |  55 lines

  1. ; Doug's Programming Language  -- DPL, Version 2.22
  2. ; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
  3. ;--------------------------------
  4. ; _ H S T O I  -  HEX STRING TO INTEGER CONVERSION
  5. ;
  6. ; Entry conditions:
  7. ;    SI holds the string offset
  8. ; Exit conditions:
  9. ;    AX holds the 16 bit value
  10. ;    SI points to the last no-good hex character
  11. ;    STATUS = 0, end of line encountered, 1=bad character encountered
  12. SUBPGM    _HSTOI
  13. ;
  14. BEGIN    _HSTOI
  15.     SUB    AX,AX
  16.     SUB    BX,BX
  17.     MOV    [STATUS],00        ; DEFAULT TO GOOD RESULT
  18. ;
  19. @HSTI_05:
  20.     MOV    BL,[SI]            ; FETCH THE CHARACTER
  21.     INC    SI
  22.     OR    BL,BL            ; END OF LINE?
  23.     JZ    @HSTI_20        ; YES, EXIT
  24.     CMP    BL,'0'            ; LESS THAN 0?
  25.     JL    @HSTI_15        ; YES, EXIT
  26.     CMP    BL,'9'            ; GT 9?
  27.     JG    @HSTI_10        ; YES
  28.     SUB    BL,'0'            ; REMOVE THE ASCII PORTION
  29.     MOV    CL,4            ; ADVANCE THE HEX POSITIONAL VALUE
  30.     SHL    AX,CL
  31.     ADD    AX,BX            ; ADD TO ACCUMULATOR
  32.     JMP    SHORT @HSTI_05        ; CONTINUE ON...
  33. ;
  34. @HSTI_10:
  35.     AND    BL,05FH            ; CONVERT TO UPPERCASE
  36.     SUB    BL,'A'            ; LESS THAN 'A'?
  37.     JL    @HSTI_15        ; YES, EXIT
  38.     CMP    BL,05            ; GT 5
  39.     JG    @HSTI_15        ; YES, EXIT
  40.     ADD    BL,10            ; ADJUST TO CREATE 10-15
  41.     MOV    CL,4            ; ADVANCE THE HEX POSITIONAL VALUE
  42.     SHL    AX,CL
  43.     ADD    AX,BX            ; ACCUMULATE THE VALUE
  44.     JMP    SHORT @HSTI_05        ; CONTINUE ON...
  45. ;
  46. @HSTI_15:
  47.     MOV    [STATUS],01        ; BAD VALUE - REPORT IT
  48. ;
  49. @HSTI_20:
  50.     RET
  51.  
  52. ENDPGM _HSTOI
  53. ;
  54.