第五章实验四第三题

来源:互联网 发布:机器人模拟软件 编辑:程序博客网 时间:2024/06/05 06:20

题目:下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果

代码:

 

1分析:这里要复制的是从3~10行的汇编指令。可以肯定的是(1)处填写cs或者codesg都行,因为cs指向了程序指令的开始处。其次我们知道这段程序的代码长度在cx中存放(用debug来调试时)。所以我们可以先在(2)处填上cx,即先让程序能编译链接生成对应的target.exe文件,然后用debug target.exe来对其调试(当然我们并不是真的调试,而是为了查看cx的值是多少),然后输入r后查看cx的值,如果不知道mov ax,4c00h 和int 21h占了多少字节,都可以通过输入u后就可以看到各条命令占了多少字节。获得了总长度之后,再用其减去mov ax,4c00h 和int 21h占用的字节,所得的结果就是(2)出所应该填写的值了。

2.在(1)和(2)出分别填上cs和cx,编译链接之后用debug来调试。

i:代码看起来是这样的:

ii:debug的数据如下:

从以上数据可以得出cx=001bh,而mov ax,4c00h 和int 21h占了5字节,所以可以得知(2)处应该填写001b-0005的值,及0017h。

3.用cs填充(1)处,0017h填充(2)处。代码看起来是这样。

4.调试过程

 

5.小结:这里关键的是就是确定复制时的开始地址和结束地址,

原创粉丝点击