Z←((W-X)/5*Y)*2请解释答案中的指令MOV AX,WSUB \x05 AX,XCWDMOV\x05 BX,5IDIV\x05 BX [是说idv只能用ax,dx,eax,edx累加器么?]IMUL\x05 YSHL\x05 AX,1\x05;((DX),(AX))*2 左移是一个字节么?然后有什么变化?]RCL\x05 DX,1【这步

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 18:51:23

Z←((W-X)/5*Y)*2请解释答案中的指令MOV AX,WSUB \x05 AX,XCWDMOV\x05 BX,5IDIV\x05 BX [是说idv只能用ax,dx,eax,edx累加器么?]IMUL\x05 YSHL\x05 AX,1\x05;((DX),(AX))*2 左移是一个字节么?然后有什么变化?]RCL\x05 DX,1【这步
Z←((W-X)/5*Y)*2请解释答案中的指令
MOV AX,W
SUB \x05 AX,X
CWD
MOV\x05 BX,5
IDIV\x05 BX [是说idv只能用ax,dx,eax,edx累加器么?]
IMUL\x05 Y
SHL\x05 AX,1\x05;((DX),(AX))*2 左移是一个字节么?然后有什么变化?]
RCL\x05 DX,1【这步也不明白】

Z←((W-X)/5*Y)*2请解释答案中的指令MOV AX,WSUB \x05 AX,XCWDMOV\x05 BX,5IDIV\x05 BX [是说idv只能用ax,dx,eax,edx累加器么?]IMUL\x05 YSHL\x05 AX,1\x05;((DX),(AX))*2 左移是一个字节么?然后有什么变化?]RCL\x05 DX,1【这步
MOV AX, W ;把W的值传送给寄存器AX
SUB \x09 AX, X ;把寄存器AX的值减去X, 结果保存在AX中
CWD ;字扩展为双字, 即把AX的符号位扩展到DX, 这个双字由DX:AX共同表示
MOV\x09 BX, 5 ;把立即数5传送给寄存器BX
IDIV\x09 BX   ;把DX:AX表示的双字除以5,IDIV把数据当有符号数运算.
;这里回答楼主的问题,其实这里可以用的寄存器没有限制.但有规定.
       ;如果被除数为双字,则这里为字寄存器. 如可用ax,bx,cx,dx...
       ;如果被除数为字, 则这里为字节寄存器.如可用al,ah,bl,bh,cl,ch...
;这个随你喜欢
IMUL\x09 Y   ;把AX乘Y的结果保存在AX, IMUL把数据当有符号数运算.
SHL\x09 AX, 1 ;把操作数(AX)逻辑左移一位,把数据转为2进制后全部数据位向左移动一位,因移动       ;造成的空缺补0.运算结果等于把AX 乘以2
RCL\x09 DX, 1 ;带进位循环左移一次,移动的时候一位位移,带进位即进位标志CF有参与.
       ;这里移动一位,那么转成二进制的数据的第一位就移动到了CF标志中.因移动造成
;的空缺补0.