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

  运行代码之后的数据段:

 

 五、实验总结

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

 

posted @ 2021-11-05 15:02  博客123456789  阅读(109)  评论(3编辑  收藏  举报