问题–编写一个汇编语言程序,以在8086微处理器中随身携带两个16位BCD号。
例子 –
算法 –
- 将两个16位BCD编号的下部装入不同的位置。
- 首先添加每个数字的下部。
- 通过添加进位(如果有)来重复上述步骤。
- 使寄存器00的下部加进位。这样做是为了获得进位。
- 将所有具有最高部分的木料显示为进位,将中间部分显示为高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 |
解释 –
- MOV AL,[500]将存储在存储位置500中的值移动到AL寄存器。
- MOV BL,[502]将存储在存储位置500的值移动到BL寄存器。
- 添加AL,BL将值添加到AL和BL寄存器中。
- DAA将大于9的数字加6。
- MOV [600],AL将添加的值显示到存储位置600。
- MOV AL,[501]将存储在存储位置501的值移动到AL寄存器。
- MOV BL,[503]将存储在存储位置503中的值移动到BL寄存器。
- ADC AL,BL将AL和BL寄存器中的值相加并进位(如果有)。
- MOV BL,[503]将存储在存储位置503中的值移动到BL寄存器。
- MOV [601],AL将添加的值显示到存储位置601。
- MOV AL,00将AL寄存器中的00移动。
- ADC AL,AL将AL和AL寄存器中的值相加并进位(如果有)。
- MOV [602],AL将相加后的值显示到存储位置602。
- HLT停止执行。
下一篇相关文章– 8086程序添加两个8位BCD编号