📌  相关文章
📜  8085程序对小于0A的元素数量进行计数

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

问题–在8085微处理器中编写汇编语言程序,以对10个数字序列中小于0A的元素数进行计数。

例子 –

假设–从起始存储位置2050存储10个数字序列。计数值存储在存储位置3050

算法 –

  1. 用20初始化寄存器H,用4F初始化寄存器L,以便间接存储器指向存储器单元204F。
  2. 用00初始化寄存器C,用0A初始化寄存器D。
  3. 将间接内存增加01。
  4. 将M的内容移动到累加器A中。
  5. 在CPI指令的帮助下,将A的内容与0A进行比较。该指令将更新8085的标志。
  6. 检查是否设置了进位标志,如果为true,则将C的内容加01。
  7. D的内容减01。
  8. 检查是否重置了零标志,如果为true,则跳至步骤3。
  9. 将C的内容移到A。
  10. 将A的内容存储到内存位置3050。

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
2000 LXI H 204F H <- 20, L <- 4F
2003 MVI C, 00 C <- 00
2005 MVI D, 0A D <- 0A
2007 INX H M <- M + 01
2008 MOV A, M A <- M
2009 CPI 0A A – 0A
200B JNC 200F Jump if CY = 0
200E INR C C <- C + 01
200F DCR D D <- D – 01
2010 JNZ 2007 Jump if ZF = 0
2013 MOV A, C A <- C
2014 STA 3050 M[3050] <- A
2017 HLT END

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

  1. LXI H 204F:将20分配给寄存器H,将4F分配给寄存器L
  2. MVI C,00:将00分配给寄存器C
  3. MVI D,0A:将0A分配给寄存器D
  4. INX H:将间接存储位置增加01
  5. MOV A,M:将间接存储器位置M的内容移动到累加器A
  6. CPI 0A:从A的内容中减去0A并更新8085的标志
  7. JNC 200F:如果CY = 0则跳转到存储位置200F
  8. INR C:将C的内容增加01
  9. DCR D:将D的内容减01
  10. JNZ 2007:如果ZF = 0则跳转到内存位置2007
  11. MOV A,C:将C的内容移至A
  12. STA 3050:将A的内容存储在内存位置3050中
  13. HLT:停止执行程序并停止任何进一步的执行