程序如下:
assume cs:code
code segment
start: mov ax,1234h
mov bx,ax
shl bx,1
mov cl,3
shl ax,cl
add ax,bx
mov ax,4c00h
int 21h
code ends
end start
调试如下:
D:\masm>debug ce14_2.exe
-u0 10
0B60:0000 B83412 MOV AX,1234
0B60:0003 8BD8 MOV BX,AX
0B60:0005 D1E3 SHL BX,1
0B60:0007 B103 MOV CL,03
0B60:0009 D3E0 SHL AX,CL
0B60:000B 03C3 ADD AX,BX
0B60:000D B8004C MOV AX,4C00
0B60:0010 CD21 INT 21
-t
AX=1234 BX=0000 CX=0012 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B50 ES=0B50 SS=0B60 CS=0B60 IP=0003 NV UP EI PL NZ NA PO NC
0B60:0003 8BD8 MOV BX,AX
-t
AX=1234 BX=1234 CX=0012 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B50 ES=0B50 SS=0B60 CS=0B60 IP=0005 NV UP EI PL NZ NA PO NC
0B60:0005 D1E3 SHL BX,1
-t
AX=1234 BX=2468 CX=0012 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B50 ES=0B50 SS=0B60 CS=0B60 IP=0007 NV UP EI PL NZ AC PO NC
0B60:0007 B103 MOV CL,03
-t
AX=1234 BX=2468 CX=0003 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B50 ES=0B50 SS=0B60 CS=0B60 IP=0009 NV UP EI PL NZ AC PO NC
0B60:0009 D3E0 SHL AX,CL
-t
AX=91A0 BX=2468 CX=0003 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B50 ES=0B50 SS=0B60 CS=0B60 IP=000B OV UP EI NG NZ AC PE NC
0B60:000B 03C3 ADD AX,BX
-t
AX=B608 BX=2468 CX=0003 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B50 ES=0B50 SS=0B60 CS=0B60 IP=000D NV UP EI NG NZ NA PO NC
0B60:000D B8004C MOV AX,4C00
-q
或者这么做:(ax)*10=(ax*4+ax)*2
程序如下:
assume cs:code
code segment
start: mov ax,1234h
mov bx,ax
mov cl,2
shl ax,cl
add ax,bx
shl ax,1
mov ax,4c00h
int 21h
code ends
end start
- [游客] 感谢 11/15 22:10
- [游客] 把:DD 5937000,改成:DD 4294967295,你的错误,立刻就暴露出来。呵呵 05/19 18:30
- [游客] 计算人均时,是DD型除以DW型。把DD型的最大值代进去,你的程序,就溢出了。 05/19 18:28
- [游客] 注意不溢出的除法。 05/19 18:25
- [游客] 老师好啊~ 06/28 11:01
- [longphui] 谢谢 09/03 20:10
- [longphui] 谢谢 09/03 16:23
- [longphui] 谢谢 09/02 15:26
- [longphui] 谢谢 09/02 09:13
- [sissim] 恩恩,谢谢指正 01/11 18:24
- [even3] 亲,你好。。。这边有一个汇编语言程序,但是就是不知道哪里出了问题,问了很多人,都不知道想麻烦您一下, 05/16 20:48
- [mcjfo] 楼主可以帮我解决这个问题吗?谢谢! 为什么它会跳过JMP DD 指令不执行啊 小弟搞了好久抖没 06/08 06:50