Tuesday, May 31, 2016

8051 Program - byte to ascii

; Returns the ASCII codes from the nibbles of a byte stored in the Acc.
; After being called the high nibble is in the Acc and the low nibble
; is in the B register.
; ;usage:
; mov a, #byte
; CALL nibble
; ;returns
; ;A= high nibble
; ;B= low nibble
nibble:
mov b,a ; b=a ; stores Acc in B
anl a,#0f0h ; a=xxxx0000 ; A && #f0h (get the high nibble)
swap a ; a=0000xxxx ; swap nibbles
orl a,#30h ; a=0011xxxx ; add #30h, if nibble is
push acc ; 0-9 we have the ASCII value
push b ; stores A and B
mov b, #3ah ; stores #3ah in B
div ab ; divide A/#3ah
jz recupera1 ; if zero, nibble < #0Ah
nibble1_ok:
pop b ; recover B
pop acc ; recover A
add a, #07h ; adds #07h to get ASCII of A-F
xch a,b
jmp nibble2
recupera1:
pop b ; stores B
pop acc ; stores A
xch a,b
nibble2:
anl a,#0fh ; a=0000xxxx ; A && #0fh (get low nibble)
orl a,#30h ; a=0011xxxx ; add #30h, if nibble is
push acc ; 0-9 we have the ASCII value
push b ; stores A and B
mov b, #3ah ; stores #3ah in B
div ab ; divide A/#3ah
jz recupera2 ; if zero, nibble < #0Ah
pop b ; recover B
pop acc ; recover A
add a, #07h ; adds #07h to get ASCII of A-F
xch a,b
ret ; return to main routine
recupera2:
pop b ; recover B
pop acc ; recover A
xch a,b
ret ; return to main routine



Byte2ascii:
mov b, a
swap a
acall Nibble2ascii
xch a, b
Nibble2ascii:
anl a, #00fh
inc a
movc a, @a+pc
ret
ascii:DB "0123456789ABCDEF"



Related topics:
8051 Program - 16 bit hex to bcd   |   8051 Program - bcd byte   |   8051 Program - 16 bit binary to ascii   |   8051 Program - 5 digit decimal to binary   |   8051 Program - memory subroutines   |   8051 Program - math subroutines   |   8051 Program - conversion subroutines

List of topics: 8051

No comments:

Post a Comment