西安交大汇编实验报告(2).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言第二次实验报告 计算机11班 2110505018 司默涵 2013年5月25日 80X86汇编语言程序设计课内实验报告 班级 计算机11 实验时间 2013/ 姓名 司默涵 学号 2110505018 实验内容概述 实验一 子程序及 DOS/BIOS 调用程序设计 题6.9 设有10 个学生的成绩分别是76,69,84,90,73,88,99,63,100 和80 分。 试编制一个子程序统计60~69 分,70~79 分,80~89 分,90~99 分和100 分的人数并分别存放到S6, S7, S8, S9 和S10 单元中。 实验二 高级汇编语言技术 题7.11 试编写一段程序,完成以下功能:若给定名为X 的字符串长度大于5 时,下列指令将汇编10 次。 ADD AX, AX (要求:使用条件汇编,编译过程中生成LST 文件,查看宏展开情况) 实验三 输入输出程序设计 编写程序,使类型1CH 的中断向量指向中断处理程序COUNT,COUNT 统计1CH 中断次数并存入单元M 中。 实验四 BIOS 和DOS 中断 题9.2 编写一个程序,接收从键盘输入的10 个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT 指令变换)存入内存缓冲区BUFFER。 加密表为: 输入数字: 0,1,2,3,4,5,6,7,8,9 密码数字: 7,5,9,1,3,6,8,0,2,4 实验步骤 第一题: 在主程序中调用子函数count,完成将每个在数组mark里的成绩一一取出,分别判定其大小而放入统计60~69 分,70~79 分,80~89 分,90~99 分和100 分的人数的S6, S7, S8, S9 和S10 单元中,在屏幕上依次显示出S6, S7, S8, S9 和S10中的数。 第二题: 使用条件汇编和重复汇编。判断当给定名为X 的字符串长度大于5 时,重复 ADD AX, AX 10 次。 第三题: 使类型1CH 的中断向量指向中断处理程序COUNT,COUNT中 1CH 中断每调用一次则给num加一,计算出num最后的值后存入单元M 中。 第四题: 接收从键盘输入的10 个十进制数字,输入回车符则停止输入, 在bx里存入数组7,5,9,1,3,6,8,0,2,4的符号地址,每键入一个数后都存入al,调用xlat使得(al)—((al)+(bx)) al中为译码后的数,存入string并一次输出所有的数。 实验中遇到的问题及其解决方法 问题 在调用DOS/BIOS时将16进制数后没有加H,造成程序报错。 解决方法:仔细读程序,多注重编程细节,努力养成好的编程习惯。 问题 由于我的电脑是64位系统,不支持masm,因此我一直用emu8086编程,但在实践中发现我所使用的emu8086模拟器在语法规则方面和masm有些不同,且不支持条件汇编和重复汇编。 解决方法:利用dosbox配合masmplus,模拟dos环境,从而解决了不兼容问题。 对中断向量的修改、恢复的理解不清晰,在编写题目三时遇到了一些困难。 解决方法:经过老师的讲解和自己看书思考,最终解决了问题。 实验结果 见附录。 2013年5 月17 日 建议 可以考虑增加实验时间。汇编语言的风格、思路与我们之前学习过的高级语言有所不同,熟悉编程环境需要时间。感觉上机期间,同时需要熟悉环境、设计算法、编写程序和调试程序是很有压力的。所以可以考虑在正式编程前增加一次实验。 可以考虑设计一些更加有趣的题目。本次需要编写的两个程序有些枯燥,不妨再生动些。 3、可以考虑使用类似C语言学习时的moodle系统,可以同时减轻老师和学生的负担。而且实现了在寝室中可以随时编写程序。避免到上机时猝不及防。 备注 源代码和截图见附录 附录 程序一 ASM图 ASM图较为复杂,从略。 程序代码 data segment score db 76,69,84,90,73,88,99,63,100,80 s6 db 0 s7 db 0 s8 db 0 s9 db 0 s10 db 0 data ends code segment assume cs:code, ds:data main proc start: mov ax,data mov ds,ax mov cx,10 call alloc disp: mov dl,s6 call display mov dl,s7 call display mov dl,s8 call display mov dl,s9 call display mov dl,s10 call display

文档评论(0)

559997799 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档