📜  8085程序交换内存中的一个字节块

📅  最后修改于: 2021-06-28 16:00:18             🧑  作者: Mango

问题–在8085微处理器中编写一个汇编级程序,以将从地址2001开始的4字节块与从地址3001开始的数据交换。

算法 –

  1. 计数等于4
  2. 将两个块的起始地址存储在2个不同的寄存器对中
  3. 现在在两个寄存器对中的地址处交换内容
  4. 递增两个寄存器对的值
  5. 递减1
  6. 如果计数不等于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

解释 –

  1. LXI D 2001 –加载寄存器对,在这种情况下,D = 20和E = 01
    LXI H 3001 – H = 30和L = 01
  2. MVI C 04 –分配即时数据,例如-这里C = 04
    MVI A 45 –为A(累加器)分配45,A = 45
  3. MOV B,M –这里的M是H – L寄存器对中的数据,它用作地址。将内容存储在M中的地址复制到寄存器B
  4. LDAX D –在这里,累加器加载了存储在寄存器对D – E形成的地址中的数据
  5. MOV M,A –这里A的内容被复制到存储在M中的地址。
    MOV A,B –将寄存器B的内容复制到A
  6. STAX D –将A(累加器)的内容存储在寄存器对D – E形成的地址中。
  7. INX H –递增寄存器对H – L的内容
  8. INX H –递增寄存器对D – E的内容
  9. DCR C –减少寄存器C的内容
  10. JNZ 2508 –如果寄存器C的值不等于0,则跳转到地址2508
  11. HLT –停止执行程序