你现在这个程序处理27+34,结果没错,确实是61.
但是,你这样处理,算法上有问题。
如果换一个数据,比如27+39,结果就不对了。
原因是,压缩的BCD码相加后,有两种情况需要调整。
你只处理了4位之和超过9的调整,没有处理辅助进位标志AF为1时的调整。
比如,当执行7+9的时候,和是0,没超过9,但AF有进位,也需要调整。
检查处理AF比较麻烦,没有专门的条件转移指令直接可用,取PSW的 b4位必须通过堆栈操作,然后用逻辑指令处理。
自己编这种程序纯是练习,我就不帮你写代码了,你自己继续完善吧,呵呵