📜  8085程序添加2-BCD编号

📅  最后修改于: 2021-06-28 15:12:42             🧑  作者: Mango

问题–编写一个程序以添加2-BCD编号,其起始地址为2000 ,并且编号存储在25002501存储器地址中,并将和存储到2502中并携带到2503存储器地址中。

例子 –

算法 –

  1. 将00H加载到寄存器中(用于进位)
  2. 将内存中的内容加载到寄存器对中
  3. 将内容从L寄存器移到累加器
  4. 用累加器添加H寄存器的内容
  5. 如果总和大于9或辅助进位不为零,则添加06H
  6. 如果进位标志不等于1,请转到步骤8
  7. 进位寄存器递增1
  8. 将累加器的内容存储到内存中
  9. 将内容从进位寄存器移到累加器
  10. 将累加器的内容存储到内存中
  11. 停止

程序 –

Memory Mnemonics Operands Comment
2000 MVI C, 00H [C] <- 00H, carry
2002 LHLD [2500] [H-L] <- [2500]
2005 MOV A, L [A] <- [L]
2006 ADD H [A] <- [A] + [H]
2007 DAA Add 06 if sum > 9 or AC = 1
2008 JNC 200C Jump if no carry
200B INR C [C] <- [C] + 1
200C STA [2502] [A] -> [2502], sum
200F MOV A, C [A] <- [C]
2010 STA [2503] [A] -> [2503], carry
2013 HLT Stop

说明–寄存器A,C,H,L用于通用

  1. MVI用于将数据立即移入任何寄存器(2字节)
  2. LHLD用于通过16位地址(3字节指令)直接加载寄存器对
  3. MOV用于将数据从内存传输到累加器(1字节)
  4. ADD用于将累加器与任何寄存器(1字节指令)相加
  5. STA用于将来自累加器的数据存储到存储器地址(3字节指令)
  6. DAA用于检查总和> 9或AC = 1是否加06(1字节指令)
  7. 如果没有进位到给定的存储器位置,则使用JNC跳转(3字节指令)
  8. INR用于将给定寄存器增加1(1字节指令)
  9. HLT用于暂停程序