📜  8085程序在数组中添加数字

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

问题–编写汇编语言程序以添加存储在连续存储器或数组中的十六进制数字。

假设–假设数组的大小存储在内存位置2050,数组的基地址为2051。总和将存储在内存位置3050,进位将存储在位置3051。

例子 –


算法 –

  1. 将数组的基地址加载到HL寄存器对中。
  2. 使用数组的大小作为计数器。
  3. 将累加器初始化为00。
  4. 将累加器的内容与存储在HL对中给定存储位置中的内容相加。
  5. 减少每次添加的计数器。

程序 –

Address Mnemonics Comments
2000 LDA 2050 A <- [2050]
2003 MOV B, A B <- A
2004 LXI H, 2051 H <- 20 and L <- 51
2007 MVI A, 00 A <- 00
2009 MVI C, 00 C <- 00
200B ADD M A <- A+M
200C INR L M <- M+1
200D JNC 2011
2010 INR C C <- C+1
2011 DCR B B <- B-1
2012 JNZ 200B
2015 STA 3050 3050 <- A
2018 MOV A, C A <- C
2019 STA 3051 3051 <- A
201C HLT Terminates the program

解释 –

  1. LDA 2050:内容为2050的负载累加器
  2. MOV B,A:将累加器的内容复制到寄存器B
  3. LXI H 2051:将20存储到H寄存器并将51存储到L寄存器
  4. MVI A 00:将00存储到累加器
  5. MVI C,00:将00存储到寄存器C
  6. ADD M:添加累加器,并在HL寄存器对中给出存储位置的内容
  7. INR L:地址增加1
  8. JNC 2011:如果不携带,则跳至位置2011,否则跳至PC中给定的位置
  9. INR C:将寄存器C的内容增加1
  10. DCR B:将寄存器B的内容减1
  11. JNZ 200B:如果不为零,则跳转到位置200B,否则跳转到PC中给定的位置
  12. STA 3050:将累加器的内容存储到内存位置3050
  13. MOV A,C:将寄存器C的内容复制到累加器
  14. STA 3051:将累加器的内容存储到内存位置3051
  15. HLT:终止程序