输入的一个班的学生成绩汇编语言.docx

上传人:b****6 文档编号:5576622 上传时间:2022-12-28 格式:DOCX 页数:12 大小:49.73KB
下载 相关 举报
输入的一个班的学生成绩汇编语言.docx_第1页
第1页 / 共12页
输入的一个班的学生成绩汇编语言.docx_第2页
第2页 / 共12页
输入的一个班的学生成绩汇编语言.docx_第3页
第3页 / 共12页
输入的一个班的学生成绩汇编语言.docx_第4页
第4页 / 共12页
输入的一个班的学生成绩汇编语言.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

输入的一个班的学生成绩汇编语言.docx

《输入的一个班的学生成绩汇编语言.docx》由会员分享,可在线阅读,更多相关《输入的一个班的学生成绩汇编语言.docx(12页珍藏版)》请在冰豆网上搜索。

输入的一个班的学生成绩汇编语言.docx

输入的一个班的学生成绩汇编语言

《汇编语言》课程综合性实验报告

开课实验室:

年月日

实验题目

显示学生名次表

一、实验目的

进行汇编语言程序设计应用的综合性训练。

综合运用汇编语言循环程序和程序编程方法,巩固提高汇编语言程序设计能力应用水平。

二、设备与环境

PC兼容机、Windows操作系统、汇编程序masm611

三、实验内容

编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字节的GRADE数组中,其中GRADE+N保存学号N+1的学生成绩。

然后根据GRADE中的学生成绩,把学生名次填入50字节的RANK数组中,其中RANK+N的内容是学号为N+1学生的名次。

再按学号把学生顺序把学生名次显示出来

四、实验结果及分析(包括①已完成什么功能,②如何实现的、遇到的问题和解决办法、流程图和关键代码解释,③收获和体会等)

(1)完成的功能:

动态输入学生学号和成绩,对学生成绩进行排序并设置名次,再按学号把学生成绩和名次显示出来。

(2)实现办法:

充分运用宏汇编实现回车换行、数据的输入和输出,使用过程定义伪操作实现排名次和学生学号、成绩和名次的显示。

(3)流程图:

Y

N

 

(4)关键代码:

1、数据段定义:

DATASSEGMENT

ndb0

mcdb50dup(0)

cjdb50dup(?

xhdb50dup(?

m1db13,10,'PleaseinputtheID:

',13,10,'$'

m2db13,10,'Pleaseinputthemark:

',13,10,'$'

m3db13,10,'Doyouwanttocontinue?

',13,10,'$'

s1db13,10,'**********************************',13,10,'$'

s2db13,10,'IDmarkrank',13,10,'$'

konggedb'','$'

DATASENDS

2、数据输入、输出宏定义:

shurumacro

movah,1

int21h

subal,30h

cbw

movbl,10

mulbl

movdl,al

movah,1

int21h

subal,30h

adddl,al

endm

shuchumacronum

moval,num

cbw

movbl,10

divbl

movbl,ah

movdl,al

adddl,30h

movah,2

int21h

movdl,bl

adddl,30h

movah,2

int21h

endm

3、排序并设置名次:

rankprocnear

movah,0

moval,1

movsi,0

movcl,n

movch,0

movdl,99

movbh,0

e1:

pushcx

e2:

movbl,cj[si]

cmpbl,dl

jnee4

addmc[si],al

addbh,1

cmpbh,1

jee6

jmpe4

e3:

subal,1

e4:

addsi,1

loope2

cmpbh,0

jnee5

popcx

movbh,0

subdl,1

cmpdl,-1

movsi,0

jee7

jmpe1

e5:

popax

popcx

movbh,0

subdl,1

cmpdl,-1

movsi,0

jee7

jmpe1

e6:

addal,1

pushax

jmpe3

e7:

ret

rankendp

4、按学号显示成绩和名次:

printprocnear

outputs1

outputs2

movcl,n

movch,0

movsi,0

exit:

shuchuxh[si]

outputkongge

shuchucj[si]

outputkongge

shuchumc[si]

crlf

addsi,1

loopexit

ret

printendp

(5)运行结果截图:

(6)收获和体会:

大一学习的是C语言,因此,在学汇编语言之初,面对格式之类的感觉很不适应。

C语言用的是一个又一个变量,而汇编语言则是利用一个又一个寄存器来实现。

而写代码的时候,经常会因为一些符号,或者字长的失误,完全是无心之失而导致程序无法执行。

而回过来找错误的时候,又往往忽略了这些细节而找不到错误的根源。

学习汇编是个艰辛的过程,从C语言到汇编的不适,到牢记大量的指令,并熟练应用,都要花费很多时间适应。

对有些指令的源操作数和目的操作数,以及操作结果的存放位置都要熟记于心。

否则,你将很难应用这些指令,学习汇编的一个重要能力就是能够熟练调试所写程序,当某个程序不能执行时,而又发现不了错误,这就要对程序进行逐步调试了。

这样更容易发现错误点并牢记。

 

教师评价

评定项目

A

B

C

D

评定项目

A

B

C

D

算法正确

操作熟练

程序结构合理

实验结果正确

语法、语义正确

文字流畅、报告规范

其他:

 

评价教师签名:

年月日

附代码:

crlfmacro

movah,2

movdl,10

int21h

movah,2

movdl,13

int21h

endm

outputmacrostring

movdx,offsetstring

movah,9

int21h

endm

shurumacro

movah,1

int21h

subal,30h

cbw

movbl,10

mulbl

movdl,al

movah,1

int21h

subal,30h

adddl,al

endm

shuchumacronum

moval,num

cbw

movbl,10

divbl

movbl,ah

movdl,al

adddl,30h

movah,2

int21h

movdl,bl

adddl,30h

movah,2

int21h

endm

DATASSEGMENT

ndb0

mcdb50dup(0)

cjdb50dup(?

xhdb50dup(?

m1db13,10,'PleaseinputtheID:

',13,10,'$'

m2db13,10,'Pleaseinputthemark:

',13,10,'$'

m3db13,10,'Doyouwanttocontinue?

',13,10,'$'

s1db13,10,'**********************************',13,10,'$'

s2db13,10,'IDmarkrank',13,10,'$'

konggedb'','$'

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

again:

callinput

addn,1

outputm3

movah,1

int21h

cmpal,'y'

jeagain

callrank

callprint

MOVAH,4CH

INT21H

inputprocnear

outputm1

shuru

movbl,n

movbh,0

movxh[bx],dl

outputm2

shuru

movbl,n

movbh,0

movcj[bx],dl

ret

inputendp

rankprocnear

movah,0

moval,1

movsi,0

movcl,n

movch,0

movdl,99

movbh,0

e1:

pushcx

e2:

movbl,cj[si]

cmpbl,dl

jnee4

addmc[si],al

addbh,1

cmpbh,1

jee6

jmpe4

e3:

subal,1

e4:

addsi,1

loope2

cmpbh,0

jnee5

popcx

movbh,0

subdl,1

cmpdl,-1

movsi,0

jee7

jmpe1

e5:

popax

popcx

movbh,0

subdl,1

cmpdl,-1

movsi,0

jee7

jmpe1

e6:

addal,1

pushax

jmpe3

e7:

ret

rankendp

printprocnear

outputs1

outputs2

movcl,n

movch,0

movsi,0

exit:

shuchuxh[si]

outputkongge

shuchucj[si]

outputkongge

shuchumc[si]

crlf

addsi,1

loopexit

ret

printendp

CODESENDS

ENDSTART

.

.

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

当前位置:首页 > 自然科学 > 物理

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

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