问题–写一个程序,使用直接寻址模式交换两个8位数字,起始地址为2000 ,第一个8位数字存储在3000 ,第二个8位数字存储在3001存储器地址。
例子 –
算法 –
- 将存储器3000中的8位数字加载到累加器中
- 将累加器的值移到寄存器H中
- 将存储器3001中的8位数字加载到累加器中
- 将累加器的值移到寄存器D中
- 交换两个寄存器对
- 停止
程序 –
Memory | Mnemonics | Operands | Comment |
---|---|---|---|
2000 | LDA | [3000] | [A] <- [3000] |
2003 | MOV | H, A | [H] <- [A] |
2004 | LDA | [3001] | [A] <- [3001] |
2007 | MOV | D, A | [D] <- [A] |
2008 | XCHG | [H-L] [D-E] | |
2009 | HLT | Stop |
说明–寄存器A,H,D用于一般用途。
- LDA用于通过16位地址(3字节指令)直接加载累加器
- MOV用于传输数据(1字节指令)
- XCHG用于交换两个寄存器对(HL),(DE)的数据(1字节指令)
- HLT用于暂停程序。