实验结论
实验任务一
(1) 新建t3.asm编写代码
(2) 将t3编译,连接并运行
屏幕中出现了一连串红色的心型字符,这是因为我们在往属于显存的内存中写入了0403h的数据
(3) 将填入的数据从0403h改为0441h后再次编译运行
输出的字符变成了红色的大写A字母
实验任务二(1)新建t4.asm编写代码
(2)编译,连接,使用debug单步调试后查看0:200~0:23f内存中的内容
0:200~0:23f内存中的内容确实为0~63
实验任务三
(1)新建t5.asm,补全书上代码写入
说明:
第一个为mov ax,cx 因为复制代码,所以开始的段地址为cs中的代码段地址
第二个为MOV CX,23 CX中应该为循环次数,循环次数由总命令的长度决定,可以通过debug先查看这段代码的长度后进行修改,也可以直接计算得,规则在最后的总结体会。
(2)使用dubug查看0:200~0:215的内存
代码复制成功
我在自己更改cx中值后发现,即使循环次数更大,程序也不会继续复制下去了,mov ax,4c00和int 21h代表程序运行结束,不复制
实验总结与体会
代码指令的长度规则:
一、没有操作数的指令,指令长度为1个字节
二、操作数只涉及寄存器的的指令,指令长度为2个字节
如:mov bx,ax
三、操作数涉及内存地址的指令,指令长度为3个字节
如:mov ax,ds:[bx+si+idata]
四、操作数涉及立即数的指令,指令长度为:寄存器类型+1
8位寄存器,寄存器类型=1,如:mov al,8;指令长度为2个字节
16位寄存器,寄存器类型=2,如:mov ax,8;指令长度为3个字节
我们可以通过[bx]来完成对连续地址的改变