[理解语句]压缩型BCD码的问题
时间:2010-11-21
来源:互联网
MOV AL, 43H
MOV BL, 29H
ADD AL, BL ;AL=6BH,其不是压缩型的BCD码,因为低四位'B'不是BCD码
DAA ;调整后,AL=72H,这是压缩型的BCD码,也有:43+29=72
第三行AL=6BH是怎么得到的?
执行DAA指令后,又是怎么调整的?
MOV BL, 29H
ADD AL, BL ;AL=6BH,其不是压缩型的BCD码,因为低四位'B'不是BCD码
DAA ;调整后,AL=72H,这是压缩型的BCD码,也有:43+29=72
第三行AL=6BH是怎么得到的?
执行DAA指令后,又是怎么调整的?
作者: kartik 发布时间: 2010-11-21
ADD做普通加法,它不把43H和29H看成BCD码,所以得到的和是6BH。转换成十进制表示72,但计算机内只能保存二进制形式,写成对应的十六进制就是6BH.
因为你自己要把两个加数看做BCD码,所以需要做加法调整:DAA.
DAA调整分两步进行:
Step 1:调整个位数。
若个位数产生进位了(辅助进位标志AF=1),即低4位向高4位进位了,那它是逢十六才进一。当BCD码看时应该逢十进一,所以此时的进位把个位多用了一个6(比如9+9=12H,它是从和18中取出16进到十位数,所以个位只留下2)。这种情况下,要给个位补会一个6.
若个位数没进位(AF=0),但其值超过了9(是A-F),此时作为十六进制还不需要进位,但作为BCD码,已经需要了,所以调整时,把A-F中的10进到前一位,个位保留它减去10后的余数。(如你例子中BCD码的个位B【应该是C吧】,减掉10,个位余下2,十位加上1,于是就调整成了72H)
否则(AF=0且低4位不超过9),个位数(即低4位)不动。
Step 2:调整十位数。
与调整个位数的做法完全相同,只是判断CF是否为1和高4位是否超过9. 需要调整时,产生的进位放在CF中。
因为你自己要把两个加数看做BCD码,所以需要做加法调整:DAA.
DAA调整分两步进行:
Step 1:调整个位数。
若个位数产生进位了(辅助进位标志AF=1),即低4位向高4位进位了,那它是逢十六才进一。当BCD码看时应该逢十进一,所以此时的进位把个位多用了一个6(比如9+9=12H,它是从和18中取出16进到十位数,所以个位只留下2)。这种情况下,要给个位补会一个6.
若个位数没进位(AF=0),但其值超过了9(是A-F),此时作为十六进制还不需要进位,但作为BCD码,已经需要了,所以调整时,把A-F中的10进到前一位,个位保留它减去10后的余数。(如你例子中BCD码的个位B【应该是C吧】,减掉10,个位余下2,十位加上1,于是就调整成了72H)
否则(AF=0且低4位不超过9),个位数(即低4位)不动。
Step 2:调整十位数。
与调整个位数的做法完全相同,只是判断CF是否为1和高4位是否超过9. 需要调整时,产生的进位放在CF中。
作者: shzhfu 发布时间: 2010-11-21
引用 1 楼 shzhfu 的回复:
ADD做普通加法,它不把43H和29H看成BCD码,所以得到的和是6BH。转换成十进制表示72,但计算机内只能保存二进制形式,写成对应的十六进制就是6BH.
因为你自己要把两个加数看做BCD码,所以需要做加法调整:DAA.
DAA调整分两步进行:
Step 1:调整个位数。
若个位数产生进位了(辅助进位标志AF=1),即低4位向高4位进位了,那它是逢十六才进一。当BCD……
ADD做普通加法,它不把43H和29H看成BCD码,所以得到的和是6BH。转换成十进制表示72,但计算机内只能保存二进制形式,写成对应的十六进制就是6BH.
因为你自己要把两个加数看做BCD码,所以需要做加法调整:DAA.
DAA调整分两步进行:
Step 1:调整个位数。
若个位数产生进位了(辅助进位标志AF=1),即低4位向高4位进位了,那它是逢十六才进一。当BCD……
我也觉得应该是6C啊,会不会出错了?
作者: kartik 发布时间: 2010-11-21
如果你这个例子是从书上抄下来的,那就是书上写错了。
作者: shzhfu 发布时间: 2010-11-21
刚才回贴时我没计算,把你的结果抄过来,就直接写成6B了。写调整过程时,发现了6B的错误,但忘记了前面还有,就没改前面的。
作者: shzhfu 发布时间: 2010-11-21
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28