实验3 多个段的汇编源程序编写与调试
运行结果
调试运行
修改后的源代码
运行结果
data段line4字节数据的用途是存放字母的颜色信息
2. 实验任务2
源代码
调试结果
3. 实验任务3
源代码
CPU执行程序,程序返回前,data段中的数据为0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
CPU执行程序,程序返回前,cs=076C、ss=076B、ds=076A
设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
4. 实验任务4
源代码
data段中的数据为:0123h, 0456h
CPU执行程序,程序返回前,cs=076C、ss=076B、ds=076A
设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为:(N/16)*16 (N/16)向上取整。
5. 实验任务5
源代码
data段中的数据为:0123h, 0456h
CPU执行程序,程序返回前,cs=076A、ss=076E、ds=076D
设程序加载后,code段的段地址为X,则data段的段地址为X+3,stack段的段地址为X+4
6. 实验任务6
只有实验任务五的代码可以正常执行。如果不指名程序的入口,实验任务三和四代码的前几行数据段将被当做代码来执行,
而实验任务五的代码把数据段和栈段的内容放在代码段的后面,所以不会影响程序的正常执行。
7. 实验任务7
源代码
调试运行查看逻辑段c段的数据
8. 实验任务8
源代码
调试查看栈段b中的数据
三.实验总结
这次实验让我对数据段、栈段、代码段有了更多的了解。在没有end start即不指名程序入口的情况下
很容易因为位置问题导致数据段或者栈段当成代码段来执行。对数据段、栈段的段地址也能通过计算
得出。对于div也有了充分的体会,16位除8位商存在al中余数存在ah中。