输入的一个班的学生成绩汇编语言.docx
- 文档编号:5576622
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:12
- 大小:49.73KB
输入的一个班的学生成绩汇编语言.docx
《输入的一个班的学生成绩汇编语言.docx》由会员分享,可在线阅读,更多相关《输入的一个班的学生成绩汇编语言.docx(12页珍藏版)》请在冰豆网上搜索。
输入的一个班的学生成绩汇编语言
《汇编语言》课程综合性实验报告
开课实验室:
年月日
实验题目
显示学生名次表
一、实验目的
进行汇编语言程序设计应用的综合性训练。
综合运用汇编语言循环程序和程序编程方法,巩固提高汇编语言程序设计能力应用水平。
二、设备与环境
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?
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?
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
.
.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 输入 一个 学生 成绩 汇编语言