📜  8085程序对寄存器B的内容中的个数进行计数

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

问题–编写汇编语言程序以计算寄存器B的内容中的个数并将结果存储在内存位置3050中。

例子 –

算法 –

  • 将累加器中的十进制数转换为其等效的二进制数
  • 向右旋转二进制数字的位数,不带进位
  • 施加循环直到计数不为零以更改D寄存器和计数的值
  • 将D寄存器的值复制到累加器并存储结果

程序 –

MEMORY ADDRESS MNEMONICS COMMENTS
2000 MVI B 75 B ← 75
2002 MVI C 08 C ← 75
2004 MVI D 00 D ← 00
2006 MOV A, B A ← B
2007 RRC Rotate right without carry
2008 JNC 200C Jump if Not Carry
200B INR D D ← D+1
200C DCR C C ← C-1
200D JNZ 2007 Jump if Not Zero
2010 MOV A, D A ← D
2011 STA 3050 A → 3050
2014 HLT Stops execution

解释 –

  1. MVI B 75将75十进制数移入B寄存器
  2. MVI C 08将十进制数字08移到C寄存器中,因为该数字为8位,因此被用作计数器
  3. MVI D 00将00号移入d寄存器
  4. MOV A,B将B寄存器的内容移到A(累加器)寄存器中
  5. RRC右移A的内容(它是75,二进制等效值为01110101)
  6. 如果进位标志不为零,JNC 200C跳转到200C地址并执行在此写的指令
  7. INR D通过将其内容加1来增加D寄存器的值
  8. DCR C通过从其内容中减去1来减少C寄存器的值
  9. 如果零标志不为零,JNZ 2007会跳转到2007地址并执行在此处写的指令
  10. MOV A,D将B寄存器的内容移至A寄存器
  11. STA 3050将A的内容存储在3050存储位置
  12. HLT停止执行