电子科技大学 汇编 实验报告.docx
- 文档编号:9731283
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:26
- 大小:604.43KB
电子科技大学 汇编 实验报告.docx
《电子科技大学 汇编 实验报告.docx》由会员分享,可在线阅读,更多相关《电子科技大学 汇编 实验报告.docx(26页珍藏版)》请在冰点文库上搜索。
电子科技大学汇编实验报告
计算机专业类课程
实验报告
课程名称:
汇编语言程序设计
学 院:
计算机科学与工程
专 业:
计算机科学与技术
学生姓名:
郭小明
学 号:
2011060100010
日 期:
2013年12月24日
电子科技大学
实验报告
实验一
学生姓名:
郭小明学号:
*************
一、实验室名称:
主楼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程序调试可执行程序,记录数据段的内容。
VARX
VARY
VARZ
5
4
10
5
20
20
六、实验器材(设备、元器件):
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命令提示符。
我们执行-ntest1.exe-l装入我们的test1.exe然后我们-u反汇编程序,得到程序的反汇编。
1485显然是我们的数据段逻辑地址
我们来查看一下1485:
:
0000到1485:
1111这16个字节的内容,理论上应该是05,04,00.……0005正是VARX04正是VARY00正是VARZ
正如我们所料
下面是单步调试逐条执行汇编指令的操作。
现在我们执行程序(-g),然后再次查看数据段里面的内容
VARZ的内容变成了0D
事实上(5*5+4*2-7)/2=13就是0D
程序框图:
VARX
VARY
VARZ
5
4
13
10
5
26
20
20
66
九、实验结论:
通过本次实验,我们学习了解掌握了DEBUG的基本命令及其功能,学习了数据传送和算术运算指令的用法,熟悉了在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
完成了Z=(5*X+2*Y-7)/2算术式的编程计算,使用到了以上学习到的知识,并且利用了顺序程序设计的思想。
通过本次实验,大大提升了对汇编程序设计这门课实践意义的理解,提高了编程能力和设计水平。
另外在此感谢指导老师的辛勤工作!
电子科技大学
实验报告
实验二
学生姓名:
郭小明学号:
2011060100010
一、实验室名称:
主楼A2-412
二、实验项目名称:
分支程序与循环程序设计
三、实验原理:
分支程序设计基本规范与调试方法,
循环程序设计与调试方法;分配与使用寄存器的相关方法
四、实验目的:
1、掌握分支程序的结构。
2、掌握分支程序的设计与调试方法。
3、掌握循环程序设计与调试方法
4、掌握正确分配与使用寄存器。
六、实验内容:
编程实现:
分别统计下列20个数中大于5、小于零和大于等于零且小于等于5的数据个数,分别存入字节单元RES1、RES2和RES3中。
BUFFDB-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
(JLBELOW0)标号处执行,若不是的话再与5进行比较,如果小于等于5的话跳转到BELOW5(JLEBELOW5;如果小于5则跳转),再然后的话数据必然是属于大于5的范围,由此统计三类数据的个数。
详细见程序。
程序清单:
调试说明:
将汇编语言(.asm文件)翻译为目标代码程序(.obj文件)(MASM.exe);
没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe文件),(LINK.exe);
我们成功生成了test1.exe.然后输入Debug命令进入调试环境,-是debug命令提示符。
我们进入了debug程序调试环境
现在我们反汇编该程序
显然1485是我们数据段的首地址,我们来看看程序运行之前数据段里面的值,我们的数据段里面应该存放至20个数据值还有就是3个存放结果的值(初始都是0)
正如我们所料想的。
下面是单步调试的结果。
下面我们执行程序并查看运行程序之后的数据段里面的数据值。
我们返现后面三个值变化了,确实分别记录了数组当中大于5,小于0以及大于等于0小于等于5的三类数据的个数,与事实相符,验证我们的程序设计是正确的。
得出:
大于5的数据共有:
10个
小于0的数据共有:
6个
大于等于0小于等于5的数据共有4个
程序框图:
九、实验结论:
通过本次实验,掌握了分支程序的结构特点,学习了分支程序的设计和调试方法,掌握了循环程序的结构特点并学习了循环程序的设计和调试方法,本程序完成对一个数组当中大于5,小于0以及大于等于0小于等于5的数的个数的统计,运用了循环程序设计的思想,本实验的原理框图较为复杂,但是框图给出了明确的思路和解题方向,是很好的学习方法。
本次程序设计实验运用了数个跳转指令,JL,JLE,跳转指令在循环程序设计过程中具有很重要的特点。
另外在此感谢指导教师的辛勤工作!
第二次实验共计两个程序,要求二选一,现在两个题目都做出解答(实验三实验四)如下,供老师批阅!
电子科技大学
实验报告
实验三
学生姓名:
郭小明学号:
2011060100010
一、实验室名称:
主楼A2-412
二、实验项目名称:
串操作及其应用程序的设计与调试运行
三、实验原理:
串操作程序设计基本规范与调试方法;MASM宏汇编开发环境使用方法
循环程序设计与调试方法;分配与使用寄存器的相关方法
五、实验目的:
1、熟悉串操作指令的基本格式和使用方法。
2、掌握常用的串操作程序的设计方法。
3、熟悉串操作程序的调试运行过程
七、实验内容:
编程实现:
编制一程序,从键盘输入两个长度不同的字符串,设字符串长度小于25个字符。
要求在屏幕上以右边对齐的方式显示出来。
六、实验器材(设备、元器件):
PC机,MASM软件平台。
八、实验步骤:
程序说明:
功能:
本程序完成两个字符串的键盘输入并且右对齐输出字符串。
结构:
1、在数据段中设置两个存放显示信息的字符串,一个是提示用户输入,另一个是提示显示信息位置
2、在数据段中设置两个存放输入字符串的缓冲区
3、输入字符串曹勇0AH号DOS功能调用,字符串存入缓冲区时,第二个字节为实际输入字符串的长度,从第三个字节开始为字符串的ASCII码。
4、为了显示右对齐,由于两个字符串缓冲区的长度相同,只需要将两个字符串向缓冲区后面靠齐,再调用09H号DOS功能调用即可达到显示的右对齐。
程序清单:
调试说明:
将汇编语言(.asm文件)翻译为目标代码程序(.obj文件)(MASM.exe);
没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe文件),(LINK.exe);
我们成功生成了test3.exe.然后输入Debug命令进入调试环境,-是debug命令提示符。
我们进入了debug程序调试环境
现在我们反汇编该程序
下面是单步调试的过程
下面运行该程序:
正如我们所料想的。
我们输入-g调试命令之后,提示输入字符串,在输入两个字符串之后就右对齐的输出了两个字符串。
程序框图:
结束
九、实验结论:
本实验完成了串操作指令及其应用程序的设计与调试运行实验,学习了汇编语言程序设计过程中的数据输入方法和字符串存储特点,以及利用串操作命令来将缓冲区大小一致的两个字符串右对齐输出。
本次实验很有难度,提升了我们设计复杂汇编程序的能力。
在此感谢指导教师的辛勤指导!
电子科技大学
实验报告
实验四
学生姓名:
郭小明学号:
2011060100010
一、实验室名称:
主楼A2-412
二、实验项目名称:
数制、码制和子程序的编制与调试
三、实验原理:
数制、码制和子程序设计基本规范与调试方法;
MASM宏汇编开发环境使用方法;
循环程序设计与调试方法;
分配与使用寄存器的相关方法
四、实验目的:
1、熟悉子程序设计的基本格式和使用方法。
2、掌握常用的数制码制转换程序的设计方法。
3、熟悉子程序程序的调试运行过程
五、实验内容:
从键盘输入两个2位十进制正数,对这两个正数进行加法运算,结果以十六进制数的形式显示在屏幕上。
六、实验器材(设备、元器件):
PC机,MASM软件平台。
七、实验步骤:
程序说明:
本实验用到了两个子程序,一个是将十进制数转换成二进制数的子程序DTOB,还有就是讲二进制数转换为十六进制数的BTOH。
在程序运行的时候我们首先输入两个十进制数,然后分别转换为二进制数(利用子程序DTOB)之后加法计算出二进制结果然后我们再利用子程序BTOH转出16进制最终结果。
程序清单:
DATASEGMENT
STR1DB3,0,3DUP(?
)
STR2DB3,0,3DUP(?
)
TEMPSTRDB?
RESSTRDB0,0,'$'
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK1,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS,AX
LEADX,STR1
MOVAH,0AH
INT21H
LEADX,STR2
MOVAH,0AH
INT21H
CALLDTOB
CALLBTOH
LEADX,RESSTR
MOVAH,9
INT21H
MOVAH,4CH
INT21H
DTOBPROC
PUSHAX
PUSHCX
PUSHDX
MOVAL,STR1+2
SUBAL,30H
MOVDL,10
MULDL
ADDAL,STR1+3
SUBAL,30H
MOVTEMPSTR,AL
MOVAL,STR2+2
SUBAL,30H
MOVDL,10
MULDL
ADDAL,STR2+3
SUBAL,30H
ADDAL,TEMPSTR
MOVTEMPSTR,AL
POPDX
POPCX
POPAX
RET
DTOBENDP
BTOHPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVCH,2
MOVDL,TEMPSTR
LEABX,RESSTR
CONV:
MOVCL,4
ROLDL,CL
MOVAL,DL
ANDAL,0FH
CMPAL,09H
JLEASCI
ADDAL,07H
ASCI:
ADDAL,30H
MOV[BX],AL
INCBX
DECCH
JNECONV
POPDX
POPCX
POPBX
POPAX
RET
BTOHENDP
CODEENDS
ENDBEGIN
调试说明:
将汇编语言(.asm文件)翻译为目标代码程序(.obj文件)(MASM.exe);
没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe文件),(LINK.exe);
我们成功生成了test4.exe.然后输入Debug命令进入调试环境,-是debug命令提示符。
我们进入了debug程序调试环境
现在我们反汇编该程序
下面是单步调试的过程
下面运行该程序:
正如我们所料想的。
我们输入-g调试命令之后,提示输入数据,在输入两个数据10和18之后我们得出了10+18的十六进制结果1E,然后程序结束。
八、实验结论:
本实验完成了数制,码制子程序调试设计及其应用程序的设计与调试运行实验,学习了汇编语言程序设计过程中的数据输入方法和字符串存储特点,以及利用码制转换将两个十进制数相加并以十六进制形式输出。
在此感谢指导教师的辛勤指导!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 汇编 实验报告 实验 报告