汇编2

2009.02.15 / 标签: / 分类: 汇编

花了两天时间终于把这个博客皮肤搞定了,为了达到更加逼近原版的效果,对ZBLOG的c_system_base.asp文件做了一点手术。现在好像还有一些不够完善的地方,后面发现了再接着改吧。

实现把寄存器AL中的内容(无符号数)乘10,结果存放在AX中。

XOR AH,AH	;异或指令将AH清0
SHL AL,1	;逻辑左移1位,得到2X
MOV BX,AX
SHL AX,1	;逻辑左移1位,得到4X
SHL AX,1	;逻辑左移1位,得到8X
ADD AX,BX	;得到2X+8X

汇编1

2009.02.14 / 标签: / 分类: 汇编
Sofa

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

无觅相关文章插件,快速提升流量