王爽汇编SBB,ADC指令的问题

关于如下程序pushaxpushdxmovax,0movdx,1000hs1:subax,1sbbdx,0cmpax,0jnes1cmpdx,0jnes1popdxpop... 关于如下程序
push ax
push dx
mov ax,0
mov dx,1000h
s1: sub ax,1
sbb dx,0
cmp ax,0
jne s1
cmp dx,0
jne s1
pop dx
pop ax
这段程序为什么SBB AX,DX的值会跟着变化?SBB指令怎么把DX默认为AX的高位的??
展开
 我来答
sz1sz2
2012-11-14 · TA获得超过1393个赞
知道小有建树答主
回答量:568
采纳率:100%
帮助的人:251万
展开全部
SBB 是带借位位的减法。
在这段程序中,进入S1循环时,先执行 sub ax,1指令,产生了借位(ax=0,ax-1后ax=0FFFF H,借位cy=1)。
执行sbb dx,0 时,dx减去0,再减去借位cy,dx从1000H变成0FFFH。
类似的,adc指令是带进位的加法。这条指令除了将两个加数相加外,还要加上进位位。
追问
我的问题是为什么向AX的高位借位就是向DX的值借位呢??
追答
SBB  指令中是哪个寄存器,就是向谁借位。 本例中 是 SBB DX,0   所以就是向DX借位。
qopenman
2012-11-14 · TA获得超过275个赞
知道答主
回答量:120
采纳率:0%
帮助的人:23.8万
展开全部
sbb是带借位的减法。
sub ax,1的时候,cf产生了相应的变化。
然后sbb dx,0的时候,执行的就是dx-cf。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式