实验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值则为循环次数。

浙公网安备 33010602011771号