ASCII codes 30 to 39 represent 0 to 9 in binary and 41 to 46 represent A to F. Therefore if the ASCII code is between 30-39h then 30h is subtracted from the code. If the number lies between A to F then 37h is subtracted from the code to get its binary equivalent.
; ascii to hex conversion
; input: 4000H
; output: 4001H
ORG 0H
ASCII_ADDR EQU 4000H
HEX_ADDR EQU 4001H
MAIN:
MOV DPTR,#ASCII_ADDR ; fill memory
MOV A,#0AH
MOVX @DPTR,A
LCALL CONV
SJMP MAIN
CONV:
MOV DPTR,#ASCII_ADDR
MOVX A,@DPTR
MOV R0,A
SUBB A,#0AH
JNC loop1
MOV A,R0
ADD A,#30H
SJMP loop
loop1: MOV A,R0
ADD A,#37H
loop: MOV DPTR,#HEX_ADDR
MOVX @DPTR,A
RET
END
Related topics:
8051 Program - decimal to hex | 8051 Program - hex to decimal 8bit | 8051 Program - decimal to ascii | 8051 Program - ascii to decimal | 8051 Program - hex to ascii | 8051 Program - bcd to ascii | 8051 Program - ascii to bcd | 8051 Program - bcd to hex 8bit | 8051 Program - hex to bcd 8bit | 8051 Program - hex to bcd 12bit | 8051 Program - memory subroutines | 8051 Program - math subroutines | 8051 Program - conversion subroutines
List of topics: 8051
No comments:
Post a Comment