电子科技大学汇编实验报告.docx
《电子科技大学汇编实验报告.docx》由会员分享,可在线阅读,更多相关《电子科技大学汇编实验报告.docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.计算机专业类课程实验报告课程名称:汇编语言程序设计学 院:计算机科学与工程专 业:计算机科学与技术学生姓名:郭小明学 号 :2011060100010日 期 :2013 年 12 月 24 日.电子科技大学实验报告实验一学生姓名:郭小明学 号:2011060100010 一、实验室名称: 主楼A2-412二、实验项目名称:汇编源程序的上机调试操作基础训练三、实验原理:DEBUG 的基本调试命令;汇编数据传送和算术运算指令MASM 宏汇编开发环境使用调试方法四、实验目的:1. 掌握 DEBUG 的基本命令及其功能2. 学习数据传送和算术运算指令的用法3. 熟悉在 PC 机上编辑、汇编、连接、调
2、试和运行汇编语言程序的过程五、实验内容:编写程序计算以下表达式:Z=(5X+2Y-7)/2设 X、Y 的值放在字节变量 VARX、VARY 中,结果存放在字节单元 VARZ 中。1. 编辑源程序,建立一个以后缀为.ASM 的文件.2. 汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中 错误行。无错时继续第 3 步。3. 连接目标程序,产生可执行程序。4. 用 DEBUG 程序调试可执行程序,记录数据段的内容。VARXVARYVARZ541052020六、实验器材(设备、元器件):PC 机 ,MASM 软件平台。七、实验数据及结果分析:程序说明:功能:本程序完成 Z=(5X+2Y-7
3、)/2 这个等式的计算结果求取。其中 X 与 Y 是已知量,Z 是待求量。结构:首先定义数据段,两个 DB 变量 VARX 与 VARY(已经初始化),以及结果存放在 VARZ,初始化为?。然后定义堆栈段,然后书写代码段,代码段使用顺序程序设计本程序,重点使用 MOV 和 IMUL 以及 XOR,IDIV 完成程序设计。详细内容见程序注释。程序清单:调试说明:没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe 文件),(LINK.exe);将汇编语言(.asm 文件)翻译为目标代码程序(.obj 文件)(MASM.exe);我们成功生成了 test1
4、.exe. 然后输入 Debug 命令进入调试环境,-是 debug 命令提示符。我们执行-n test1.exe -l 装入我们的test1.exe然后我们-u 反汇编程序,得到程序的反汇编。1485 显然是我们的数据段逻辑地址我们来查看一下1485 : :0000到1485:1111 这 16 个字节的内容,理 论上应该是05,04,00.0005 正是 VARX04 正是 VARY 00 正是 VARZ正如我们所料下面是单步调试逐条执行汇编指令的操作。.现在我们执行程序(-g),然后再次查看数据段里面的内容VARZ 的内容变成了 0D事实上(5*5+4*2-7)/ 2 = 13 就是 0
5、D开始程序框图:AX 与 AX 进行异或(置零)CX 与 CX 进行异或(置零)VARX AL5 CLALAL=AL * CL DLAX 与AX 进行异或(置零)VARYAL 2 CL.ALAL=AL * CL+ DL ALAL - 7 AL2 CL CL / 2=CLAL VARZ结束VARXVARYVARZ541310526202066九、实验结论:通过本次实验,我们学习了解掌握了 DEBUG 的基本命令及其功能,学习了数据传送和算术运算指令的用法,熟悉了在 PC 机上编辑、汇编、连接、调试和运行汇编语言程序的过程。完成了 Z = (5*X + 2*Y - 7)/ 2 算术式的编程计算,使
6、用到了以上学习到的知识,并且利用了顺序程序设计的思想。通过本次实验,大大提升了对汇编程序设计这门课实践意义的理解,提高了编程能力和设计水平。另外在此感谢指导老师的辛勤工作!.电子科技大学实验报告实验二学生姓名:郭小明学 号:2011060100010 一、实验室名称: 主楼A2-412二、实验项目名称:分支程序与循环程序设计 三、实验原理:分支程序设计基本规范与调试方法,循环程序设计与调试方法;分配与使用寄存器的相关方法四、实验目的:1、掌握分支程序的结构。2、掌握分支程序的设计与调试方法。3、掌握循环程序设计与调试方法4、掌握正确分配与使用寄存器。六、实验内容:编程实现:分别统计下列 20
7、个数中大于 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 数组的初始化,以及数组成员个数的统计以备循
8、环时使用,以及结果存放在 RES1,RES2,RES3,初始化为 0。然后定义堆栈段,然后书写代码段,代码段使用分支与循环程序设计本程序,首先通过 LEA 指令获取 BUF 首地址,然后首地址每次加一之后就可以根据循环次数遍历整个数组,遍历的时候首先将获得数据与 0 进行比较,如果小于 0 跳转到 BELOW0(JL BELOW0)标号处执行,若不是的话再与 5 进行比较,如果小于等于 5 的话跳转到 BELOW5(JLE BELOW5 ;如果小于 5 则跳转 ),再然后的话数据必然是属于大于 5 的范围,由此统计三类数据的个数。详细见程序。程序清单:调试说明:将汇编语言(.asm 文件)翻译
9、为目标代码程序(.obj 文件)(MASM.exe);没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe 文件),(LINK.exe);我们成功生成了 test1.exe. 然后输入 Debug 命令进入调试环境,-是 debug 命令提示符。我们进入了 debug 程序调试环境现在我们反汇编该程序显然 1485 是我们数据段的首地址,我们来看看程序运行之前数据段里面的值,我们的数据段里面应该存放至 20 个数据值还有就是 3 个存放结果的值(初始都是 0)正如我们所料想的。下面是单步调试的结果。下面我们执行程序并查看运行程序之后的数据段里面的数据值
10、。我们返现后面三个值变化了,确实分别记录了数组当中大于5,小于0 以及大于等于 0 小于等于 5 的三类数据的个数,与事实相符,验证我们的程序设计是正确的。得出: 大于 5 的数据共有:10 个小于 0 的数据共有:6 个大于等于 0 小于等于 5 的数据共有 4 个程序框图:开始取出表 BUF 的首地址放入 SI 当中COUNT CXNO结束CX>0?YESSI ALRES2RES2+1 YESAL<0?SI +1 SINOYESAL<=5?RES3 +1 RES3NORES1 + 1=RES1九、实验结论:通过本次实验,掌握了分支程序的结构特点,学习了分支程序的设计和调试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 汇编 实验 报告
限制150内