鱼C论坛

 找回密码
 立即注册
查看: 1846|回复: 5

汇编菜鸟级问题

[复制链接]
发表于 2012-11-29 21:05:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、谁能解释一下十进制调整指令,上课没听懂。简单点~~~~

谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-29 21:12:22 | 显示全部楼层
没搞明白楼主的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-29 21:32:18 | 显示全部楼层
本帖最后由 2012507507 于 2012-11-29 22:24 编辑

LZ说的是用BCD码表示的十进制数吧??     
以下是用压缩后的BCD码表示的二位十进制数,

非压缩的BCD码以及二位以上十进制数的BCD码就让LZ思考下了,原理相同。
先说下BCD码与8086的存储形式的关系

BCD码中 4位2进制表示十进制中的一个位(高位对应高位,低位对应低位)
比如: 十进制的10  BCD码就是0001  0000B   在AL中存储是 10H
            十进制的09  BCD码就是0000 1001B   在AL中存储是  09H
            十进制的15  BCD码就是0001 0101B   在AL中存储是  15H
遵循2进制转10进制的常规方法(加和权的运算)
单个字节的BCD码存储范围是从0000 0000B(00)~1001 1001B(99),

而8086中是通过16进制进行 存储和计算的。
所以上面3个例子在8086的存储形式如下:
            十进制的10     转为2进制0000 1010B  AL存储为0AH
            十进制的09     转为2进制0000 1001B  AL存储为09H
            十进制的15     转为2进制0000 1111B  AL存储形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=20  BCD码表示为 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同理。




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-1 17:59:07 | 显示全部楼层
楼上正解。。。。。支持一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-1 22:11:48 | 显示全部楼层
这是什么东西呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-2 05:11:51 | 显示全部楼层
==一二三四五六七八九十:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表