问题–在8085微处理器中编写一个汇编级程序,以将从地址2001开始的4字节块与从地址3001开始的数据交换。
算法 –
- 计数等于4
- 将两个块的起始地址存储在2个不同的寄存器对中
- 现在在两个寄存器对中的地址处交换内容
- 递增两个寄存器对的值
- 递减1
- 如果计数不等于0,请重复步骤3至5
MEMORY ADDRESS | MNEMONICS | COMMENTS |
---|---|---|
2500 | LXI D 2001 | D <= 20, E <= 01 |
2503 | LXI H 3001 | H <= 20, L <= 01 |
2506 | MVI C 04 | C <= 04 |
2508 | MOV B, M | B <= M[ H-L ] |
2509 | LDAX D | A <= M[ D-E ] |
250A | MOV M, A | M[ H-L ] <= A |
250B | MOV A, B | A <= B |
250C | STAX D | M[ D-E ] <= A |
250D | INX H | [ H-L ] <= [ H-L ] + 1 |
250E | INX D | [ D-E ] <= [ D-E ] + 1 |
250F | DCR C | C <= C – 1 |
2510 | JNZ 2508 | JUMP TO 2508 IF C NOT EQUAL TO 0 |
2513 | HLT | STOP THE PROGRAM |
解释 –
- LXI D 2001 –加载寄存器对,在这种情况下,D = 20和E = 01
LXI H 3001 – H = 30和L = 01 - MVI C 04 –分配即时数据,例如-这里C = 04
MVI A 45 –为A(累加器)分配45,A = 45 - MOV B,M –这里的M是H – L寄存器对中的数据,它用作地址。将内容存储在M中的地址复制到寄存器B
- LDAX D –在这里,累加器加载了存储在寄存器对D – E形成的地址中的数据
- MOV M,A –这里A的内容被复制到存储在M中的地址。
MOV A,B –将寄存器B的内容复制到A - STAX D –将A(累加器)的内容存储在寄存器对D – E形成的地址中。
- INX H –递增寄存器对H – L的内容
- INX H –递增寄存器对D – E的内容
- DCR C –减少寄存器C的内容
- JNZ 2508 –如果寄存器C的值不等于0,则跳转到地址2508
- HLT –停止执行程序