实验2 多个逻辑段的汇编源程序编写与调试
1、实验任务1
(1)任务1-1
task1_1源码:
调试到19行之前截图:
此时,DS=076a,ss=076b,cs=076c
假设程序加载后,code段地址是x,data段地址是x-2,stack段地址是x-1
(2)任务1_2
task1-2源码:
调试到19行之前的截图:
此时,DS=076a,SS=076b,CS=076c
假设程序加载后,code段地址是x,data段地址是x-2,stack段地址是x-1
(3)任务1-3
task1-3源码:
调试到19行之前的截图:
此时,DS=076a,SS=076c,CS=076e
假设程序加载后,code段地址是x,data段地址是x-4,stack段地址是x-2
(4)任务1-4
task1-4源码:
调试到11行之前截图:
此时,DS=076c,SS=076e,CS=076a
假设程序加载后,code段地址是x,data段地址是x+2,stack段地址是x+4
(5)任务1-5
实际分配的段是(N/16)的上取整
end start是告诉程序,从start处开始执行,task1-1,task1-2,task-3都是先定义数据段,再执行代码,移出end start之后,代码不能正确执行,而task1-4是先执行代码,再定义数据段,移除end start之后仍然是从第一行开始执行,不会出错。
task1-1修改之后,调试截图:
代码执行出错
task1-4修改之后调试截图:
仍然能正确执行
2、实验任务2
代码截图:
效果截图:
3、实验任务3
代码截图:
加载调试反汇编截图:
代码执行前数据截图:
代码执行后数据截图:
4、实验任务4
代码截图:
加载、反汇编、调试截图:
数据空间截图:
5、实验任务5
源码:
运行结果截图:
line19的作用:把小写字母变成大写字母
line4的作用:在显示字母的时候设置颜色
6、实验任务6
源码:
加载、反汇编、调试截图:
运行前:
运行后:
7、实验任务7
源码:
调试:
table原始数据段:
运行代码之后的数据段:
五、实验总结
通过本次实验,我掌握了多个逻辑段的汇编源程序的编写与调试,清楚了定义的数据段与代码段的地址关系,学会了使用除法操作,以及修改地址,复制数据等操作。