汇编写的BCD码加法,不用调整指令自己调整那种,求十进制27和34的和,大神求指教,小弟在此谢过了真心着急

2025-12-24 11:17:49
推荐回答(1个)
回答1:

你现在这个程序处理27+34,结果没错,确实是61.

但是,你这样处理,算法上有问题。
如果换一个数据,比如27+39,结果就不对了。

原因是,压缩的BCD码相加后,有两种情况需要调整。
你只处理了4位之和超过9的调整,没有处理辅助进位标志AF为1时的调整。
比如,当执行7+9的时候,和是0,没超过9,但AF有进位,也需要调整。

检查处理AF比较麻烦,没有专门的条件转移指令直接可用,取PSW的 b4位必须通过堆栈操作,然后用逻辑指令处理。

自己编这种程序纯是练习,我就不帮你写代码了,你自己继续完善吧,呵呵