汇编习题“设X,Y,Z,V均为16位带符号数,求运算公式”程序段中有两句不懂 初学 T

汇编习题“设X,Y,Z,V均为16位带符号数,求运算公式”程序段中有两句不懂 初学 T
mov ax,X imul Y ;X*Y mov cx,ax mov bx,dx mov ax,Z cwd add cx,ax adc bx,dx sub cx,540 sbb bx,0 mov ax,V cwd sub ax,cxsbb dx,bx idiv X -------------------------------------这两句不懂 :adc bx,dx sbb dx,bx 知道DX存放的是AX的符号扩展 为FFFFH或0000H 但是加减BX是为什么?
fleet 1年前 已收到1个回答 举报

O橘子酱O 幼苗

共回答了14个问题采纳率:92.9% 举报

adc是带进位加法指令,它利用了CF位上记录的进位值.指令格式:adc 操作对象1,操作对象2功能:操作对象1=操作对象1+操作对象2+CFsbb是带借位减法指令,它利用了CF位上记录的借位值.指令格式:sbb 操作对象1,操作对象2功能:操作对象1=操作对象1-操作对象2-CF都是利用上一次改变CF位之后的结果加入到这次的运算.针对程序就是add cx,ax//影响下面结果CFadc bx,dxsub ax,cx//影响下面结果CFsbb dx,bx 而dx是ax的符号拓展位,则相应的bx 是cx的符号拓展位.这是将两个大数的加减用两个寄存器表示一个数.所以这需要在低位算过了之后用带位的加减法处理符号拓展位.

1年前

10
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.027 s. - webmaster@yulucn.com