汇编菜鸟级问题
1、谁能解释一下十进制调整指令,上课没听懂。简单点~~~~{:5_109:}谢谢了
没搞明白楼主的意思 本帖最后由 2012507507 于 2012-11-29 22:24 编辑
LZ说的是用BCD码表示的十进制数吧??
以下是用压缩后的BCD码表示的二位十进制数,
非压缩的BCD码以及二位以上十进制数的BCD码就让LZ思考下了,原理相同。
先说下BCD码与8086的存储形式的关系
BCD码中 4位2进制表示十进制中的一个位(高位对应高位,低位对应低位)
比如: 十进制的10BCD码就是00010000B 在AL中存储是 10H
十进制的09BCD码就是0000 1001B 在AL中存储是09H
十进制的15BCD码就是0001 0101B 在AL中存储是15H
遵循2进制转10进制的常规方法(加和权的运算)
单个字节的BCD码存储范围是从0000 0000B(00)~1001 1001B(99),
而8086中是通过16进制进行 存储和计算的。
所以上面3个例子在8086的存储形式如下:
十进制的10 转为2进制0000 1010BAL存储为0AH
十进制的09 转为2进制0000 1001BAL存储为09H
十进制的15 转为2进制0000 1111BAL存储形0FH
1位十进制数,BCD码与16进制相同
2位十进制数,BCD码和16进制相差 06H
接着说下压缩的BCD码的调整指令
压缩的BCD码指令有 DAA(加法调整)和DAS(减法调整)
执行如下运算 AL+BL;(AL)=9 (BL)=11,结果保存至AL
BCD码加法:指令为 DAA AL,BL
09+11=20BCD码表示为 0000 1001B+ 0001 0001B=0010 0000B
AL存储是 20H
常规加法中:指令为ADD AL,BL
09+11=20 则表示为09H+0BH=14H 结果转为2进制 0001 0100B
AL存储是 14H
即DAA AL,BL相当于执行了
(1) ADD AL,BL
(2) ADD AL,06H
2步操作。DAS同理。
楼上正解。。。。。支持一下 这是什么东西呀 ==一二三四五六七八九十:lol
页:
[1]