解: neg dx
neg ax
sbb dx, 0
最后一条语句有什么作用?
能否举例说明???
恳请各位指教.
QQ:43226576
E-mail: lqgfriend@163.com
求补:(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位求补是有区别的。
求补:(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位求补是有区别的。