这是我的程序
assume cs:abc
abc segment
mov ax,2000h
mov ss,ax
mov sp,0
add sp,4
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
abc ends
end
在DEBUG里面查看也是对的
E:\asmtools>debug 1.EXE
-u
1410:0000 B80020 MOV AX,2000
1410:0003 8ED0 MOV SS,AX
1410:0005 BC0000 MOV SP,0000
1410:0008 83C404 ADD SP,+04
1410:000B 58 POP AX
1410:000C 5B POP BX
1410:000D 50 PUSH AX
1410:000E 53 PUSH BX
1410:000F 58 POP AX
1410:0010 5B POP BX
1410:0011 B8004C MOV AX,4C00
1410:0014 CD21 INT 21
1410:0016 0146F8 ADD [BP-08],AX
1410:0019 8B46FE MOV AX,[BP-02]
1410:001C 8946F6 MOV [BP-0A],AX
1410:001F EB06 JMP 0027
一步一步去执行的时候,CS=1410, 但执行完POP ax的命令,CS=0000 IP=0014 不应该还在同一个段上吗
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1400 ES=1400 SS=1410 CS=1410 IP=0003 NV UP EI PL NZ NA PO NC
1410:0003 8ED0 MOV SS,AX
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1400 ES=1400 SS=2000 CS=1410 IP=0008 NV UP EI PL NZ NA PO NC
1410:0008 83C404 ADD SP,+04
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0004 BP=0000 SI=0000 DI=0000
DS=1400 ES=1400 SS=2000 CS=1410 IP=000B NV UP EI PL NZ NA PO NC
1410:000B 58 POP AX
-t
AX=20CD BX=0000 CX=0016 DX=0000 SP=0002 BP=0000 SI=5E3B DI=0000
DS=1400 ES=1400 SS=2000 CS=0000 IP=0014 NV UP DI PL NZ NA PO NC
0000:0014 CC INT 3
- |