实验四(还行的第四天)

实验四

一.实验结论

1.实验一

编写汇编程序,使用loop,[bx],实现向内存b800:07b8开始的连续16个字单元重复填写字数据0403H
(1)源代码:
1-1.jpg
运行结果:
1-2.jpg
(2)将源代码程序中0403H修改为0441H
源代码:
2-1.png
运行结果:
2-2.png

2.实验二

编写汇编程序,使用loop,[bx],实现向内存0:2000:23F依次传送数据063(3FH)
(1)源代码:
3.jpg
(2)用d命令查看0:200~0:23F
4.png

3.实验三

(1)源代码:
5.png
(2)用d命令查看0:200之后的若干字节:
6.png

二.总结与体会

主要疑惑都在第三个实验上,显然不知道es寄存器在代码中发挥怎样的作用,后来去汇编论坛发现了大佬对于此的见解,题目中让把mov ax,4c00h前的程序复制到另一段内存中,那么被复制的代码段地址应该是cs,所以第一条横线添cs。R命令查看cx的值,mov ax,4c00H和int 21H机器码有五字节。
cx中是整个程序的长度,包含了mov ax,4c00h和int 21h的长度,所以要填写要求复制的程序的长度(不包含mov ax,4c00h和int 21h的长度)。如果第一空填写为cs,答案是17h。如果第一空填写为code,答案为18h。首先在mov cx,____处,随意填写一个数据,让程序编译成功,然后用R命令查看cx的值,mov ax,4c00H和int 21H机器码有五字节,减去5就得到结果。也可以去数机器码字节数
而最后我用d命令查看的时候,数了一下发现确实有17个字节,但是其中个联系还是挺乱的

原文地址:https://www.cnblogs.com/nilicon/p/9953127.html