四、实验结论
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段中。
程序运行前
运行后
五、总结与体会
通过这次实验,更加了解什么是数据段,代码段,栈段,以及三个段同时在一个程序的运行顺序。