汇编1
X,Y,Z,V均为16位带符号的数,分别存放在名为XXX,YYY,ZZZ,VVV的变量单元中,求解:
(V-(X*Y+Z-540))/X
要求:将计算结果的商保存到AX中,余数保存到DX中。
MOV AX,XXX IMUL YYY ;计算X*Y MOV CX,AX MOV BX,DX ;保存X*Y到BX:CX中 MOV AX,ZZZ CWD ;因为X*Y为32位,而Z为16位,所以使用CWD指令对Z进行扩展 ADD AX,CX ADC DX,BX ;计算X*Y+Z,考虑到高位相加的进位问题,所以使用ADC指令 SUB AX,540 ;求X*Y+Z-540 SBB DX,0 ;考虑到高位相减的借位问题,所以使用SBB指令 MOV CX,AX MOV BX,DX ;保存X*Y+Z-540到BX:CX中 MOV AX,VVV CWD ;因为X*Y+Z-540为32位,而V为16位,所以使用CWD指令对V进行扩展 SUB AX,CX SBB DX,BX ;计算V-(X*Y+Z-540) MOV CX,XXX IDIV CX ;计算(V-(X*Y+Z-540))/X
除非另有声明,本站遵循【署名-非商业性使用-相同方式共享 3.0 共享协议】授权。
转载原创文章请注明,转载自:Neeke[http://www.ineeke.com]

最新评论