汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-07-17 09:23] BCD运算指令:daa/das

有两种算术运算方法使用bcd数据:加法和减法。
指令系统提供了两条指令修正bcd加法和减法的操作。daa指令(加法运算后十进制调整)跟在bcd加法后面。而das指令(减法运算后十进制调整)跟在bcd减法后面。两条指令的结果,使他们称为bcd数字。
bcd码数据, 总是以压缩格式出现的数字,并且以每个字节两个数字的格式存储。调整指令只作用于bcd加法和减法以后的al寄存器。

daa指令:daa指令紧跟在add或者adc指令之后,把结果调整为bcd结果。如:
-------------------------------------------------------
mov dx,1234h
mov bx,3099h
mov al,bl
add al,dl
daa
mov cl,al
mov al,bh
adc al,dh
daa
mov ch,al
-------------------------------------------------------
由于daa指令只作用于al寄存器。所以这种加法每次只做8位。bl和dl相加调整后存入cl, 然后bh和dh进行带进位加法操作, 调整后放入ch。

das指令:作用和daa类似,不过做的是减法而已。 例子:
-------------------------------------------------------
mov dx,1234h
mov bx,3099h
mov al,bl
sub al,dl
das
mov cl,al
mov al,bh
sbb al,dh
das
mov ch,al
-------------------------------------------------------
评论次数(0)  |  浏览次数(758)  |  类型(汇编语言笔记) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码