我把代码复制了一遍,使用debug执行,发现 IP 没有被置成 0,下面是代码.
assume cs:code
stack segment
db 16 dup (0)
stack ends
code segment
mov ax,4c00h
int 21h
start : mov ax,stack
mov ss,ax
mov sp,16
mov ax,0
push ax
mov bx,0
ret
code ends
end start
这里是debug内容
G:\asm>debug tt.exe;
-r
AX=0000 BX=0000 CX=0025 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B67 ES=0B67 SS=0B77 CS=0B78 IP=0005 NV UP EI PL NZ NA PO NC
0B78:0005 B8770B MOV AX,0B77
-u
0B78:0005 B8770B MOV AX,0B77
0B78:0008 8ED0 MOV SS,AX
0B78:000A BC1000 MOV SP,0010
0B78:000D B80000 MOV AX,0000
0B78:0010 50 PUSH AX
0B78:0011 BB0000 MOV BX,0000
0B78:0014 C3 RET
0B78:0015 5F POP DI
0B78:0016 06 PUSH ES
0B78:0017 D1E3 SHL BX,1
0B78:0019 8B369616 MOV SI,[1696]
0B78:001D 8B00 MOV AX,[BX+SI]
0B78:001F 898672FF MOV [BP+FF72],AX
0B78:0023 8BD8 MOV BX,AX
-q
----------------------------------------------------
0B78:0014 C3 RET
ret 之后根本没有执行上面的 mov ax,4c00h , int 21h
请问这是为什么呢 ? |