Statement: Multiply the 8-bit unsigned number in memory location 2200H by the 8-bit unsigned number in memory location 2201H. Store the 8 least significant bits of the result in memory location 2300H and the 8 most significant bits in memory location 2301H.
|
Sample problem:
(2200) = 1100 (0CH)
(2201) = 0101 (05H)
Multiplicand = 1100 (1210)
Multiplier = 0101 (510)
Result = 12 x 5 = (6010)
|
Source program :
- LXI H, 2200 : Initialize the memory pointer
- MOV E, M : Get multiplicand
- MVI D, 00H : Extend to 16-bits
- INX H : Increment memory pointer
- MOV A, M : Get multiplier
- LXI H, 0000 : Product = 0
- MVI B, 08H : Initialize counter with count 8
- MULT: DAD H : Product = product x 2
- RAL
- JNC SKIP : Is carry from multiplier 1 ?
- DAD D : Yes, Product =Product + Multiplicand
- SKIP: DCR B : Is counter = zero
- JNZ MULT : no, repeat
- SHLD 2300H : Store the result
- HLT : End of program
|
Flowchart for program
|
|
Related Programs for Beginners: (Click down)
Left Shifting of a 16-bit data
Unpack a BCD number
Add contents of two memory locations
Deleting string in a given array of characters