(1)
源代码如下
编译,连接得到exe文件后执行。
1.CPU执行程序,程序返回前,data段中数据为多少?
data段数据为0123h,0456h,0789h,0abch,0defh,0fdeh,0cbah,0987h(未变化)
2.CPU执行程序,程序返回前,cs=076c、ss=076b、ds=076a。
3.设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
(2)
源代码如下
编译,连接得到exe文件后执行。
1.CPU执行程序,程序返回前,data段中数据为多少?
data段数据为0123h,0456h。
2.CPU执行程序,程序返回前,cs=076c、ss=076b、ds=076a。
3.设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
4.如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为(N/16+1)*16(计算机占据空间必须为16的倍数)
(3)
源代码如下
编译,连接得到exe文件后执行。
1.CPU执行程序,程序返回前,data段中数据为多少?
data段数据为0123h,0456h。
2.CPU执行程序,程序返回前,cs=076c、ss=076e、ds=076d。
3.设程序加载后,code段的段地址为X,则data段的段地址为X+3,stack段的段地址为X+4。
(4)如果将(1)(2)(3)题中end start改为end,那个程序依旧可以执行?
(3)如果不指明程序入口,程序将会默认从开头开始执行,在(1)(2)程序中,开头部分我们写入的是数据从此开始会无法执行,所以(3)能够执行
(5)
源代码如下
编译,连接得到exe文件后执行。
由程序运行结果来看,的确依次相加存在c段中。
(6)
源代码如下
编译,连接得到exe文件后执行。
的确将数据送至b段。