首页 > 其他 > 详细

实验五

时间:2018-11-30 19:21:24      阅读:178      评论:0      收藏:0      [点我收藏+]

 

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

技术分享图片

技术分享图片

技术分享图片

  • cpu执行程序,程序返回前,data段中的数据是多少?

技术分享图片

  • cpu执行程序,程序返回前,cs=004h, ss=076bh, ds=076ah
  • 设程序加载后,code段的地址为X,则data段的地址X-2,stack段为X-1

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

技术分享图片

技术分享图片

技术分享图片

该程序加载后,code段的段地址为X,则data段的段地址X-2,stack的段地址为X-1

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

技术分享图片

这段代码和上一段对比,就是把data段和stack段放到了最后,看下程序执行返回前(就是int 21h前),相关寄存器的情况:

技术分享图片

这时,CS, SS, DS三个寄存器的位置关系发生了变化,和上面两种情况可以对比一下,分别从程序的角度和内存的角度体会栈段的使用、变化情况。

4、如果将最后一条伪指令“end start”改为“end”,相当于没有指明程序入口,此时程序就会从加载进内存的第一个单元起开始执行。在(1)(2)题中,都是数据先加载进内存,CPU会误把数据也当成指令执行,最终不能保证被正确执行;而(3)题则是代码段先被加载进内存,因而可以被正确执行。

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

 技术分享图片

技术分享图片

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

技术分享图片

 

代码如下

技术分享图片

结果为

技术分享图片

 

实验五

原文:https://www.cnblogs.com/DEMON98/p/10045770.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!