汇编语言实验报告_第1页
汇编语言实验报告_第2页
汇编语言实验报告_第3页
汇编语言实验报告_第4页
汇编语言实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、福建农林大学东方学院信息工程类实验报告课程名称:汇编语言姓 名:张金凯系:计算机系专 业:电子信息工程年 级:2010学 号:1050302094指导教师:詹仕华职 称:副教授2012 年 6 月 10 日福建农林大学东方学院信息工程类实验报告系: 计算机系 专业: 电子信息工程 年级: 10级 姓名: 张金凯 学号: 1050302094 实验课程: 汇编语言 实验室号:_机房三_ 实验设备号: 094 实验时间: 指导教师签字: 成绩: 实验一:汇编程序调试的基本操作1实验目的和要求:Ø 熟悉汇编程序的汇编、连接、执行过程;Ø 生成.lst文件,查看.lst文件;

2、16; 生成.obj文件,修改语法错误;Ø 生成.exe文件;Ø 执行程序。2实验原理或方案 汇编程序从编写到执行的过程如下: 编程.asm汇编.obj连接.exe加载内存中的程序执行。3主要仪器设备(实验用的软硬件环境) IBM-PC机及其兼容机。 操作系统:DOS 2.0以上;调试程序:DEBUG.COM;文本汇编程序:EDIT.EXE、 WPS.EXE;宏汇编程序:MASM.EXE;连接装配程序:LINK.EXE;4操作方法与实验步骤1) 用EDIT或记事本输入各段,并存储成源程序(保存在MASM目录下),扩展名为.asm。2) 在DOS状态下,进入MASM目录; 输

3、入命令:MASM文件名(可以不输入同扩展名);接着按系统提示操作。3) 如果系统没有提示出错,那么汇编过程就完成了。如果提示错误,则应用EDIT打开源文件进行修改,然后再重复(2)步骤。4) 输入:LINK 文件主名(可以不输入扩展名.obj)5) 没有提示错误,汇编过程就结束了,产生了.exe可执行文件。如果出现“no strack segment”的错误警告,不用理会。6) 执行程序。5实验内容及实验数据记录 (1)将下面的数据段输入,取名1.asm,保存在MASM文件夹下。生成.lst文件(不必连接、运行),用EDIT查看1.lst文件。试回答:DA1、DA2的偏移量分别是多少?COUN

4、T的值为多少?以下是用EDIT查看生成的1.lst文件:由上图就可以读出:DA1的偏移量为20、DA2的偏移量为26、COUNT的值为8.(2)输入下面错误的文件,修改错误语句(MASM没有出现错误即可,不必连接、运行)。 经分析,发现这题出现了六个错误,他们分别是: 1、ODH0DH 2、30030 (位数与DB不符) 3、A4H0A4H (以AF开头的数字前面要加个0) 4、DE:DATADS:DATA 5、MOV SI,0ABH (SI不能作为目的操作数) 6、MOV BX,SI (两内存之间不能直接赋值)(3)、输入下面程序并运行。经运行后,显示的结果是:WELCOME! 。6质疑、建

5、议、问题讨论 这是第一次上汇编实验课,对汇编实验比较陌生,同时也充满了好奇心。实验中特别是针对第二题找出错误并加以改正,确实遇到了不少的问题。但在老师和同学的帮助下,最后终于完成了这次实验任务。通过此次上级实验进行从汇编源程序到最终的可执行文件的生成并运行。加深了我对程序编译连接与运行程序的整个过程的理解,特别是要懂得读懂出错提示,根据提示来找出错误之处并加以修正。这是我们在实验中非常重要的一点。经过这次的实验,也加深了我对汇编浓厚的兴趣。实验二:顺序和分支程序设计1实验目的和要求:Ø 学习使用DEBUG的命令;Ø 使用DEBUG命令在数据段中查看程序运行的结果;Ø

6、; 学习顺序语句的编程和调试;Ø 学习分支语句的编程和调试;Ø 利用DEBUG运行简单的程序段。2实验原理或方案 汇编程序从编写到执行的过程如下: 编程.asm汇编.obj连接.exe加载内存中的程序执行。 DEBUG常用的几种命令:反汇编命令U; 显示存储单元内容命令D; 修改内存内容命令E; 查看或修改寄存器的内容R; 跟踪命令T; 跟踪一条指令或一个子程序P; 运行程序命令G; 在内存写入汇编形式的指令A; 退出DEBUG命令Q。3主要仪器设备(实验用的软硬件环境) IBM-PC机及其兼容机。 操作系统:DOS 2.0以上;调试程序:DEBUG.COM;文本汇编程序:

