umutguncan
Junior Member level 1
ascii in to binary
how can I do this with assemble? (ı use 8051 )
how can I do this with assemble? (ı use 8051 )
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
;*******************************************************************************
; 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
;*******************************************************************************
; ===============================================================
; ASC_HEX - See if character in ACC is number and if so convert to a hex nibble...
A_H:
CJNE A, #'0', A_H1
A_H1: JC AH_Bad ; Is character less than a '0'?
CJNE A, #'9'+1, A_H2 ; Test value range
A_H2: JC AH_Val_09 ; Is character between '0' and '9'?
LJMP AH_Bad
AH_Val_09: CLR C
SUBB A, #'0'
CLR HexFlag
AH_Exit: RET
AH_Bad: SETB HexFlag
LJMP AH_Exit
; ===============================================================