电子科技大学 汇编 实验报告

  • 格式:doc
  • 大小:421.00 KB
  • 文档页数:27

下载文档原格式

  / 27
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机专业类课程

课程名称:汇编语言程序设计

学院:计算机科学与工程

专业:计算机科学与技术

学生姓名:郭小明

学号:2011060100010

日期:2013年12月24日

电子科技大学

实验报告

实验一

学生姓名:郭小明学号:2011060100010

一、实验室名称:主楼A2-412

二、实验项目名称:汇编源程序的上机调试操作基础训练

三、实验原理:

DEBUG 的基本调试命令;汇编数据传送和算术运算指令

MASM宏汇编开发环境使用调试方法

四、实验目的:

1. 掌握DEBUG 的基本命令及其功能

2. 学习数据传送和算术运算指令的用法

3.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程五、实验内容:

编写程序计算以下表达式:

Z=(5X+2Y-7)/2

设X、Y的值放在字节变量VARX、VARY中,结果存放在字节单元VARZ中。

1.编辑源程序,建立一个以后缀为.ASM的文件.

2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第3步。

3.连接目标程序,产生可执行程序。

4.用DEBUG程序调试可执行程序,记录数据段的内容。

六、实验器材(设备、元器件):

PC机,MASM软件平台。

七、实验数据及结果分析:

程序说明:

功能:本程序完成Z=(5X+2Y-7)/2这个等式的计算结果求取。其中X 与Y 是已知量,Z是待求量。

结构:首先定义数据段,两个DB变量VARX与VARY(已经初始化),以及结果存放在VARZ,初始化为?。然后定义堆栈段,然后书写代码段,代码段使用顺序程序设计本程序,重点使用MOV和IMUL以及XOR,IDIV完成程序设计。详细内容见程序注释。

程序清单:

调试说明:

将汇编语言(.asm文件)翻译为目标代码程序(.obj文件)(MASM.exe);

没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe文件),(LINK.exe);

我们成功生成了test1.exe. 然后输入Debug命令进入调试环境,-是debug命令提示符。

我们执行-n test1.exe -l 装入我们的test1.exe 然后我们-u反汇编程序,得到程序的反汇编。

1485显然是我们的数据段逻辑地址

我们来查看一下1485::0000 到1485:1111 这16个字节的内容,理论上应该是05,04,00.……00 05正是V ARX 04 正是V ARY 00 正是V ARZ

正如我们所料

下面是单步调试逐条执行汇编指令的操作。

现在我们执行程序(-g),然后再次查看数据段里面的内容

V ARZ的内容变成了0D

事实上(5*5+4*2-7)/ 2 = 13 就是0D

程序框图:开始

AX与AX进行异或(置零)

CX与CX进行异或(置零)

V ARX →AL

5 →CL

AL = AL * CL

AL →DL

AX与AX进行异或(置零)

九、实验结论:

通过本次实验,我们学习了解掌握了DEBUG 的基本命令及其功能,学习了数据传送和算术运算指令的用法,熟悉了在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。完成了Z = (5*X + 2*Y - 7)/ 2 算术式的编程计算,使用到了以上学习到的知识,并且利用了顺序程序设计的思想。通过本次实验,大大提升了对汇编程序设计这门课实践意义的理解,提高了编程能力和设计水平。

另外在此感谢指导老师的辛勤工作!

电子科技大学

实验报告

实验二

学生姓名:郭小明学号:2011060100010

一、实验室名称:主楼A2-412

二、实验项目名称:分支程序与循环程序设计

三、实验原理:

分支程序设计基本规范与调试方法,

循环程序设计与调试方法;分配与使用寄存器的相关方法

四、实验目的:

1、掌握分支程序的结构。

2、掌握分支程序的设计与调试方法。

3、掌握循环程序设计与调试方法

4、掌握正确分配与使用寄存器。

六、实验内容:

编程实现:分别统计下列20个数中大于5、小于零和大于等于零且小于等于5的数据个数,分别存入字节单元RES1、RES2和RES3中。

BUFF DB -1, 20, 3, 30, -5, 15, 100, -54, 0, 4, 78, 99, -12, 32, 3, 23, -7, 24, 60,-51 六、实验器材(设备、元器件):

PC机,MASM软件平台。

七、实验步骤:

程序说明:

功能:本程序完成对一个数组当中大于5,小于0以及大于等于0小于等于5的数的个数的统计。分别存入字节单元RES1、RES2和RES3中。

结构:首先定义数据段, BUF数组的初始化,以及数组成员个数的统计以备循环时使用,以及结果存放在RES1,RES2,RES3,初始化为0。然后定义堆栈段,然后书写代码段,代码段使用分支与循环程序设计本程序,首先通过LEA 指令获取BUF首地址,然后首地址每次加一之后就可以根据循环次数遍历整个数组,遍历的时候首先将获得数据与0进行比较,如果小于0跳转到BELOW0 (JL BELOW0)标号处执行,若不是的话再与5进行比较,如果小于等于5的话跳转到BELOW5(JLE BELOW5 ;如果小于5则跳转),再然后的话数据必然是属于大于5的范围,由此统计三类数据的个数。详细见程序。

程序清单: