华中科技大学汇编实验报告2_精品文档文档格式.docx

上传人:b****2 文档编号:14436337 上传时间:2022-10-22 格式:DOCX 页数:11 大小:154.27KB
下载 相关 举报
华中科技大学汇编实验报告2_精品文档文档格式.docx_第1页
第1页 / 共11页
华中科技大学汇编实验报告2_精品文档文档格式.docx_第2页
第2页 / 共11页
华中科技大学汇编实验报告2_精品文档文档格式.docx_第3页
第3页 / 共11页
华中科技大学汇编实验报告2_精品文档文档格式.docx_第4页
第4页 / 共11页
华中科技大学汇编实验报告2_精品文档文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

华中科技大学汇编实验报告2_精品文档文档格式.docx

《华中科技大学汇编实验报告2_精品文档文档格式.docx》由会员分享,可在线阅读,更多相关《华中科技大学汇编实验报告2_精品文档文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

华中科技大学汇编实验报告2_精品文档文档格式.docx

除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。

特此声明!

学生签名:

日期:

成绩评定

实验完成质量得分(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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1