📜  8085程序添加三个存储在寄存器中的16位数字

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

问题–编写一个汇编语言程序,将存储在寄存器HL,DE,BC中的三个16位数字相加,然后用最少的指令数将结果存储在DE中。

例子 –

假设–

  1. 要添加的数字已存储在寄存器HL,DE,BC中
  2. 寄存器中存储的数字应使最终结果不大于FFFF

DAD D执行以下任务:

H <- H + D 
  L <- L + E 

DAD指令采用一个自变量,并且该自变量可以是寄存器B,D,H或SP XCHG指令将寄存器D的内容与H和E交换为L

算法 –

  1. 通过DAD指令在HL中添加DE寄存器的内容并将结果存储在HL中
  2. 将寄存器B的内容移至D并将C移至E
  3. 重复步骤1
  4. 使用XCHG指令将DE的内容与HL交换。我们将在DE中得到结果

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
2000 DAD D H <- H + D, L <- L + E
2001 MOV D, B D <- B
2002 MOV E, C E <- C
2003 DAD D H <- H + D, L <- L + E
2004 XCHG Swap content of HL with DE
2005 HLT END

解释 –

  1. DAD D –将寄存器D的内容添加到H中,将寄存器E的内容添加到L中,并将结果存储在HL中
  2. MOV D,B –将寄存器B的值移动到寄存器D中
  3. MOV E,C将寄存器C的值移到寄存器E中
  4. 与步骤1相同
  5. XCHG –将寄存器H的内容与寄存器D交换,将L的内容与E交换。
  6. HLT –停止执行程序,并停止任何进一步的执行