汇编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]

本文链接: http://www.ineeke.com/archives/asm1/

2009年2月14日 | 归档于 汇编 | 没有评论
标签: ,
本文目前尚无任何评论.

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">
n:-zy n:-zr n:-zan n:-xf n:-wx n:-tz n:-tt n:-ts n:-sy n:-st n:-ss n:-sk n:-qd n:-pz n:-lh n:-kun n:-ku n:-hx n:-hd n:-gt n:-gg n:-bz

NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!