汇编语言实验报告模版(带封面).doc

上传人:jian****018 文档编号:9065966 上传时间:2020-04-02 格式:DOC 页数:9 大小:158.50KB
返回 下载 相关 举报
汇编语言实验报告模版(带封面).doc_第1页
第1页 / 共9页
汇编语言实验报告模版(带封面).doc_第2页
第2页 / 共9页
汇编语言实验报告模版(带封面).doc_第3页
第3页 / 共9页
点击查看更多>>
资源描述
课 程 实 验 报 告 课程名称 汇编语言程序设计 实验名称 实验一 分支循环程序设计 实验时间 2016 9 14 14 30 18 00 实验地点 南一楼 116室 15号实验台 指导教师 专业班级 信息安全 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 2 xxx 5 4 体会 5 参考文献 6 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的立方值 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 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 录入错误 写成了中文 开始 提示用户从键盘输入一个数字 用 1号系统功能调用从键盘接收一数字 x的 ASCII码 结束 x的真值 AL X x的真值 EBX TAB 2 EBX XXX 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 TAB EBX 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 个步骤是所有编程实验需要经历的 在后续实验报告中可以适当简化 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 TAB EBX 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 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 TAB EBX 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 2 xxx 4 体会 通过上机 不仅提高了编程水平 熟悉了工具的使用 而且加深了对一些知识的理解 首先 更加感受到实验前准备的意义 例如 上机前准备越充分 如先编好源程序 制定好 准备做的一些步骤 上机的时候目的越明确 可以解决较多的问题 其次 本次上机的具体收获有 1 录入程序时要注意一些细节 比如中文分号 字母 O等 问题 虽然汇编程序指出其所在行有错 但很难发现具体是哪个符号错了 耽误了不少时间 2 比较清楚地认识了源程序中的寻址方式在 TD中转换成了什么形式 3 了解了数据在段中 存放的方式 4 实际体会了 在 9号功能调用中的作用 5 观察到了异常输入对程序结果 的影响等 6 TD 在程序细节的观察 动态修改方面有很大的作用 最后 由于操作不够熟练 时间比较紧张等原因 还有些问题需要以后进一步解决 如堆栈 中数据变化的原因 各个段在内存中存放的关系 是否可跟踪到 INT 21H中去 多次调入程序时 初始的段值是否相同等等 参考文献 序号 作者 书名 版本 第 版 译者 出版地 出版者 出版年 起页 止页 序号 URL 网络地址 如 URL http www cbs dtu dk services 备注 本样例是针对程序设计类型的实验编写的 如果是验证性实验 研究性实验等实验类型 部分标题下的内容是可以调整的 具体调整要求见每次布置题目时老师给出的说明 请用 A4纸双面打印 除了标题之外的正文用 5号宋体 1 25倍行距 图表用小 5号宋体
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!