华中科技大学汇编实验报告2_精品文档文档格式.docx
- 文档编号:14436337
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:11
- 大小:154.27KB
华中科技大学汇编实验报告2_精品文档文档格式.docx
《华中科技大学汇编实验报告2_精品文档文档格式.docx》由会员分享,可在线阅读,更多相关《华中科技大学汇编实验报告2_精品文档文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。
特此声明!
学生签名:
日期:
成绩评定
实验完成质量得分(70分)(实验步骤清晰详细深入,实验记录真实完整等)
报告撰写质量得分(30分)(报告规范、完整、通顺、详实等)
总成绩(100分)
指导教师签字:
汇编语言程序设计实验报告
目录
1 实验目的与要求 1
2 实验内容 1
3 实验过程 2
3.1 任务1 2
3.1.1 设计思想及存储单元分配 2
3.1.2 流程图 3
3.1.3 源程序 3
3.1.4 实验步骤 6
3.1.5 实验记录 7
4 体会 8
参考文献 9
1实验目的与要求
1、熟悉分支、循环程序的结构及控制方法,掌握分支、循环程序的调试方法;
2、加深对转移指令及一些常用的汇编指令的理解;
3、加深对常用DOS功能调用指令的理解,进一步熟悉TD的使用。
2实验内容
设计实现一个学生成绩查询的程序。
1、实验背景
在以BUF为首址的字节数据存储区中,存放着n个学生的课程成绩表(百分制),每个学生的相关信息包括:
姓名(占10个字节,结束符为数值0),语文成绩(1个字节),数学成绩(1个字节),英语成绩(1个字节),平均成绩(1个字节)。
例如:
NEQU1000
BUFDB‘zhangsan’,0,0;
学生姓名,不足10个字节的部分用0填充
DB100,85,80,?
;
平均成绩还未计算
DB‘lisi’,6DUP(0)
DB80,100,70,?
DBN-3DUP(‘TempValue’,0,80,90,95,?
);
除了3个已经具体定义了学生信息的成绩表以外,其他学生的信息暂时假定为一样的。
DB‘wangwu’,0,0,0,0
DB85,85,100,?
2、功能一:
提示并输入学生姓名
(1)使用9号DOS系统功能调用,提示用户输入学生姓名。
(2)使用10号DOS系统功能调用,输入学生姓名。
输入的姓名字符串放在以in_name为首址的存储区中。
(3)若只是输入了回车,则回到“
(1)”处重新提示与输入;
若仅仅输入字符q,则程序退出,否则,准备进入下一步处理。
3、功能二:
以学生姓名查询有无该学生
(1)使用循环程序结构,在成绩表中查找该学生。
(2)若未找到,就提示用户该学生不存在,并回到“功能一
(1)”的位置,提示并重新输入姓名。
(3)若找到,则将该学生课程成绩表的起始偏移地址保存到POIN字变量中。
提示:
字符串比较时,当采用输入串的长度作为循环次数时,若因循环次数减为0而终止循环,则还要去判断成绩表中名字串的下一个字符是否是结束符0,若是,才能确定找到了。
4、功能三:
计算所有学生的平均成绩
使用算数运算相关指令计算并保存每一个学生的平均成绩。
平均成绩计算公式:
(A*2+B+C/2)/3.5,即将语文成绩A乘以权重2、英语成绩C除以权重2后,与数学成绩B一起求和,再计算该生的平均成绩。
要求避免溢出。
使用循环程序结构,注意寻址方式的灵活使用。
把小数3.5转换成分数后再运算避免使用浮点数指令。
5、功能四:
将功能二查到的学生的平均成绩进行等级判断,并显示判断结果。
(1)平均成绩等级显示方式:
若平均成绩大于等于90分,显示“A”;
大于等于80分,显示“B”;
大于等于70分,显示“C”;
大于等于60分,显示“D”;
小于60分,显示“F”。
使用分支程序结构,采用2号DOS系统功能调用显示结果。
(2)使用转移指令回到“功能一
(1)”处(提示并输入姓名)。
3实验过程
3.1任务1
3.1.1设计思想及存储单元分配
设计思想:
本实验主要是要解决3个问题:
一是提示并输入学生姓名;
二是如何进行字符串的比较从而查询学生;
三是如何计算平均分从而分出等级。
依据本次实验的要求,此处用分支、循环程序的结构及控制方法来解决。
寄存器分配:
CX:
存放学生数量(默认3),计数器作用;
BX:
存放目标学生下标值,得到分数缓冲区首地址;
BP:
存放缓冲区基地址;
AL:
存放平均成绩;
AX,DX,SI:
临时寄存器;
3.1.2流程图
3.1.3源程序
.386
STACKSEGMENTUSE16STACK
DB200DUP(0)
STACKENDS
DATASEGMENTUSE16
NEQU3
BUFDB'
zhangsan'
0,0
DB100,85,80,?
DB'
lisi'
6DUP(0)
DB80,100,70,?
wangwu'
4DUP(0)
DB85,85,100,?
MSGDB'
Inputthename:
$'
CONTINUDB'
Enteranykeystocontinue(ifenterq,exit!
):
$'
FAILDB'
NotExist!
INPUTDB10
DB?
DB10DUP(0)
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
JMPBEGIN
FAILED:
LEADX,OFFSETFAIL;
查找失败
MOVAH,9H
INT21H
LOOPA:
MOVDL,0AH;
换行符
MOVAH,2H
LEADX,OFFSETCONTINU;
继续
MOVDL,0AH;
MOVDL,0DH
MOVAH,8H
CMPAL,71H
JEOVER;
输入'
q'
退出程序
BEGIN:
MOVCX,N;
学生个数
LEADX,OFFSETMSG;
输出提示信息
换行符
LEADX,OFFSETINPUT;
读入学生姓名
MOVAH,0AH
LEABP,OFFSETINPUT;
将INPUT基址存放至BP
ADDBP,2
CMPDS:
BYTEPTR[BP-1],0H;
空字符串
JELOOPA
INCCX
COMPA:
DECCX
JEFAILED;
查找失败,重新输入
MOVBX,N;
计算目标学生下标值,存放至BX
SUBBX,CX
IMULBX,14;
根据目标学生下标值,找到分数缓冲区首地址
MOVAX,10;
临时计数器
MOVSI,0
COMPB:
MOVDL,[BX+SI]
MOVDH,BYTEPTRDS:
[BP+SI]
CMPDL,0;
如果缓冲区姓名已结束,说明查找成功
JECAL;
跳转至平均成绩计算处
CMPDH,DL;
比较当前缓冲区姓名与输入姓名字符
JNECOMPA;
当前字符相同,继续循环以比较下一字符
INCSI
DECAX
JNECOMPB
CAL:
MOVBX,N;
IMULBX,14
ADDBX,10;
根据目标学生下标值,找到分数缓冲区首地址BX=m*14+10
MOVAX,0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学 汇编 实验 报告 精品 文档