实验五 编写,调试具有多个段的程序

本文详细探讨了在使用Debug工具进行程序加载和跟踪时,数据段、代码段和栈段的变化情况,以及它们在程序运行中的作用。通过具体实验,深入解析了不同段地址设置对程序执行的影响,并对比了修改程序入口指令后的执行效果。

四、实验结论

  1、将程序编译、连接,用Debug加载、跟踪

 

CPU执行程序,程序返回前,date段中的数据为

CPU执行程序,程序返回前,cs=076c、ss=076b、ds=076a

设程序加载后,code段的段地址为X,date的段地址为X-2,stack段的段地址为X-1

  2、将程序编译、连接,用Debug加载、跟踪

 

CPU执行程序,程序返回前,date段中的数据为

CPU执行程序,程序返回前,cs=076c、ss=076b、ds=076a

设程序加载后,code段的段地址为X,date的段地址为X-2,stack段的段地址为X-1

如果段中的数据占N个字节则程序加载后,该段实际占有的空间为: (N/16+1)*16

  3、将程序编译、连接,用Debug加载、跟踪

 

CPU执行程序,程序返回前,date段中的数据为

CPU执行程序,程序返回前,cs=076a、ss=076e、ds=076d

设程序加载后,code段的段地址为X,date的段地址为X+3,stack段的段地址为X+4

  4、如果将1.2.3题中是最后一条伪指令"end start"改为"end"(也就是说,不指明程序的入口),则哪个程序仍然可以正确执行?

第三个程序可以正确执行,因为只有第三个程序是从代码段开始执行的,将最后一条伪指令"end start"改为"end",不会影响程序的运行。

  5、程序如下,编写code段中的代码,将a段和b段中的数据依次相加,将结果存到c段中

程序运行前:

运行后

 

  6、程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储到b段中。

程序运行前

运行后

五、总结与体会

   通过这次实验,更加了解什么是数据段,代码段,栈段,以及三个段同时在一个程序的运行顺序。

转载于:https://www.cnblogs.com/ntybky/p/10053680.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值