Problem – Write a program to swap two 16-bit numbers using direct addressing mode where starting address is 2000 and the first 16-bit number is stored at 3000 and the second 16-bit number is stored at 3002 memory address.
Example –
Algorithm –
- Load a 16-bit number from memory 3000 into a register pair (H-L)
- Exchange the register pairs
- Load a 16-bit number from memory 3002 into a register pair (H-L)
- Exchange both the register pairs
- Stop
Program –
Memory | Mnemonics | Operands | Comment |
---|---|---|---|
2000 | LHLD | [3000] | [H-L] <- [3000] |
2003 | XCHG | [H-L] [D-E] | |
2004 | LHLD | [3002] | [H-L] <- [3002] |
2007 | XCHG | [H-L] [D-E] | |
2008 | HLT | Stop |
Explanation – Registers (H-L) pair, (D-E) pair are used for general purpose.
- LHLD is used to load register pair H-L direct using 16-bit address (3 Byte instruction)
- XCHG is used to exchange the data of both the register pair (H-L), (D-E) (1 Byte instruction)
- HLT is used to halt the program.
leave a comment
0 Comments