7、EDIT.EXE、 WPS.EXE;宏汇编程序:MASM.EXE;连接装配程序:LINK.EXE;4实验内容及实验数据记录(1)输入程序观察寄存器变化 使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时CS:IP寄存器的内容。 (2)下列程序单步运行注意AL、BX、CX寄存器的变化,并观察数据段字母的变化。如果是将小写字母改写成大写字母带注释的语句该如何修改?(3)程序的跟踪执行操作 在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,也可能 执行后什么结果都没有,这是因为程序中没有显示命令。那么如何查看程序的运行

8、结果呢? 程序执行过程的跟踪操作步骤如下:Ø 在DOS下输入:DEBUG 文件名.EXEØ 在DEBUG提示符下输入U命令。Ø 可以用T命令单步执行指令,执行到MOV AH,4CH时结束,也可以用G命令执行整个程序。Ø 用D命令查看程序执行后数据段的变化。Ø 在显示的数据中,对照源程序或.lst文件查看结果所在的偏移地址的内容。5实验数据处理与分析 以下是实验内容(1)单步运行的后的截图可以观察到CS:IP在自动增加。6质疑、建议、问题讨论 通过这次实验,我掌握了编写简单的程序,并且高效的运用DEBUG进行调试,以及DEBUG中各指令命令。对顺

9、序和分支程序设计更加的了解。有了第一次实验的经验,这一次的实验并没有遇到什么大问题,很顺利的就完成了本次实验。实验三:循环程序设计1实验目的和要求:Ø 学习调试程序,查找逻辑错误;Ø 学习循环语句的编程和调试。2实验原理或方案 汇编程序从编写到执行的过程如下: 编程.asm汇编.obj连接.exe加载内存中的程序执行。DEBUG常用的几种命令:反汇编命令U; 显示存储单元内容命令D; 修改内存内容命令E; 查看或修改寄存器的内容R; 跟踪命令T; 跟踪一条指令或一个子程序P; 运行程序命令G; 在内存写入汇编形式的指令A; 退出DEBUG命令Q。循环指令:Ø 计数

10、循环指令LOOP:LOOP指令将寄存器CX作递减计数器使用,它包含把CX减1的功能,不需要另外写CX减1的指令。Ø 相等/为零循环指令LOOPE/LOOPZ:首先将CX的值减1后送回到CX,然后判断CX和ZF的值,若(CX)不等于0且ZF=1则转移到目的地址继续执行;若(CX)=0或ZF=0,则退出循环Ø 不相等/不为零循环指令LOOPNE/LOOPNZ: 首先将CX的值减1后送回到CX,然后判断CX和ZF的值,若(CX)不等于0且ZF=0则转移到目的地址继续执行;若(CX)=0或ZF=1,则退出循环3主要仪器设备(实验用的软硬件环境) IBM-PC机及其兼容机。 操作系统

11、:DOS 2.0以上;调试程序:DEBUG.COM;文本汇编程序:EDIT.EXE、 WPS.EXE;宏汇编程序:MASM.EXE;连接装配程序:LINK.EXE;4实验内容及实验数据记录(1)有10个数,统计正数的格式,存放在变量M中。经过汇编后,形成.exe文件。在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL寄存器中的值的变化是否正确(AL寄存器中存放正数的个数。)(2)数据段是一组无符号数,将最小数存放在M单元中,按上图方法查找一处逻辑错误。 5实验数据处理与分析 (1)将

12、各指令正确输入电脑后,用G命令运行后,D命令查看结果,结果显示正数有9个,显然是不正确的。于是开始寻找错误。最后发现,程序中,JBE应该改为JLE,才是正确的。 (2)这一题算是有点小难度了,所以在老师的提示下,我知道了,应该在循环体LOOP指令中加一句INC SI。这样才能完成原题意指定的任务。6质疑、建议、问题讨论 这次的使用的内容还算比较简单的,就是在找错部分遇到了点问题,还有就是当时对JBE和JLE的用法并不是非常的了解。还有对那些隐含条件脑袋里的思路并不是非常的清晰,经过这次实验,我知道了自己要加强对指令的认识,特别要注意比如说MUL和DIV这些隐含指令的重视。同时也学会了更快的查找

