一、实验内容 1将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。 |
二、算法描述及实验步骤 1.先编写好t1.ASM文件。 2.进入masm编译模式,将t1.ASM文件编译成目标代码文件t1.obj。 3.进入link链接模式,将t1.obj文件链接成可执行文件t1.exe 4.进入debug模式,测试t1.exe文件。 5.用T命令一句一句地执行汇编指令,并用D命令结合寄存器SS、SP中的值来查看内存中栈区的内容。记录好每一步执行后相关寄存器中的内容和栈顶的内容。 6.PSP存放在内存中,其地址在DS寄存器中。 三、DEBUG操作展示 1.进入debug模式,测试t1.exe文件。 2.用T命令执行mov as,2000H,并查看栈顶内容。 AX寄存器的值变为了2000H,此时栈顶内容为0000H。 3. 用T命令执行mov ss,ax,并查看栈顶内容。 |
SS寄存器变成了2000H,栈顶内容为0000H 4. 用T命令执行mov sp,0 、add sp,10(系统自动将这两句命令合并为一句命令),并查看栈顶内容。 SP寄存器变为000AH,栈顶内容变成了7306H。 5. 用T命令执行pop ax ,并查看栈顶内容。 |
AX寄存器变成了7306H,同时SP寄存器由于出栈自动加2,变成了000CH,所以此时栈顶内容为0000H。
6. 用T命令执行pop bx ,并查看栈顶内容。 BX寄存器变成了0000H,同时SP寄存器由于出栈自动加2,变成了000EH,此时栈顶内容仍为0000H。 7. 用T命令执行push ax ,并查看栈顶内容。 |
SP寄存器由于入栈自动减2,变成了000CH,此时栈顶内容变为7306H。 8. 用T命令执行push bx ,并查看栈顶内容。 SP寄存器由于入栈自动减2,变成了000AH,此时栈顶内容变为0000H。 9. 用T命令执行pop ax ,并查看栈顶内容。 AX寄存器变成了0000H,同时SP寄存器由于出栈自动加2,变成了000CH,此时栈顶内容变为7306H。 10. 用T命令执行pop bx ,并查看栈顶内容。 |
BX寄存器变成了7306H,同时SP寄存器由于出栈自动加2,变成了000EH,此时栈顶内容变为0000H。 11. 重新进入debug模式,运行t1.exe,用R命令获得DS寄存器的内容,用D命令查看内存中对应位置的数据。 可以看到PSP中的内容为 CD20H |