8086 program to multiply two 16-bit numbers
Problem – Write a program to multiply two 16-bit numbers where starting address is 2000 and the numbers are at 3000 and 3002 memory address and store result into 3004 and 3006 memory address.
Example –
Algorithm –
- First load the data into AX(accumulator) from memory 3000
- Load the data into BX register from memory 3002
- Multiply BX with Accumulator AX
- Move data from AX(accumulator) to memory
- Move data from DX to AX
- Move data from AX(accumulator) to memory
- Stop
Program –
Memory | Mnemonics | Operands | Comment |
---|---|---|---|
2000 | MOV | AX, [3000] | [AX] <- [3000] |
2004 | MOV | BX, [3002] | [BX] <- [3002] |
2008 | MUL | BX | [AX] <- [AX] * [BX] |
200A | MOV | [3004], AX | [3004] <- AX |
200E | MOV | AX, DX | [AX] <- [DX] |
2010 | MOV | [3006], AX | [3006] <- AX |
2014 | HLT | Stop |
Explanation –
- MOV is used to load and store data.
- MUL is used to multiply two 16-bit numbers.
- HLT is used to stop the program.
- AX is an accumulator which is used to store the result.
- BX, DX are general purpose registers where BX is used for multiplication and DX is used for result.
Please Login to comment...