📜  8085程序检查8位数字的两个半字节是否相等

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

问题–在8085微处理器中编写汇编语言程序,以检查8位数字的两个半字节是否相等。如果半字节相等,则将00存储在存储位置3050中,否则将FF存储在存储位置3050中。

例子 –

假设–用于检查类似半字节的数字存储在内存位置2050中。

算法 –

  1. 将内存位置2050的内容加载到A中。
  2. 在B中移动A的内容。
  3. 掩盖下半字节并将其存储在寄存器C中。
  4. 将B的内容移到A中。
  5. 掩盖高阶半字节并将其存储在A中。
  6. 通过使用RLC指令4次反转A的内容。
  7. 借助CMP指令比较A和C的内容。更新8085的标志。
  8. 现在,如果ZF = 0,则存储FF;否则,如果ZF = 1,则存储00。
  9. 将最终结果存储在内存位置3050中。

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
2000 LDA 2050 A <- M[2050]
2003 MOV B, A B <- A
2004 ANI 0F A <- A (AND) 0F
2006 MOV C, A C <- A
2007 MOV A, B A <- B
2008 ANI F0 A <- A (AND) 0F
200A RLC Rotate content of A left by one bit without carry
200B RLC Rotate content of A left by one bit without carry
200C RLC Rotate content of A left by one bit without carry
200D RLC Rotate content of A left by one bit without carry
200E CMP C A – C
200F JZ 2018 Jump if ZF = 1
2013 MVI A, FF A <- FF
2015 JMP 201A Jump to memory location 201A
2018 MVI A, 00 A <- 00
201A STA 3050 M[3050] <- A
201D HLT END

说明–寄存器A,B,C用于一般用途。

  1. LDA 2050:将存储位置2050的内容加载到累加器A中。
  2. MOV B,A:将A的内容移到寄存器B中。
  3. ANI 0F:对A和0F的内容执行AND运算。将结果存储在A中。
  4. MOV C,A:将A的内容移动到寄存器C中。
  5. MOV A,B:在A中移动B的内容。
  6. ANI F0:对A和F0的内容执行AND运算。将结果存储在A中。
  7. RLC:将A的内容左移一位而无需进位。使用说明四次以反转数字。
  8. CMP C:比较A和C的内容。相应地更新8085的标志。
  9. JZ 2018:如果设置了零标志,则跳转到内存位置2018。
  10. MVI A,FF:将FF分配给A。
  11. JMP 201A:跳转到内存位置201A。
  12. MVI A,00:将00分配给A。
  13. STA 3050:将A的内容存储在存储器位置3050中。
  14. HLT:停止执行程序,并停止任何进一步的执行。