汇编语言AAS指令中得数如果为负数,那么得到的BCD码为何不符合数学运算

汇编语言AAS指令中得数如果为负数,那么得到的BCD码为何不符合数学运算
MOV AX,04
SUB AL,08
AAS
最后得到的AX=FF06H,AF=1,CF=1.
我想知道4-8=-4的,但是按照公式得到的BCD码却是-6,这是为什么?
icemanyk 1年前 已收到1个回答 举报

SayIt 幼苗

共回答了17个问题采纳率:76.5% 举报

AAS是非压缩的BCD码(ASCII码)减法调整指令.
将它与减法指令组合,效果是得到按十进制运算规则进行运算的结果.
你的问题中,4-8,不够减.因此,先要向前借一位(AH=-1),然后加上借位10做10+4-8运算,结果得6(AL=06).
这正是十进制减法的正常运算规则.

1年前

1
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.021 s. - webmaster@yulucn.com