实验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原始数据段:

运行代码之后的数据段:

五、实验总结
通过本次实验,我掌握了多个逻辑段的汇编源程序的编写与调试,清楚了定义的数据段与代码段的地址关系,学会了使用除法操作,以及修改地址,复制数据等操作。

浙公网安备 33010602011771号