Www.people.vcu.edu



;****************************************************************

;FUNCTION: HEX2ASC_TBL - CONVERT LEAST SIG NIBBLE OF A TO ASCII

; USING LOOK UP TABLE

; INPUTS: A(3_0) - HEX DIGIT

; OUTPUTS: A - ASCII CHAR CORESPONDING TO HEX DIGIT IN A(3_0)

; CALLS: NONE

;DESTROYS: A, DPTR

;****************************************************************

;ASCII LOOK UP TABLE

ASC_TBL:

DB '0'

DB '1'

DB '2'

DB '3'

DB '4'

DB '5'

DB '6'

DB '7'

DB '8'

DB '9'

DB 'A'

DB 'B'

DB 'C'

DB 'D'

DB 'E'

DB 'F'

HEX2ASC_TBL:

MOV DPTR,#ASC_TBL ;POINT TO LOOK UP TABLE

ANL A,#0FH ;USE ONLY LEAST SIG NIBBLE TO LOOK UP

MOVC A,@A+DPTR ;ASCII VALUE

RET

$EJECT

;****************************************************************

;FUNCTION: HEX2ASC - CONVERT LEAST SIG NIBBLE OF AL TO ASCII

; INPUTS: A(3_0) - HEX DIGIT

; OUTPUTS: A - ASCII CHAR CORESPONDING TO HEX DIGIT IN AL(3_0)

; CALLS: NONE

;DESTROYS: A, PSW

;****************************************************************

HEX2ASC:

ANL A,#0FH ;GET LEAST SIG NIBBLE

CLR C ;CLEAR CARRY

SUBB A,#0AH ;SET CARRY IF ACC IS LESS THAN 0AH

JC LTA ;JUMP IF ACC 9 i.e. A --> 00 AND SET CY

ADDC A,#40H ;IF >9 CARRY WAS SET ie. A --> 41H ELSE

DA A ;LSN IS INCREASED BY 30H

RET

$EJECT

;****************************************************************

;FUNCTION: ASC2HEX - CONVERT ASCII CHAR IN AL TO ASCII.

; AL IS ASSUMED TO CONTAIN THE ASCII FOR A VALID HEX DIGIT

; THE TRANSLATION IS AS SHOWN BELOW

; INPUT AL OUTPUT AL

; '0'=30H 00000000B

; '1'=31H 00000001B

; ... ...

; 'A'=41H 00001010B

; ... ...

; 'F'=46H 00001111B

;

; INPUTS: AL - THE ASCII CHAR '0'..'9', 'A'..'F'

; OUTPUTS: AL - HEX NIBBLE 00 ..09 , 0A ..0F

; CALLS: NONE

;DESTROYS: AL, PSW

;****************************************************************

ASC2HEX:

CLR C ;CLEAR CARRY

SUBB A,#'A' ;SET CARRY IF A < 'A'

JNC HEXFIX ;JUMP IF A WAS 'A' - 'F'

ADD A,#'A'-'0'-0AH ;DO THIS IF A WAS '0' - '9'

HEXFIX: ADD A,#0AH ;A NOW CONTAINS HEX VALUE

RET

$EJECT

;****************************************************************

;FUNCTION: UPPER - CONVERT ASCII CHAR IN A TO UPPER CASE

; INPUTS: A - ASCII CHAR

; OUTPUTS: A - UPPER CASE ASCII CHAR

; CALLS: NONE

;DESTROYS: A, PSW

;****************************************************************

UPPER:

CJNE A,#'a',LOWIFC ;SET CY IF CHAR < 'a'

CHKHI: CJNE A,#'z'+1,UCONV ;SET CY IF CHAR = 9

NCIFLTE9:

JC FIXIT ;RETURN IF CHAR '0' TO '9'

CJNE A,#'A',HEX3 ;SET CY IF CHAR < 'A'

HEX3: JC HEXIT ;EXIT IF NOT HEX

CJNE A,#'F'+1,FIXIT ;SET CY IF CHAR ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download