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的内容