汇编综合实验_第1页
汇编综合实验_第2页
汇编综合实验_第3页
汇编综合实验_第4页
汇编综合实验_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、实 验 报 告汇 编 语 言 至 第 1 计算机学院制华北科技学院综合性实验报告实验报告须知1、 学生上交实验报告时,必须为打印稿(A4 纸)。页面空间不够,可以顺延。2、 学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。3、 教师应该填写的内容包括:实验成绩、教师评价等。4、 教师根据本课程的综合性实验指导单中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。5、 未尽事宜,请参考该

2、课程的实验大纲和教学大纲。第 1 页华北科技学院综合性实验报告 汇 编 语 编制一程序,要求接收从键盘输入的一个班的学生姓名、成绩和学号,对学生的成绩进行排序,再按学号顺序和学生名次顺序分别把学生成绩、姓名、学号显示出来。1 8 INPUT_DATA 数据输入,COPY 数据转存,CHANGE 十进制数 ASCII 码转换为二进制,SPLACE 保存名次,MAOPAO_ID 学号ID 冒泡升序排列,MAOPAO_SCORE 成绩 SCORE 冒泡降序排列,MENU 菜单选择,OUTPUT 输出显示。下面具体他介绍每个功能是如何实现的。结束第 2 页华北科技学院综合性实验报告3子程序 INPUT

3、_DATA数据输入。首先用变量 P控制输入的人数,本程序 P=3。然后三次调用宏 INPUT MACRO A,B。最后调用子程序 COPY保存。关键代码和程序框架图如下:YN第 3 页华北科技学院综合性实验报告4子程序 COPY数据转存。用BUFNAME作为输入姓名的缓存区,用BUFID作为输入学号缓存区,用BUFSCORE作为输入成绩的缓存区。然后用串传送指令将所有人的姓名,学号,成绩转存到 SNAME,ID,SCORE和程序框架图如下:MOVSS BUFSCORE,SCORE,S,CONT3LEA SI,BUFSCORE+1CALL CHANGE;十进制ASCII码转换成二进制保存;临时数

4、TMP存入学号SSCORE中MOV AX,TMP5子程序 CHANGE十进制 ASCII转换为二进制。首先判断输入的每一位上的数是不是 19 ANDAX,000FH去掉 ASCII TMP第 4 页华北科技学院综合性实验报告MOV AL,SI+1CMP AL,30HJB EXIT1AND AX,000FHXCHG AX,TMPMOV DX,10第 5 页华北科技学院综合性实验报告6子程序 SPLACE保存名次。这个比较简单,就是调用子程序 MAOPAO_SCORE对成绩进行冒泡排序,然后依次保存名次就可以了。关键代码和程序框架图如下:N;对成绩SSCORE进行冒泡降序排列Y码MOV AX,DI

5、MOV BL,CIXUDIMOV SI,BXINC AXMOV PLACESI,ALINC DIN第 6 页华北科技学院综合性实验报告 7:子程序 MAOPAO_ID-学号 ID冒泡升序排列和子程序 MAOPAO_SCORE-成绩 SCORE冒泡降序排列。先确定冒泡外循环的次数,然后进入内循环,第一个数与下一个数比较,若大于,则交换两数,交换对应标号的成绩排序列和次序,继续进行循环比较;否则直接进行下一次比较。 CIXU中的输入的次序号也一 SNAME和 ID ID也是;);CX存入栈中,保存外循环NMOV AX,SSCORESIXCHG SSCORESI+5,AXMOV SSCORESI,A

6、X;/交换对应标号的成绩排序列;从栈中弹出到CX,继续外循环第 7 页华北科技学院综合性实验报告NYI=I+1NNY第 8 页华北科技学院综合性实验报告8子程序 MENU菜单选择。首先跳出提示语,然后用1号功能接收用户的选择。如果用户输入 1,则调用子程序MAOPAO_ID对学号进行冒泡升序排列并输出;如果用户输入2,则调用子程序 MAOPAO_SCORE对成绩进行冒泡降序排列并输出;如果输入 ESC,则推出;如果输入的是;判断AL=1,若等于,转到 LET1;判断AL=2,若等于,转到 LET2;判断AL=ESC,若等于,转到 EXIT;对学号SID进行冒泡升序排列CALL MAOPAO_S

7、COREJMP LET0LET0:;对成绩SSCORE进行冒泡降序排列;回车换行;显示提示语4;输出显示9子程序 OUTPUT显示输出。这里主要要到宏OUTPUT_DATA,宏 OUTPUT_DATA的方法主要是,从 CIXU中取出次序号作为位移量,然后在子程序调用宏时分三次调用,用实元代替哑元,分别从 SNAMEIDSCORE中取出姓名和对应的学号,成绩,然后用9号功能输出。关键代码和程序框图如下:OUTPUT PROCMOV CX,P第 9 页华北科技学院综合性实验报告MOV AX,30HMOV AL,CIXUSIDEC AL;位置-1 地址从0开始;MOV DL,PLACEDIADD D

8、L,30HMOV AH,2;计数器+1 取下一个数据OUTPUT ENDP第 10 页华北科技学院综合性实验报告 = NY10 运行结果:华北科技学院综合性实验报告11 感想和体会:首先我必须承认,这个程序大部分不是自己写的,我只是对其增加了菜单的功能和做单的修改。而且关于对字符串的处理和输出时界面的控制我还是有点搞不清楚,需要课后继续花时间学习有关汇编的知识,使自己更熟练各种寄存器的使用。但是通过这次汇编程序,我还是学到了许多东西,为后面的汇编课程设计奠定了基础。对于后面的汇编课程设计,我也有信心做得更好。最大的体会有三个:其一,汇编语言相对于其他编程语言,确实难度有点大。之所以初学者觉得它难,是因为汇编语言是直接在硬件之上工作的编程语言,即它是实现在 CPU 的寄存器级上进行控制和操作。它不像 JAVA 或者其他编程语言是从人们的日常思维出发编程,所以我们初学时觉得有点难度。其二,我体会到了宏汇编与子程序的区别,特别是宏的好处。虽然宏和子程序都可以作为一个独立的功能程序让其他程序多次调用。但是对于子程序而言,每次调用均需要保存断点和现场,传参时要占用寄存器或者存储器,调用和返回都要对堆栈指针做修改,稍有不慎就会错误,显得麻烦。然而宏指令利用哑元和实元进行参数传递,宏调用的时候用实元取代哑元,这样就进一步简化了程序结构,增强了程序可读性,

温馨提示

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

评论

0/150

提交评论