早教吧作业答案频道 -->数学-->
一个汇编的小问题,x,y,z,v均为16位带符号数,计算(v-(x*y+z–540))/xMOVAX,XIMULYMOVCX,AXMOVBX,DXMOVAX,ZCWDADDCX,AXADCBX,DXSUBCX,540SBBBX,0MOVAX,VCWDSUBAX,CXSBBDX,BXIDIVX上述代码中为啥要用CW
题目详情
一个汇编的小问题,x ,y ,z ,v 均为16位带符号数,计算 ( v - ( x*y + z – 540 ) ) / x
MOV AX,X
IMUL 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,CX
SBB DX,BX
IDIV X
上述代码中为啥要用CWD,能不能改成这样:
MOV AX,X
IMUL Y
MOV CX,AX
MOV BX,DX
MOV AX,Z
ADD CX,AX
ADC BX,0
SUB CX,540
SBB BX,0
MOV AX,V
SUB AX,CX
SBB DX,0
IDIV X
MOV AX,X
IMUL 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,CX
SBB DX,BX
IDIV X
上述代码中为啥要用CWD,能不能改成这样:
MOV AX,X
IMUL Y
MOV CX,AX
MOV BX,DX
MOV AX,Z
ADD CX,AX
ADC BX,0
SUB CX,540
SBB BX,0
MOV AX,V
SUB AX,CX
SBB DX,0
IDIV X
▼优质解答
答案和解析
将16位的“带”符号数 Z 扩展成32位,必须用CWD,才能保证不论 Z 是正是负,都得到正确的结果.
你改写的程序,仅在Z是正数的时候结果正确.
若 Z 是一个负数,你改写后的程序的运算结果就会出错.
你改写的程序,仅在Z是正数的时候结果正确.
若 Z 是一个负数,你改写后的程序的运算结果就会出错.
看了一个汇编的小问题,x,y,z,...的网友还看了以下:
设X,Y是两个随机变量,则下列等式中正确的是A,E(X+Y)=E(X)+E(Y)B,D(X+Y)= 2020-05-15 …
d(y)/d(x)=a d[d(y)/d(x)]/d(x)=d(a)/dy*[dy/dx]=a`* 2020-05-17 …
(2014•黄浦区一模)已知函数f(x)=ax2+bx+cx+d(其中a,b,c,d是实数常数,x 2020-07-14 …
MATLAB中解方程问题a*exp(x)*x^2+b*exp(x)*x+c*exp(x)+d*x^ 2020-07-23 …
定义在D上的函数f(x),如果满足:对任意x∈D,存在常数M≥0,都有|f(x)|≤M成立,则称f 2020-07-30 …
如果满足:对于任意x∈D,存在常数M大于0,均有f(x)的绝对值≤M成立,则称f(x)是D上的有界 2020-07-31 …
如果满足:对于任意x∈D,存在常数M大于0,均有f(x)的绝对值≤M成立,则称f(x)是D上的有界 2020-07-31 …
定义在D上的函数f(x),如果满足:对任意x∈D,存在常数M>0,都有|f(x)|≤M成立,则称f 2020-07-31 …
定义在D上的函数f(x),如果满足:对任意x∈D,存在常数M≥0,都有|f(x)|≤M成立,则称f 2020-07-31 …
设D=[0,1]x[0,1]f(x,y)=1/qx+1/qy,当(x,y)为D中有理点f(x,y)= 2020-12-07 …