实验二 汇编源程序编写与汇编、调试
任务一:
1.使用notepad++编写ex1.asm文件


2. 链接目标文件生成可执行文件


3.显示屏上有如下图案

4. 使用debug工具对ex1.exe文件进行调试
5.查看寄存器CX得到反汇编个数

6.一次性调试到002D
7.得到如下所示结果

任务2:
1.notepad++编写ex2.asm

2.对ex2.asm文件编译、链接

3. 屏幕出现如下图案

4.对ex2.exe文件进行反汇编调试


5.屏幕上得到如下图案

6.把ex2.asm中line9 mov cx, 4 改成 mov cx, 8 ,保存后重新汇编、链接、运行并观察结果。

7.重新编译链接ex2.exe

8.得到如下图案

通过对比发现,改变前后的结果不同可能是由于循环的次数不相同,mov cx,4所表示的意思是将循环进行4次,mov cx,8是将循环进行8次,一个得出的是4个图案,另一个得出的是8个图案,ex1.asm也循环了四次,出现的也是4个图案。
任务3:
1.使用notepad++编写程序

2. 对ex3.asm源程序编译、链接

3.清空屏幕,执行文件,得到如下图案

4.把填充的字数据,从0237H 改成0239H,再次保存后,汇编、链接、运行,观察结果。

5.把填充的字数据,从0237H 改成0437H,再次保存后,汇编、链接、运行,观察结果。

6.猜测并分析,这个字数据中高位字节里存放的是什么信息,低位字节里存放的是什么信息。
通过对比发现,当高位字节改变时,运行结果的颜色进行了改变,当低位字节改变时,运行结果的内容进行了改变。
任务4:
1.notepad++编写源程序

2.编译、链接ex4.exe

3.使用deug反汇编

4.分布调试


5.使用d命令查看内存数据,可以看到实现了向内存0:200~0:23F依次传送数据0~63(3FH)的功能。

任务5:
1.使用notepad++编写ex5.asm

2.因为需要将 mov ax,4c00h 前的代码复制到内存 0:200 处,所以需要先确认复制的长度。第一空填cs,第二问先随意填数,对代码进行反汇编。


3.由图可知,mov ax,4c00命令在0018,所以应该将0017赋给cx,查看内存,成功将 mov ax,4c00h 前的代码复制到内存 0:200 处

总结:
加深了对以下知识的进一步理解
- 1、理解CS和CODE的关联
- 2、理解CS保存程序的代码段,即“复制的是什么,从哪里到哪里”
- 3、理解CX在载入程序后保存程序的长度。
- 4、理解数据和代码对CPU来说是没区别的,只要CS:IP指向的就是代码

浙公网安备 33010602011771号