汇编语言 实验五
一:对要求的程序进行编译,连接,用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 此次实验可以让我们加深了段地址以及各种语言的运用 收获不少。