Problem – Write a program to swap two 8-bit numbers using direct addressing mode where starting address is 2000 and the first 8-bit number is stored at 3000 and the second 8-bit number is stored at 3001 memory address.
- Load a 8-bit number from memory 3000 into accumulator
- Move value of accumulator into register H
- Load a 8-bit number from memory 3001 into accumulator
- Move value of accumulator into register D
- Exchange both the register pairs
|2000||LDA||||[A] <- |
|2003||MOV||H, A||[H] <- [A]|
|2004||LDA||||[A] <- |
|2007||MOV||D, A||[D] <- [A]|
Explanation – Registers A, H, D are used for general purpose.
- LDA is used to load accumulator direct using 16-bit address (3 Byte instruction)
- MOV is used to transfer the data (1 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.