Problem – Multiply two 8 bit numbers stored at address 2050 and 2051. Result is stored at address 3050 and 3051. Starting address of program is taken as 2000.
- We are taking adding the number 43 seven(7) times in this example.
- As the multiplication of two 8 bit numbers can be maximum of 16 bits so we need register pair to store the result.
|2000||LHLD 2050||H←2051, L←2050|
|2004||MOV C, D||C←D|
|2005||MVI D 00||D←00|
|2007||LXI H 0000||H←00, L←00|
|200C||JNZ 200A||If Zero Flag=0, goto 200A|
|200F||SHLD 3050||H→3051, L→3050|
Explanation – Registers used: A, H, L, C, D, E
- LHLD 2050 loads content of 2051 in H and content of 2050 in L
- XCHG exchanges contents of H with D and contents of L with E
- MOV C, D copies content of D in C
- MVI D 00 assigns 00 to D
- LXI H 0000 assigns 00 to H and 00 to L
- DAD D adds HL and DE and assigns the result to HL
- DCR C decreaments C by 1
- JNZ 200A jumps program counter to 200A if zero flag = 0
- SHLD stores value of H at memory location 3051 and L at 3050
- HLT stops executing the program and halts any further execution
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.