汇编语言实验3

文章详细描述了如何通过编写和调试ASM程序,利用DEBUG工具研究栈内存操作,包括mov,push,pop等指令对栈顶内容的影响以及PSP存储的位置和访问方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验内容

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值