Convert
5 digit decimal number into 3 bytes binary number
;********************************************************************************************;
;* CONVERTS 5 DIGIT DECIMAL NUMBER INTO 3 BYTES BINARY NUMBER *;
;********************************************************************************************;
DEC_1 EQU 50H ; TEN THOUSANDS
OF 5 DIGIT DECIMAL NUMBER
DEC_2 EQU 51H ; THOUSANDS OF 5 DIGIT DECIMAL NUMBER
DEC_3 EQU 52H ; HUNDREDS OF 5 DIGIT DECIMAL NUMBER
DEC_4 EQU 53H ; TENS OF 5 DIGIT DECIMAL NUMBER
DEC_5 EQU 54H ; UNITS OF 5 DIGIT DECIMAL NUMBER
FACTOR EQU 60H ; AUXILLIARY
VARIABLE
;*******************************************************;
;**** MAIN CODE ****:
;*******************************************************;
;******************************************************;
;*** EXAMPLE ****;
;*******************************************************;
;** TO CONVERT 5 DIGIT DECIMAL NUMBER <12345> INTO 3 BYTES BINARY
NUMBER ***;
;*******************************************************
ITS_ZERO
INC R0 ; GET NEXT DIGIT WHEN THE LOOP EXHAUSTS
CJNE R0,#55H,PROCEED; GET OUT WHEN ALL THE 3 DIGITS HAVE BEEN
; WORKED UPON. (1st and 2nd digits are used
; before the loop)
SJMP OUT_LOOP
PROCEED
INC FACTOR ; CALCULATE AS HOW MANY TIMES THE CONSTANT
MOV A,@R0 ; 100D HAS TO BE ADDED TO LSB DEPENDING ON
CJNE A,#00,NOT_ZERO ; THE VALUE OF THE DIGIT ACQUIRED BY @R0
SJMP ITS_ZERO
NOT_ZERO
PUSH FACTOR
MULTIPLY
MOV B,#10D
CLR OV
MUL AB
JNB OV,SINGLE
PUSH ACC
MOV A,B
ADD A,R2
MOV R2,A
POP ACC
SINGLE
DJNZ FACTOR,MULTIPLY
MOV R1,A
POP FACTOR
SJMP LOOP