汇编语言实验报告模版(带封面).doc_第1页
汇编语言实验报告模版(带封面).doc_第2页
汇编语言实验报告模版(带封面).doc_第3页
汇编语言实验报告模版(带封面).doc_第4页
汇编语言实验报告模版(带封面).doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

课课 程程 实实 验验 报报 告告 课程名称:课程名称: 汇编语言程序设计汇编语言程序设计 实验名称:实验名称: 实验一实验一 分支循环程序设计分支循环程序设计 实验时间:实验时间: 2016-9-142016-9-14,1414:30-1830-18:0000 实验地点:实验地点: 南一楼南一楼 116116 室室 1515 号实验台号实验台 指导教师:指导教师: 专业班级:专业班级:信息安全信息安全 201501 班班 学学 号:号: U201514822 姓姓 名:名: 王雪安王雪安 同组学生:同组学生: 无无 报告日期:报告日期: 2016 年年 9 月月 14 日日 计算机科学与技术学院计算机科学与技术学院 一、原创性声明一、原创性声明 本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用 已经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经 公开发表的作品或成果,不存在剽窃、抄袭行为。 特此声明! 学生签字: 日 期: 二、评语与成绩评定二、评语与成绩评定 1.指导老师评语 2.实验成绩评定 实验完成质量得分(70 分) (实验步骤清晰详细深入, 实验记录真实完整等) 报告撰写质量得分(30 分) (报告规范、完整、通顺、 详实等) 总成绩(100 分) 指导教师签字: 日 期: 目录目录 1实验目的与要求 .1 2实验内容 .1 3实验过程 .1 3.1任务 1.1 3.1.1设计思想及存储单元分配.1 3.1.2流程图.2 3.1.3源程序.2 3.1.4实验步骤.3 3.1.5实验记录.4 3.2任务 2.5 3.2.1设计思想及存储单元分配.5 3.2.2xxx.5 4体会 .5 参考文献 .6 汇汇 编编 语语 言言 程程 序序 设设 计计 实实 验验 报报 告告 1 1实验目的与要求实验目的与要求 掌握基本的程序设计框架和方法、熟悉常用指令的用法、熟悉 DOS 功能调用、进一步掌握 TD 的使用方法。 2实验内容实验内容 任务 1:从键盘上键入 0 至 9 中任一自然数 x,求其立方值。 任务 2:XXX 3实验过程实验过程 3.1 任务任务 1 3.1.1设计思想及存储单元分配设计思想及存储单元分配 求一个数的立方值可以用乘法运算实现,也可以造一立方表,运行时查表实现。依据本次实 验的要求,此处用查表法。 输入数据为 0 至 9 中任一自然数(可以考虑判断输入值的范围是否合乎要求) ,用一字节单元 存放其值;输出数据是该数的立方,用一字单元存放其值。 1.存储单元分配 X:字节变量 X 中存放键入的自然数 x。 XXX:字变量 XXX 中存放 x 的立方值。 TAB:立方表的首地址。表中共 10 项,每项占一个字,依次存放 0-9 的立方值。从表的结构 可知,x 的立方值在表中的存放地址与 x 有如下的对应关系: (TAB + 2 * x) = x 的立方值 对于每个键入的 x,从字单元 TAB + 2 * x 之中取出的数据便是其立方值。 从键盘接受数字使用 1 号系统功能调用,此时送入 AL 之中的是 x 的 ASCII 码而不是 x 的真值。 所以,要首先将 x 的 ASCII 码换成 x 的真值,然后用 TAB + 2 * x 计算 x 的立方值的存放地址, 按此地址查到 x 的立方值。 汇汇 编编 语语 言言 程程 序序 设设 计计 实实 验验 报报 告告 2 INPUT:字节存储区,用于存放提示信息。 2.寄存器分配 EBX:存放 x 的真值,利用带比例因子的变址寻址方式访问立方表。 AX、DX:临时寄存器。 3.1.2流程图流程图 图 3.1 是任务 1 求一个数的立方值的程序流程图。 图 3.1 计算立方值的程序流程图 3.1.3源程序源程序 .386 STACK SEGMENT USE16 STACK DB 200 DUP(0) STACK ENDS DATA SEGMENT USE16 INPUT DB PLEASE INPUT X(0-9):$ TAB DW 0,1,8,27,64,125,216,343,512,729 开始 提示用户从键盘输入一个数字 用 1 号系统功能调用从键盘接收一数字 x 的 ASCII 码 结束 x 的真值 AL X x 的真值 EBX (TAB + 2 * EBX) XXX 汇汇 编编 语语 言言 程程 序序 设设 计计 实实 验验 报报 告告 3 X DB ? XXX DW ? DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN: MOV AX, DATA MOV DS, AX MOV DX, OFFSET INPUT MOV AH, 9 INT 21H ;显示 PLEASE INPUT X(0-9): /录入错误:“;”写成了中文 MOV AH, 1 INT 21H ;从键盘接受一数字 x 的 ASCII 码 AND AL, 0FH /录入错误: 数字“0”敲成了字母“O” MOV X, AL ;x 的真值 AL X MOV EBX,AL ;x 的真值 EBX /设计错误,应改成:XOR EBX, EBX MOV BL, AL MOV AX, TABEBX*2 ; (TAB + 2 * EBX) AX MOV XXX, AX ; 保存立方值 MOV AH, 4CH INT 21H CODE ENDS END BEGIN 3.1.4实验步骤实验步骤 1. 使用编辑程序 EDIT.EXE 录入源程序,存盘文件名为 CUBE.ASM。 2. 使用 MASM5.0 或 6.0 汇编源文件。即 MASM CUBE; 3. 观察提示信息,若出错,则用编辑程序修改错误,存盘后重新汇编,直至不再报错为止。 4. 使用连接程序 LINK.EXE 将汇编生成的 CUBE.OBJ 文件连接成执行文件。 即 LINK CUBE; 5. 若连接时报错,则依照错误信息修改源程序。之后重新汇编和连接,直至不再报错并生成 CUBE.EXE 文件。 6. 执行该程序。即在命令行提示符后输入 CUBE 后回车,观察执行现象。 (以上 6 个步骤是所有编程实验需要经历的,在后续实验报告中可以适当简化) 汇汇 编编 语语 言言 程程 序序 设设 计计 实实 验验 报报 告告 4 7. 使用 TD.EXE 观察 CUBE 的执行情况。即 TD CUBE.EXE 回车 (1)观察 CS、IP、SP、DS、ES、SS 的值。 (2)单步执行开始 2 条指令,观察 DATA 的实际值,以及 DS 的改变情况。 (3)观察 SS:0 至 SS:SP 区域的数据值。 (4)观察 DS:0 开始数据区,找到各变量在数据段中的位置和值。 (5)观察第三条语句中源操作数的值,是否和 INPUT 变量的偏移地址相同。 (6)执行第 3 至 7 条指令,输入数字 3。观察 AL 的值是否为 33H。 (7)执行到 MOV AX, TABEBX*2,观察源操作数的具体值。 (8)执行 MOV XXX, AX,观察目的操作数的形式。到数据段中观察 XXX 的值是否是 3 的立方 值。 8. 将程序重新装入 TD 中(或将 CS:IP 重置到 MOV AH,9 的位置) ,在执行 9 号功能调用之 前,用 TD 将数据段中 INPUT 缓冲区的$ (24H)改成其他数值(如 00H) ,再执行 9 号功能调用, 观察现象。 9. 当调用 1 号功能时,若输入大写字母A ,则送到 XXX 的值是哪个存储单元的值;若输入 的是K ,则送到 XXX 的值又是哪个存储单元的值。 (以上 3 个步骤是针对实验要求和每个人自己在学习中不太理解的内容设计的) 3.1.5实验记录实验记录 (包括实验条件、输入/输出、错误和修改等信息的记录) 1、实验环境条件:P3 1GHz,256M 内存;WINDOWS 2000 命令行窗口;EDIT.EXE 2.0;MASM.EXE 6.0; LINK.EXE 5.2; TD.EXE 5.0。 2、汇编源程序时,汇编程序报了 3 个错误。它们是: CUBE.asm(17): error A2044: invalid character in file CUBE.asm(22): error A2022: instruction operands must be the same size CUBE.asm(20): error A2006: undefined symbol : OFH 按照提示,对对应行仔细检查,发现了错误原因。见源程序中“/”后的说明。 3、连接过程没有发生异常。 4、执行之后在新的一行上显示了字符串 PLEASE INPUT X(0-9): 5、输入 3 之后在冒号后显示了一个 3。 6、程序退出到命令行提示符。 7、用 TD 调入 CUBE.EXE 后 (1)(CS)=0B0AH、(IP)=0000H、(SP)=00C8H、(DS)=0AEAH、(ES)=0AEAH、(SS) =0AFAH。 (2)单步执行开始 2 条指令,DATA 的值=0B07H,(DS)0B07H。 汇汇 编编 语语 言言 程程 序序 设设 计计 实实 验验 报报 告告 5 (3)SS:0 至 SS:SP 区域的数据值在程序没有执行时均为 0。单步执行一次后靠近栈顶的 几个字发生了变化,不知为何? (4)DS:0 开始数据区存放了 INPUT 变量为首址定义的字符串。EA=15H 开始存放 TAB 立 方值表。EA=29H 存放 X(当前值为 0) ;EA=30H 存放 XXX(当前值为 0) 。 (5)TD 中显示的第三条语句为 MOV DX,0000,源操作数的值和 INPUT 变量的偏移地址 相同(均为 0) 。 (6)输入数字 3。AL 的值从 24H 变成了 33H。 (7)MOV AX, TABEBX*2在 TD 显示的形式为 MOV AX,2*EBX+00000015说明 TAB 代表的 EA=00000015H,且是按照双字处理的。 (8)MOV XXX, AX 在 TD 显示的形式为 MOV 002A,AX。执行后 DS:(002A)=001BH(即 27)是 3 的立方值。 8. 略(留给同学们观察后记录。 ) 9. 略(留给同学们观察后记录。 ) 3.2 任务任务 2 3.2.1设计思想及存储单元分配设计思想及存储单元分配 3.2.2xxx 4 4体会体会 通过上机,不仅提高了编程水平,熟悉了工具的使用,而且加深了对一些知识的理解。 首先,更加感受到实验前准备的意义。例如:上机前准备越充分(如先编好源程序,制定好 准备做的一些步骤) ,上机的时候目的越明确,可以解决较多的问题。 其次,本次上机的具体收获有:(1)录入程序时要注意一些细节,比如中文分号、字母 O 等 问题,虽然汇编程序指出其所在行有错,但很难发现具体是哪个符号错了,耽误了不少时间。 (2)比较清楚地认识了源程序中的寻址方式在 TD 中转换成了什么形式。 (3)了解了数据在段中 存放的方式。 (4)实际体会了“$”在 9 号功能调用中的作用。 (5)观察到了异常输入对程序结果 的影响等。 (6)TD 在程序细节的观察、动态修改方面有很大的作用。 最后,由于操作不够熟练,时间比较紧张等原因,还有些问题需要以后进一步解决,如堆栈 中数据变化的原因、各个段在内存中存放的关系、是否可跟踪到 INT 21H 中去、多次调入程序时 汇汇 编编 语语 言言 程程 序序 设设 计计 实实 验验 报报 告告 6 初始的段值是否相同等等。 汇汇 编编 语语 言言 程程 序序 设设 计计 实实 验验 报报 告告 7 参考文献参考文献 序号 作者

温馨提示

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

评论

0/150

提交评论