汇编 非压缩的BCD码相加

本文详细介绍了压缩和非压缩(8421)BCD码的概念,以及计算机在处理BCD码加法时的修正方法。特别阐述了aaa指令的作用及执行过程,通过实例演示了如何对非压缩BCD码进行修正。

压缩的(8421)BCD码 用四位二进制数表示一位十进制数

非压缩的(8421)BCD码 用八位二进制数(即一个字节,该字节的高4位全为0)表示一位十进制数

计算机在进行加法时,并不关心运算数是不是BCD码,它只按二进制运算规则进行处理。所以如果对两个BCD码做加法,想要得到以BCD码表示的结果,就需要对add指令产生的结果进行修正。

对非压缩的BCD码修正的方法就是执行 aaa 指令。

aaa 指令可以解释为(图来自stack overflow):

即:若AL的低四位大于9,或标志位AF=1,则,AH=AH+1,AL=AL+6,并置AF和CF为1。最后将AL的高四位置为0。

AF标志位为辅助进位标志。当执行add 指令时, 如果两个操作数的低四位相加后产生进位,则置AF=1,否则置AF=0。

 

举例:

(令:AL=BCD 5,BL=BCD 8, AH=0)

ADD AL,BL

AAA

得到的结果就是:AH = 01H, AL=03H,同时CF标志位=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值