13、逻辑错误,和循环语句的编程和调试。实验四:子程序设计1实验目的和要求:Ø 学习子程序的编写,主子程序的调用;Ø 不同模块间程序的调用和调试。2实验原理或方案 子程序的定义: 子程序名 PROC NEAR/FAR ;子程序主体RET子程序名 ENDP3主要仪器设备(实验用的软硬件环境) IBM-PC机及其兼容机。4实验内容及实验数据记录 (1)数据段中的三个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,对CALL语句和RET语句观察SP、IP的变化,并用D命令查看栈顶内容。 (2)阅读S31.asm和S32.asm两个模块中的程序,并分别汇编,然后连

14、接成一个可执行文件S31.exe。 具体步骤如下: MASM S31.ASM(分别汇编) MASM S32.ASM LINK S31+S32(将两个文件连接成一个文件名为S31) S31.EXE(运行) NAME S31.asmNAME S32.asm 5实验数据处理与分析6质疑、建议、问题讨论 经过这么多次的上机实验后,我对具体的操作已经是相当的熟练了。在前几次的实验的基础与学习中不断的吸取教训,此次实验完成的很顺利,但是,粗心大意地编辑程序没有保持分析设计需求时的严谨态度,给自己添了原本不该出现的不少麻烦。在这次实验中,进一步的提高了我发现问题并且解决问题的能力。对子程序的编写也进行了更加

15、深入的了解。实验五:DOS功能调用1实验目的和要求:Ø 学会DOS中关于显示功能调用指令的用法;Ø 领会修改显存方法显示字符。2实验原理或方案Ø MS-DOS的调用工程:1.将系统调用号送AH寄存器; 2.在指定的寄存器中设置有关入口参数; 3.INT 21H 这是DOS的中断处理程序,对于不同的系统调用号,能够完成对不同设备的控制。Ø 返回DOS的系统调用4CH: MOV AH,4CH INT 21HØ 单个字符的输出:AH=02,要显示的字符存于DL中,即入口参数DL=字符的ASCII码: MOV AH,2 MOV DL,a INT 21H

16、Ø 字符串输出:AH=09,要输出的字符串的首地址存于DX寄存器中,即入口参数DS:DX=字符串首地址,字符串必须以 $(24H)结尾:MOV AH,09LEA DX,BUFINT 21HØ 字符输入:AH=01,从键盘输入一个字符。机器会等待键盘输入,输入字符的ASCII码存于AL中: MOV AH,01INT 21HØ 字符串输入:AH=0AH,从键盘输入一个字符串,入口参数DS:DX=缓冲区首地址: MOV AH,0AHMOV DX,BUFINT 21HØ 回车换行: MOV DL,0DH;回车INT 21HMOV DL,0AH;换行INT 21H

17、3主要仪器设备(实验用的软硬件环境) IBM-PC机及其兼容机。 操作系统:DOS 2.0以上;调试程序:DEBUG.COM;文本汇编程序:EDIT.EXE、 WPS.EXE;宏汇编程序:MASM.EXE;连接装配程序:LINK.EXE;4操作方法与实验步骤7) 用EDIT或记事本输入各段,并存储成源程序(保存在MASM目录下),扩展名为.asm。8) 在DOS状态下,进入MASM目录; 输入命令:MASM文件名(可以不输入同扩展名);接着按系统提示操作。9) 如果系统没有提示出错,那么汇编过程就完成了。如果提示错误,则应用EDIT打开源文件进行修改,然后再重复(2)步骤。10) 输入:LINK 文件主名(可以不输入扩展名.obj)11) 没有提示错误,汇编过程就结束了,产生了.exe可执行文件。如果出现“no strack segment”的错误警告,不用理会。12) 执行程序。5实验内容及实验数据记录(1)输入一个字符,显示出来。(2)BUF开始的三个16位二进制数用十六进制数的形式显示出来。Ø 理解程序Ø 输入程序,汇编,运行(在DOS状态下输入:文件名.exe),观察结果Ø

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论