实验二 汇编源程序编写与汇编、调试

任务一:

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指向的就是代码
posted @ 2020-11-05 17:10  ViVoi  阅读(180)  评论(2)    收藏  举报