实验2 汇编源程序编写与汇编、调试

实验结论

1.实验任务1

展示ex1.asm的源码:

 

使用masm、link工具对ex1.asm进行汇编和链接

 

执行ex1.exe后,屏幕上方出现图像

 

使用debug加载ex1.exe文件

 

使用d命令查看程序段前缀PSP所占的256个字节

 

使用u命令进行精准反汇编

 

使用g命令执行到程序退出执行前

 

 

 

 2.实验任务2

ex2.asm的源码

使用masm、link工具对ex2.asm进行汇编和链接

 

执行ex2.exe后,屏幕上方出现图像

 

使用debug加载ex1.exe文件,并使用u命令进行精准反汇编

 

运用t命令、g命令和g命令调试ex2.exe

 

把ex2.asm中line9 mov cx, 4 改成 mov cx, 8后的重新汇编、链接、执行结果如下:

 

结论分析:ex1.asm和ex2.asm实现了相同的效果和功能,但是ex1.asm是直接寻址,而ex2.asm是通过寄存器bx间接寻址,ex2.asm把4改成了8,所以输出了八个图案。

 3.实验任务3

展示ex3.asm的源码:

 

程序的运行结果如下:

 

把填充的字数据,从0237H 改成0239H,再次保存后,汇编、链接、运行,结果截图如下:

 

把填充的字数据,从0237H 改成0437H,再次保存后,汇编、链接、运行,结果截图如下:

 

 通过结果我们可以发现,改变低位字节,字符变了颜色没变,

而改变高位字节,字符没变但颜色变了。

所以推测高位字节存放的是颜色信息,而低位字节则存放的是输出字符的信息。

4.实验任务4

ex4.asm的源码如下:

 

同样通过masm和link对源码进行汇编和链接

 

之后在debug中运用g命令进行调试运行

 

用d命令查看0:200~0:23F,确认有将0~63传送至此段内存区域

 

 5.实验任务5

填空以后的ex5.asm源码如下:

 

因为要复制mov ax,4c00之前的代码,所以cx循环次数应该为指令长度减去5个字节(或者00到16)为17H个字节。

对ex5.asm进行汇编和链接

 

在debug中对代码进行反汇编

 

用g命令调式运行

 

用d命令查看0:200之后的若干字节,并用u命令进行反汇编发现代码复制成功

 

 实验总结

通过这次实验,掌握了如何对程序进行汇编,链接,运行,如何对程序实现精确反汇编。

用r命令出现的cx的值是指令长度,而在asm中使用loop循环指令的cx值则为循环次数。

 

posted @ 2020-11-04 22:19  schedinger  阅读(173)  评论(1)    收藏  举报