1、将下面的程序保存为t1.asm,将其生成可执行未见,t1.exe
assume cs:codesg
codesg segment
mov ax,2000h
mov ss,ax
mov sp,0
add sp,10
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
codesg ends
end
本人用的是notepad打汇编的,然后这次试验就命名为s3_1(并不是题目所说的t1,注意一下)
接着就日常masm、link和debug
2、用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容
先用u来查看debug的代码,代码段从0000执行到0014
逐条执行
(注意最后一个是p不是t,可查看4.9,执行完后用q返回dos界面)
3、PSP的头两个字节是CD20,用debug加载t1.exe,查看PSP的内容
在4.9里面已经说明了ds为PSP的段地址,CS为代码段的段地址。因此直接d ds:0就可以查看到PSP的内容