📜  8085程序对10个数字序列中的总奇数进行计数

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

程序–在8085微处理器中编写汇编语言程序,以对10个数字序列中的奇数进行计数。

例子 –

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

算法 –

  1. 用20初始化寄存器H,用4F初始化寄存器L,以便间接存储器指向存储器单元204F。
  2. 用00初始化寄存器C,用0A初始化寄存器D。
  3. 间接内存增加1。
  4. 将M的值存储在累加器A中。
  5. 通过对01进行A的AND运算,检查A中的内容是奇数还是偶数。
  6. 如果在AND操作之后A的内容为01,则扫描的数字为奇数;如果是,则将C加01;否则,如果在AND操作之后A的内容为00,则扫描的数字为偶数。将D减01。
  7. 检查是否未设置零标志,即ZF = 0,然后跳至步骤3,否则将C的值存储在内存位置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 ANI 01 A <- A (AND) 01
200B JZ 200F Jump if ZF = 1
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,B,C,D,H,L用于通用。

  1. LXI H 204F:将20分配给H,将4F分配给L.
  2. MVI C,00:将00分配给C。
  3. MVI D,0A:为D分配0A。
  4. INX H:将间接存储器位置M递增01。
  5. MOV A,M:将M的内容移动到A。
  6. ANI 01:对01执行A的AND运算,并将结果存储在A中。
  7. JZ 200F:如果ZF = 1则跳转到存储位置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:停止执行程序,并停止任何进一步的执行。