📜  8086程序添加两个带有进位的16位BCD编号

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

问题–编写一个汇编语言程序,以在8086微处理器中随身携带两个16位BCD号。

例子 –

算法 –

  1. 将两个16位BCD编号的下部装入不同的位置。
  2. 首先添加每个数字的下部。
  3. 通过添加进位(如果有)来重复上述步骤。
  4. 使寄存器00的下部加进位。这样做是为了获得进位。
  5. 将所有具有最高部分的木料显示为进位,将中间部分显示为高BCD 8位的加法部分,将下部显示为较低BCD 8位。

程序 –

Memory Address Mnemonics Comments
0400 MOV AL, [500] AL ← [500]
0404 MOV BL, [502] BL ← [502]
0408 ADD AL, BL AL ← AL+BL
040A DAA Decimal Adjust AL
040B MOV [600], AL AL → [600]
040F MOV AL, [501[ AL ← [501]
0413 MOV BL, 503 BL ← [503]
0417 ADC AL, BL AL ← AL+BL+CY
0419 DAA Decimal Adjust AL
041A MOV [601], AL AL → [601]
041E MOV AL, 00 AL ← 00H
0420 ADC AL, AL AL ← AL+AL+CY
0422 MOV [602], AL AL → [602]
0426 HLT Stop Execution

解释 –

  1. MOV AL,[500]将存储在存储位置500中的值移动到AL寄存器。
  2. MOV BL,[502]将存储在存储位置500的值移动到BL寄存器。
  3. 添加AL,BL将值添加到AL和BL寄存器中。
  4. DAA将大于9的数字加6。
  5. MOV [600],AL将添加的值显示到存储位置600。
  6. MOV AL,[501]将存储在存储位置501的值移动到AL寄存器。
  7. MOV BL,[503]将存储在存储位置503中的值移动到BL寄存器。
  8. ADC AL,BL将AL和BL寄存器中的值相加并进位(如果有)。
  9. MOV BL,[503]将存储在存储位置503中的值移动到BL寄存器。
  10. MOV [601],AL将添加的值显示到存储位置601。
  11. MOV AL,00将AL寄存器中的00移动。
  12. ADC AL,AL将AL和AL寄存器中的值相加并进位(如果有)。
  13. MOV [602],AL将相加后的值显示到存储位置602。
  14. HLT停止执行。

下一篇相关文章– 8086程序添加两个8位BCD编号