实验1
综合使用loop,[bx],编写完整汇编程序,实现向内存b800:07b8 开始的连续16 个
字单元重复填充字数据0403H。
对源程序 进行汇编、连接、运行
将源代码程序中字数据0403H→修改为0441H,再次运行,运行结果为
发现结果的图案发生了变化
实验2
综合使用loop,[bx],编写完整汇编源程序,实现向内存0:200~0:23F 依次传送数据0~63(3FH)。
对源程序 进行汇编、连接、运行
使用debug 的t 命令、g 命令、p 命令调试,用d 命令查看0:200~0:23F,确认是否将0~63 传送至此段内存区域。
实验3
对源程序 进行汇编、连接、运行
因为要复制执行的指令,所以ds的值应该和和执行的代码段寄存器cs值一致,所以将cs值赋给ax,ax再赋给ds
一开始cx的值并不确定,我先用64试运行一下,再调试,发现cx值为17h,说明这长度为17h,我们可以再修改cx的值,再进行汇编、连接、运行
修改后再调试
用d 命令查看0:200之后的若干字节,观察是否将mov ax, 4c00h 之前的指令复制到指定内存
在最后结果中我们看到mov ax, 4c00h 之前的指令
实验感想
在[BX],loop指令中,CPU在执行loop指令时要进行两步操作,cx=cx-1,判断cx中的值,不为0则转到标号处执行程序,如果为0则向下执行
所以cx的值影响着loop指令执行的次数,[BX]储存的偏移地址,注意和ds代码段寄存器的配合使用。
inc指令
inc a相当于 add a,1
inc a 优点:速度快,占用空间小
注意有时要存储字时,加一不能满足要求,灵活运用。
拓展:dec指令 减一指令 相当于 sub a,1
在实验1中仅改变源代码程序中字数据0403H→修改为0441H,运行后图形发生变化,原理是什么?