汇编语言 实验五

一:对要求的程序进行编译,连接,用debug加载,跟踪,然后回答问题。

将相关的工作做好以后:

1) 在程序返回前,我们用d命令查找data数据 发现其中的值并没有发生改变

2)在程序返回前我们可以发现,cs=076C ,ss=076B,ds=075A

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

code对应cs   data对应ds    stack对应ss

二:对要求的程序进行编译,连接,用debug加载,跟踪,然后回答问题。

前期将相关的工作做好了以后:

1)在程序返回前,我们用d命令查找data数据 发现其中的值并没有发生改变

2)在程序返回前我们可以发现,cs=076C ,ss=076B,ds=076A

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

4)对于如下定义的段:

name segment

...

name ends

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

因为我们在分配空间时使用16个字节为单位的,所以不足16的时候仍然是分配16个字节来使用。

三:对要求的程序进行编译,连接,用debug加载,跟踪,然后回答问题。

上面的准备工作都完成以后:

1)在程序返回前,我们用d命令查找data数据 发现其中的值并没有发生改变

2))在程序返回前我们可以发现,cs=076A,ss=076E,ds=076D

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

四:

如果将1,2,3题中的最后一条伪指令“end start”改为end(也就是说不指明程序的入口),则那个程序可以执行 ,说明理由。

第3个可以执行。因为第三个程序入口处便是执行指令,而前两个则是把数据段放在了前面,所以没有办法可以正确的执行。

五:

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

之后我们可以查看到我们想要的相加结果。

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

我们可以得到我们想要的结果。

实验总结:

1 在本次实验中收获了关于数据段方面的知识,学习到了不少。

2 此次实验可以让我们加深了段地址以及各种语言的运用 收获不少。

原文地址:https://www.cnblogs.com/QiaoGeGe/p/10032391.html