任务一
综合使用loop和[bx],编写完整汇编源程序,实现向内存b800:07b8开始的连续16个字单元重复填充字数据0430h。
1、源代码,保存为t3.asm
编译、连接后运行该代码,结果如下图:
2、将源代码程序中字数据0403h修改为0441h后,再次运行结果如图:
3、将源代码程序中字数据0403h修改为0603h后,再次运行结果如图:
由以上1、2、3的对比,我们可以看出bx中前两个字节控制颜色,后两个字节控制形状。
任务二
综合使用loop和[bx],编写完整汇编源程序,实现向内存0:200~0:23f依次传送数据0~63(3FH)。
1、源代码,保存为t4.asm:
2、汇编、连接无误后,进入debug环境使用d命令查看,如下图:
用d命令可以看到传送数据成功。
进入debug,先用r命令查看个寄存器中的数据,我用t命令单步执行观察了0:200~0:202的变化:
如上,确认了将00,01,02传送到该区域,由于单步执行次数过多,剩下的部分我用g命令一次执行完了
任务三
补全源代码
因为复制的是汇编指令,所以必须为cs
汇编、连接后进入debug调试环境,使用r命令查看cx的值,查看总长度:
用u命令进行反汇编,可以看出从第一条指令开始到mov ax,4c00h的长度为十六进制表示为17,即十进制的23;
然后修改t5.asm中源代码,把cx改为0017h:
汇编连接后进入debug调试环境,r命令查看cx,u命令反汇编:
用t命令和p命令调试后结果:
d命令查看0:200~0:23F如图:
与前面两个u命令反汇编得到的结果对比,可以看出指令被写到内存0:200处。
总结与体会
复习了实验三的汇编源程序的编写,汇编、连接,学习新的[bx]和loop的使用,发现在debug中对g命令与p命令的使用还不太熟悉,需要加强基础知识的复习巩固。
对于选做部分,因为自己对栈的使用还不是很了解,所以在此没有用栈的特性来做。