| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 970 人关注过本帖
标题:对双字求补
只看楼主 加入收藏
longfeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-7-4
收藏
 问题点数:0 回复次数:3 
对双字求补
题: 写出对存放在DX和AX中的双字长数求补的指令序列.

解: neg dx
neg ax
sbb dx, 0

最后一条语句有什么作用?
能否举例说明???
恳请各位指教.
QQ:43226576
E-mail: lqgfriend@163.com
2006-11-01 12:24
wchx215
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2006-9-4
收藏
得分:0 

求补:(ax)=0ffffh-(ax)+1;32位的求补是:0ffffffffh-32位的数+1。
而分别对dx,ax求补我们知道其实dx多加了一个"1";
因此(dx)=(dx)-1才是我们要的;
当ax!=0时,求补时CF=1;
sbb dx,0即为(dx)=(dx)-CF-0(CF=1)即为真实的dx。
(ax)=0时,neg ax;结果是:(ax)=0;且CF=0;
而32位的低16位为0时,求补的情况是:0ffffffffh-dx(高16位数)00000000h(低16位数)+1
可知低16位的情况为:ffffffffh+1=0, 且向高16位进位了,这时满足dx求补的情况了,所以(dx)=(dx);
而此时sbb dx,0:(dx)=(dx)-CF-0(CF=0)是符合条件的;
所以要多一条sbb dx,0,主要是真实的32位求补和分别对16位求补是有区别的。

2006-11-04 11:08
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
以下是引用wchx215在2006-11-4 11:08:17的发言:

求补:(ax)=0ffffh-(ax)+1;32位的求补是:0ffffffffh-32位的数+1。
而分别对dx,ax求补我们知道其实dx多加了一个"1";
因此(dx)=(dx)-1才是我们要的;
当ax!=0时,求补时CF=1;
sbb dx,0即为(dx)=(dx)-CF-0(CF=1)即为真实的dx。
(ax)=0时,neg ax;结果是:(ax)=0;且CF=0;
而32位的低16位为0时,求补的情况是:0ffffffffh-dx(高16位数)00000000h(低16位数)+1
可知低16位的情况为:ffffffffh+1=0, 且向高16位进位了,这时满足dx求补的情况了,所以(dx)=(dx);
而此时sbb dx,0:(dx)=(dx)-CF-0(CF=0)是符合条件的;
所以要多一条sbb dx,0,主要是真实的32位求补和分别对16位求补是有区别的。


2006-11-04 11:32
longfeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-7-4
收藏
得分:0 
多谢!!!虽然还点不清楚,但自己再想想.THANKS VETY MUCH!!!
2006-11-05 21:27
快速回复:对双字求补
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038075 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved