Problem Statement:
Convert a 2-digit BCD number stored at memory address 2200H into its binary equivalent number and store the result in a memory location 2300H.
Sample problem 1:
(2200H) = 67H
(2300H) = 6 x OAH + 7 = 3CH + 7 = 43H
Source program :
* LDA 2200H : Get the BCD number
* MOV B, A : Save it
* ANI OFH : Mask most significant four bits
* MOV C, A : Save unpacked BCDI in C register
* MOV A, B : Get BCD again
* ANI FOH : Mask least significant four bits
* RRC : Convert most significant four bits into unpacked BCD2
* RRC
* RRC
* RRC
* MOV B, A : Save unpacked BCD2 in B register
* XRA A : Clear accumulator (sum = 0)
* MVI D, 0AH : Set D as a multiplier of 10
* Sum: ADD D : Add 10 until (B) = 0
* DCR B : Decrement BCD2 by one
* JNZ SUM : Is multiplication complete? i if not, go back and add again
* ADD C : Add BCD1
* STA 2300H : Store the result
* HLT : Terminate program execution
Convert a 2-digit BCD number stored at memory address 2200H into its binary equivalent number and store the result in a memory location 2300H.
Sample problem 1:
(2200H) = 67H
(2300H) = 6 x OAH + 7 = 3CH + 7 = 43H
Source program :
* LDA 2200H : Get the BCD number
* MOV B, A : Save it
* ANI OFH : Mask most significant four bits
* MOV C, A : Save unpacked BCDI in C register
* MOV A, B : Get BCD again
* ANI FOH : Mask least significant four bits
* RRC : Convert most significant four bits into unpacked BCD2
* RRC
* RRC
* RRC
* MOV B, A : Save unpacked BCD2 in B register
* XRA A : Clear accumulator (sum = 0)
* MVI D, 0AH : Set D as a multiplier of 10
* Sum: ADD D : Add 10 until (B) = 0
* DCR B : Decrement BCD2 by one
* JNZ SUM : Is multiplication complete? i if not, go back and add again
* ADD C : Add BCD1
* STA 2300H : Store the result
* HLT : Terminate program execution
Be the first to comment on "2-Digit BCD to binary conversion"