码迷,mamicode.com
首页 > 其他好文 > 详细

实验五

时间:2018-11-27 01:17:42      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:push   lin   tar   push指令   问题   查看   分享图片   编写   font   

一、实验内容

(1)将下面的程序编译、连接,用debug加载、跟踪,然后回答问题。

技术分享图片

①CPU执行程序,程序返回前,data段中的数据 不变

②CPU执行程序,程序返回前,CS= 076C ,SS= 0769 ,DS= 075A 

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

 

(2)将下面的程序编译连接,用Debug加载、跟踪,然后回答问题。

技术分享图片

①CPU执行程序,程序返回前,data段中的数据 不变

②CPU执行程序,程序返回前,CS= 076C ,SS= 0769 ,DS= 075A 

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

④对于如下定义的段:

name segment

……

name ends

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

 

3)将下面的程序编译连接,用Debug加载、跟踪,然后回答问题。

技术分享图片

①CPU执行程序,程序返回前,data段中的数据 不变

②CPU执行程序,程序返回前,CS= 076A ,SS= 0769 ,DS= 075A 

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

 

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

        第三条程序仍然可以正确执行,如果不指明入口位置,则程序从所分配的空间开始执行,前2个是数据段,只有从第3条开始是指令代码。

 

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

技术分享图片

 编译、连接后,用debug调试如下:

技术分享图片

用d命令查看得到数据相加前,逻辑段c的8个字节,如上图;

技术分享图片

执行完实现加运算的代码后,用d命令查看逻辑段c的8个字节,如上图;

由此可得出结论,以上运算代码实现了数据相加。

 

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

代码如下:

技术分享图片

用debug调试,在push操作执行前,逻辑段b的8个字单元如下:

技术分享图片

执行push操作后,再次查看逻辑段b的信息如下:

技术分享图片

所以,可以得出a段中的8个字型数据逆序存储到了b段中。

 二、总结与体会

        这次实验前四题都完成的比较顺利,但是五六两题写得还是比较吃力的,期间出现了很多错误,导致得不到正确答案,好在通过看书、查资料也完成了这次实验。

 

实验五

标签:push   lin   tar   push指令   问题   查看   分享图片   编写   font   

原文地址:https://www.cnblogs.com/xinqimisa/p/10018071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!