关于8085微处理器DAA指令进位标志机制的疑问
8085微处理器DAA指令进位标志机制探究
在8085微处理器课程中接触到DAA指令,其规则为:
- 若累加器低四位为无效BCD码或辅助进位位置位,则加06H;
- 若高四位为无效BCD码或进位标志(CY)置位,则加60H。
为探究DAA操作前后进位标志的变化,以及内部加法操作对进位标志的影响,编写了如下实验程序:
mvi c,00h mvi a,99h mvi b,99h add b daa jnc L1 inr c L1: mov a,c sta 8100h hlt
实验案例与结果
案例1:99H + 99H
执行add b后,累加器值为32H,CY置位;执行DAA时加66H,累加器变为98H,未产生新进位。原本预期CY会被重置,8100H单元内容为00H,但实际结果为01H,说明DAA保留了原进位。
案例2:55H + 99H
执行add b后无进位,执行DAA后进位标志置位,8100H单元内容为01H,符合结果为154H的逻辑,此时DAA未保留原进位(原进位为无)。
案例3:FFH + FFH
执行add b后有进位,执行DAA时也产生进位,最终进位标志仍置位,8100H单元内容为01H。
实验结果整理(真值表)
| 执行前进位 | DAA产生进位 | 是否保留原进位 |
|---|---|---|
| 无 | 无 | 是 |
| 无 | 有 | 否 |
| 有 | 无 | 是 |
| 有 | 有 | 是 |
疑问
从真值表可见,DAA仅在自身产生进位且原进位为无时不保留原进位,这种特殊的内部加法逻辑的原理是什么?
内容的提问来源于stack exchange,提问作者M.B.
相关产品推荐
相关产品推荐

