汇编语言程序设计期末大作业Word格式文档下载.docx
- 文档编号:4588039
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:32
- 大小:19.85KB
汇编语言程序设计期末大作业Word格式文档下载.docx
《汇编语言程序设计期末大作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计期末大作业Word格式文档下载.docx(32页珍藏版)》请在冰点文库上搜索。
studentends
;
数据段
datasegment
messMenudb'
----------------TheHomeworkofAssembler-----------------$'
messMenu1db'
----------Name:
TULINNo:
8000110028--------------$'
messNextdb'
--------------------------------------------------------------------------------$'
messNamedb'
Pleaseinputthestudentname(<
11):
$'
messNumdb'
Pleaseinputthestudentnumber(<
messEnglishdb'
PleaseinputtheEnglishscore:
messChinesedb'
PleaseinputtheChinesescore:
messMathdb'
PleaseinputtheMathscore:
mess1db'
name:
mess2db'
number:
mess3db'
English:
mess4db'
Chinese:
mess5db'
Math:
messSumScoredb'
SumScore:
MessTabdb09,'
;
Tab用于排列对齐
StudAddressdw10dup(?
);
存各学生的偏移地址
EnglishScoredb10dup(?
);
存学生英语成绩的十进制数
ChineseScoredb10dup(?
存学生语文成绩的十进制数
MathScoredb10dup(?
存学生数学成绩的十进制数
Averagedw?
Bufdb6dup(?
SumScoredw10dup(?
用于记录每个学生总分
NumbersOfStudentdb0
Stustudent10dup(<
>
SumRankdb0,1,2,3,4,5,6,7,8,9
FNamedb'
C:
\StuScore.dat'
0;
文件
FileHandledw?
文件句柄
EndOfFiledw0ffh
OtherLinedb0ah,0dh,'
FileSpacedb"
"
dataends
堆栈段
stacksegment
db100hdup(?
stackends
代码段
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax;
将数据段首地址传给ds
movax,stack
movss,ax;
将堆栈段首地址传给ss
movsp,0
callEndline
leadx,messMenu
movah,09h
int21h
leadx,messMenu1
leasi,Stu;
取student的首地址给si
movcx,10
InputStu:
callGetStudent
leadx,messNext
addsi,50
loopInputStu;
输出循环结束
leasi,Stu
callGetEnglishScore
callGetChineseScore
callGetMathScore
callStop;
程序运行停止一下,按回车键继续执行
callWritetofile
callstop
callSumAverage
callGetSum
callGetAddress
callSortStudent
程序运行暂停一下,按回车键,继续执行
callShowStu
movah,4ch
============================================================
子程序名:
GetStudent
功能:
录入学生信息
GetStudentprocnear
pushsi
pushdx
pushax
pushcx;
子程序保护现场
leadx,messName
movah,9
leadx,[si].Sname
movah,0Ah
leadx,messNum
leadx,[si].Snumber
leadx,messEnglish
leadx,[si].English
leadx,messChinese
leadx,[si].Chinese
leadx,messMath
leadx,[si].Math
popcx
popax
popdx
popsi
ret
GetStudentendp
TureShow
功能辅助子程序ShowStu,用于输出字符串
TureShowprocnear
pushdx;
保护相关寄存器
pushcx
pushbx
movbx,dx;
将bx指向缓存区的地址
xorcx,cx
movcl,[bx+1];
cl存放了缓存区录入的字符数
LoopTS:
movdl,[bx+2];
从第三个偏移地址开始显示
movah,2;
调用单个字符输出中断
incbx
loopLoopTS
popbx
TureShowendp
ShowStu
显示学生信息记录
============================================================
ShowStuprocnear
pushdi;
保护现场
leadi,SumScore
leabx,StudAddress
Loop1:
movsi,wordptr[bx]
leadx,mess1
int21h
callTureShow
callMessTb;
输出1个Tab用于排序对齐
leadx,mess2
leadx,mess3
leadx,mess4
leadx,mess5
leadx,messSumScore
movax,[di]
callOutput
addbx,2
adddi,2
loopLoop1
popdi
ShowStuendp
=============================================================
Endline
回车换行
Endlineprocnear
pushax;
回车
movdl,0ah
换行
movdl,0dh
Endlineendp
子程序名GetEnglishScores:
将得到的指定个学生的分数以十进制保存到EnglishScore缓冲区中
GetEnglishScoreprocnear
pushdi;
pushbp
leasi,Stu;
使si指向第一个学生的偏移地
leabp,EnglishScore;
使bp指向以十进制存学生分数的地址
movcx,10;
共有指定个学生
LoopScores0:
pushcx;
保护外循环的CX值
leabx,[si].English;
使bx指向学生字符分数缓冲区
xordi,di
学生字符分数缓冲区的字符数即使循环次数
LoopScore0:
moval,[bx+2];
从第三个偏移地址开始
subal,30h;
得到一个十进制值
xorah,ah
xchgax,di;
使其暂存到di,且将高位di的值乘10
pushsi;
保护寄存器的原值
movsi,10
mulsi;
将si乘10,乘积低位保存在ax
将原来di中低位的值与高位的值ax交换回来
adddi,ax;
至此又录入一位十进制数
loopLoopScore0
movax,di
movds:
[bp],al;
将得到的十进制分数存入保存十进制分数缓冲区EnglishScore中
addsi,50;
使di指向下一个学生的偏移地址
incbp;
使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数
popcx;
弹出外循环的CX值
loopLoopScores0
popbp
GetEnglishScoreendp
子程序名GetChineseScore:
将得到的指定个学生的分数以十进制保存到ChineseScore缓冲区中
GetChineseScoreprocnear
使di指向第一个学生的偏移地
leabp,ChineseScore;
LoopScores1:
leabx,[si].Chinese;
LoopScore1:
使其暂存到si,且将高位si的值乘10
将原来si中低位的值与高位的值ax交换回来
loopLoopScore1
将得到的十进制分数存入保存十进制分数缓冲区ChineseScore中
loopLoopScores1
GetChineseScoreendp
子程序名GetMathScore:
将得到的指定个学生的数学分数以十进制保存到MathScore缓冲区中
GetMathScoreprocnear
leabp,MathScore;
LoopScores2:
leabx,[si].Math;
LoopScore2:
loopLoopScore2
将得到的十进制分数存入保存十进制分数缓冲区MathScore中
loopLoopScores2
GetMathScoreendp
==============================================================
Writetofile
用于创建文件并且存储学生信息
Buildfile:
movah,3ch
movcx,00
leadx,FName
jcCreateFileError
movFileHandle,ax
jmpCreateFileOk
CreateFileError:
movah,09h
movdx,offsetCreateFileError
CreateFileOk:
WriteToFile:
pushdi
leadi,[si].SName
movdx,di
adddx,2
movcl,[di+1]
movch,0
movbx,FileHandle
movah,40h
jcWriteFileError
callWriteSpace
leadi,[si].SNumber
movbx,FileHandle
leadi,[si].ChineseScore
leadi,[si].MathScore
leadi,[si].EnglishScore
leadi,[si].SumScore
callWriteEndLine
jmpWriteFileOk
Wr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 期末 作业