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

1. 实验任务1

此部分书写内容:

  • 给出ex1.asm源代码
  • 给出使用masm、link工具汇编、链接的命令行及运行结果截图
  • 给出使用debug调试的截图

  包括:

  1. 结合可执行文件加载后寄存器CX的值,使用u命令精确反汇编截图
  2. 查看PSP的命令及截图
  3. 使用g命令执行到line16退出执行之前,操作截图

实验结论:

ex1.asm源代码

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

 

 masm、link工具汇编、连接的命令行及运行结果

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

 

 debug调试截图。cx=0031,是要u命令精确反汇编。

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

 

 查看psp的命令:-d 075A:0 L100(由于PSP首地址是SA:0,而SA=CS-10且占256个字节)

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

 

 使用g命令执行到line16退出执行之前

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

 

 

2. 实验任务2

此部分书写内容:

  • 给出ex2.asm源代码
  • 给出使用masm、link工具汇编、链接的命令行及运行结果截图
  • 给出使用debug调试的截图

  包括:

  1. 结合可执行文件加载后寄存器CX的值,使用u命令精确反汇编截图
  2. 灵活使用t命令、p命令、g命令,对ex2.exe进行调试的截图(不一定要单步,有些地方可以用g命令,一次执行多行汇编指令)
  3. 把ex2.asm中line9  mov cx, 4 改成  mov cx, 8 ,保存后重新汇编、链接、运行并观察结果。
  4. 结合上述实验和观察,分析、对比ex2.asm和ex1.asm,它们实现的是否是相同的功能和效果?在具体实现上有什么不同?

实验结论:

ex2.asm源代码

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

使用masm、link工具汇编、链接的命令行及运行结果

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

 

 debug调试,cx=001C,使用u命令精确反汇编

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

 

 对ex2.exe进行调试

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

 

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

 

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

把ex2.asm中line9 mov cx, 4 改成 mov cx, 8 ,保存后重新汇编、链接、运行并观察结果 实验2 汇编源程序编写与汇编、调试

结合上述实验和观察,分析、对比ex2.asm和ex1.asm,它们实现的是否是相同的功能和效果?在具体实现上有什么不同?

ex1.asm和ex2.asm实现了相同的效果和功能,具体实现上ex1.asm是直接在内存地址中存入数据,而ex2.asm则是通过循环体loop在相同的内存地址中存入数据。

 

3. 实验任务3

 

此部分书写内容:

 

  • 给出源代码
  • 给出运行结果截图
  • 基于以下实验操作的发现和文字说明

 

  包括:

 

  1. 把填充的字数据,从0237H改成0239H,再次保存后,汇编、链接、运行,观察结果。
  2. 把填充的字数据,从0237H改成0437H,再次保存后,汇编、链接、运行,观察结果。
  3. 猜测并分析,这个字数据中高位字节里存放的是什么信息,低位字节里存放的是什么信息。

实验结论:

ex3.asm

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

 

 运行结果

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

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

 

 把 0237H改成0239H

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

 

 把0237H改成0437H

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

 

 这个字数据高位字节里存放的是输出的颜色信息,低位字节里存放的是输出的内容信息。

4. 实验任务4

此部分书写内容:

  • 程序源代码
  • 汇编、链接无误后,灵活使用debug的t命令、g命令、p命令调试,用d命令查看0:200~0:23F,确认是否将0~63传送至此段内存区域。这部分,要求有截图。

实验结论

程序源代码

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

 

 汇编、链接、调试

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

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

 

 

5. 实验任务5

此部分书写内容:

  • 填空以后的源代码
  • 汇编连接后,灵活使用debug的t命令、g命令、p命令调试,用d命令查看0:200之后的若干字节,观察是否将mov ax, 4c00h之前的指令复制到指定内存,这部分要求有截图,并以文字方式说明空白处填写依据。

实验结论

源代码

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

 

 汇编、链接、调试

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

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

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

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

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

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

用d命令查看0:200之后的若干字节,用u命令进行反汇编发现代码复制成功 实验2 汇编源程序编写与汇编、调试

 

因为要复制mov ax,4c00之前的代码所以cx循环次数应该为指令长度减去5个字节(或者00到16)为17H个字节。

五.实验总结 用r命令出现的cx的值是指令长度,而在asm中使用loop循环的cx值则为循环次数。 T命令:单步执行,每bai次只执行一条代du码语句,遇到子程序后进入子程序逐条执行指令; P命令:类似T命令,若有子程序,直接执行完子程序全部指令而不是逐条执行指令,在遇到循环指令时,会直接执行至CX递减至0;  
上一篇:CentOS7的udev的绑定规则


下一篇:【ASM】ASMSNMP用户已存在