ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:19.92KB ,
资源ID:12684073      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12684073.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言程序设计期末大作业教学内容.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言程序设计期末大作业教学内容.docx

1、汇编语言程序设计期末大作业教学内容汇编语言程序设计期末大作业。汇编语言程序设计期末大作业:编写一完整的汇编语言源程序,实现从键盘输入一个班(不少于10人)的学生记录(学号:8位数字、姓名:不多余10个英文字符,语文:0-100的整数、数学:0-100的整数、英语:0-100的整数)后,(1) 将输入的记录保存在C盘根目录下名为stuscore.dat的文件中;(2) 按照各科成绩总分先高后低的顺序输出全部学生记录和排名顺序;(3) 输出总分高于班平均总分的全部学生记录。要求: 元月4日前提交一份纸质报告(班长统一收齐)。 大作业格式:1. 标题: 汇编语言程序设计期末大作业 2. 作业题目:

2、(上述)3. 算法分析(流程图)4. 实现代码(必须含注释)5. 实验结果(汇编、连接、运行的截图)6. 总结代码实现student struct ;定义结构 Snumber db 11,0,11 dup(?) Sname db 11,0,11 dup(?) English db 4,0, 4 dup(?) Chinese db 4,0, 4 dup(?) Math db 4,0, 4 dup(?) Sum db 4,0, 4 dup(?) student ends;数据段data segment messMenu db -The Homework of Assembler-$ messMen

3、u1 db -Name:TU LIN No:8000110028-$ messNext db -$ messName db Please input the student name(11):$ messNum db Please input the student number(11):$ messEnglish db Please input the English score:$ messChinese db Please input the Chinese score:$ messMath db Please input the Math score:$ mess1 db name:$

4、 mess2 db number:$ mess3 db English:$ mess4 db Chinese:$ mess5 db Math:$ messSumScore db SumScore:$ MessTab db 09,$ ;Tab 用于排列对齐 StudAddress dw 10 dup(?) ;存各学生的偏移地址 EnglishScore db 10 dup(?) ;存学生英语成绩的十进制数 ChineseScore db 10 dup(?) ;存学生语文成绩的十进制数 MathScore db 10 dup(?) ;存学生数学成绩的十进制数 Average dw ? Buf db

5、 6 dup(?) SumScore dw 10 dup(?) ;用于记录每个学生总分 NumbersOfStudent db 0 Stu student 10 dup() SumRank db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 FName db C:StuScore.dat, 0;文件 FileHandle dw ?;文件句柄 EndOfFile dw 0ffh OtherLine db 0ah, 0dh, $ FileSpace db data ends;堆栈段stack segment db 100h dup(?)stack ends;代码段code segmen

6、tassume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax ;将数据段首地址传给ds mov ax,stack mov ss,ax ;将堆栈段首地址传给ss mov sp,0 call Endline lea dx,messMenu mov ah,09h int 21h call Endline lea dx,messMenu1 mov ah,09h int 21h call Endline lea si,Stu ;取student的首地址给si mov cx,10InputStu: call GetStudent lea dx,m

7、essNext mov ah,09h int 21h add si,50 loop InputStu ;输出循环结束 lea si,Stu call GetEnglishScore call GetChineseScore call GetMathScore call Stop ;程序运行停止一下,按回车键继续执行 call Writetofile call stop call SumAverage call GetSum call GetAddress call SortStudent call Stop ;程序运行暂停一下,按回车键,继续执行 call ShowStu mov ah,4ch

8、 int 21h;=;子程序名:GetStudent;功能:录入学生信息;=GetStudent proc near push si push dx push ax push cx ;子程序保护现场 lea dx,messName mov ah,9 int 21h lea dx,si.Sname mov ah,0Ah int 21h call Endline lea dx,messNum mov ah,9 int 21h lea dx,si.Snumber mov ah,0Ah int 21h call Endline lea dx,messEnglish mov ah,9 int 21h l

9、ea dx,si.English mov ah,0Ah int 21h call Endline lea dx,messChinese mov ah,9 int 21h lea dx,si.Chinese mov ah,0Ah int 21h call Endline lea dx,messMath mov ah,9 int 21h lea dx,si.Math mov ah,0Ah int 21h call Endline pop cx pop ax pop dx pop si retGetStudent endp ;=;子程序名:TureShow;功能辅助子程序ShowStu,用于输出字符

10、串;=TureShow proc near push dx ;保护相关寄存器 push cx push bx push ax mov bx,dx ;将bx指向缓存区的地址 xor cx,cx mov cl,bx+1 ;cl存放了缓存区录入的字符数LoopTS: mov dl,bx+2 ;从第三个偏移地址开始显示 mov ah,2 ;调用单个字符输出中断 int 21h inc bx loop LoopTS pop ax pop bx pop cx pop dx retTureShow endp;=;子程序名:ShowStu;功能:显示学生信息记录;= ShowStu proc near pus

11、h cx push ax push dx push si push di ;保护现场 call Endline lea di,SumScore lea bx,StudAddress mov cx,10Loop1: mov si,word ptrbx lea dx,mess1 mov ah,09h int 21h lea dx,si.Sname call TureShow call MessTb ;输出1个Tab 用于排序对齐 lea dx,mess2 mov ah,09h int 21h lea dx,si.Snumber call TureShow call MessTb ;输出1个Tab

12、用于排序对齐 lea dx,mess3 mov ah,09h int 21h lea dx,si.English call TureShow call MessTb ;输出1个Tab 用于排序对齐 lea dx,mess4 mov ah,09h int 21h lea dx,si.Chinese call TureShow call MessTb ;输出1个Tab 用于排序对齐 lea dx,mess5 mov ah,09h int 21h lea dx,si.Math call TureShow call MessTb ;输出1个Tab 用于排序对齐 lea dx,messSumScore

13、mov ah,09h int 21h mov ax,di call Output call Endline add bx,2 add di,2 loop Loop1 lea dx,messNext mov ah,09h int 21h pop di pop si pop dx pop ax pop cx retShowStu endp ;=;子程序名:Endline;功能:回车换行;=Endline proc near push ax ;保护相关寄存器 push dx push cx mov ah,2 ;回车 mov dl,0ah int 21h mov ah,2 ;换行 mov dl,0dh

14、 int 21h pop cx pop dx pop ax retEndline endp;=;子程序名GetEnglishScores:;功能:将得到的指定个学生的分数以十进制保存到EnglishScore缓冲区中;=GetEnglishScore proc near push di ;保护相关寄存器 push si push dx push cx push bx push ax push bp lea si,Stu ;使si指向第一个学生的偏移地 lea bp,EnglishScore ;使bp指向以十进制存学生分数的地址 mov cx,10 ;共有指定个学生LoopScores0: pu

15、sh cx ;保护外循环的CX值 lea bx,si.English ;使bx指向学生字符分数缓冲区 xor di,di xor cx,cx mov cl,bx+1 ;学生字符分数缓冲区的字符数即使循环次数LoopScore0: mov al,bx+2 ;从第三个偏移地址开始 sub al,30h ;得到一个十进制值 xor ah,ah xchg ax,di ;使其暂存到di,且将高位di的值乘10 push si ;保护寄存器的原值 push dx mov si,10 mul si ;将si乘10,乘积低位保存在ax pop dx pop si xchg ax,di ;将原来di中低位的值与

16、高位的值ax交换回来 add di,ax ;至此又录入一位十进制数 inc bx loop LoopScore0 mov ax,di mov ds:bp,al ;将得到的十进制分数存入保存十进制分数缓冲区EnglishScore中 add si,50 ;使di指向下一个学生的偏移地址 inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数 pop cx ;弹出外循环的CX值 loop LoopScores0 pop bp pop ax pop bx pop cx pop dx pop si pop di retGetEnglishScore endp;=;子程

17、序名GetChineseScore:;功能:将得到的指定个学生的分数以十进制保存到ChineseScore缓冲区中;=GetChineseScore proc near push di ;保护相关寄存器 push si push dx push cx push bx push ax push bp lea si,Stu ;使di指向第一个学生的偏移地 lea bp,ChineseScore ;使bp指向以十进制存学生分数的地址 mov cx,10 ;共有指定个学生LoopScores1: push cx ;保护外循环的CX值 lea bx,si.Chinese ;使bx指向学生字符分数缓冲区

18、xor di,di xor cx,cx mov cl,bx+1 ;学生字符分数缓冲区的字符数即使循环次数LoopScore1: mov al,bx+2 ;从第三个偏移地址开始 sub al,30h ;得到一个十进制值 xor ah,ah xchg ax,di ;使其暂存到si,且将高位si的值乘10 push si ;保护寄存器的原值 push dx mov si,10 mul si ;将si乘10,乘积低位保存在ax pop dx pop si xchg ax,di ;将原来si中低位的值与高位的值ax交换回来 add di,ax ;至此又录入一位十进制数 inc bx loop LoopS

19、core1 mov ax,di mov ds:bp,al ;将得到的十进制分数存入保存十进制分数缓冲区ChineseScore中 add si,50 ;使di指向下一个学生的偏移地址 inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数 pop cx ;弹出外循环的CX值 loop LoopScores1 pop bp pop ax pop bx pop cx pop dx pop si pop di retGetChineseScore endp;=;子程序名GetMathScore:;功能:将得到的指定个学生的数学分数以十进制保存到MathScore缓冲

20、区中;=GetMathScore proc near push di ;保护相关寄存器 push si push dx push cx push bx push ax push bp lea si,Stu ;使di指向第一个学生的偏移地 lea bp,MathScore ;使bp指向以十进制存学生分数的地址 mov cx,10 ;共有指定个学生LoopScores2: push cx ;保护外循环的CX值 lea bx,si.Math ;使bx指向学生字符分数缓冲区 xor di,di xor cx,cx mov cl,bx+1 ;学生字符分数缓冲区的字符数即使循环次数LoopScore2:

21、mov al,bx+2 ;从第三个偏移地址开始 sub al,30h ;得到一个十进制值 xor ah,ah xchg ax,di ;使其暂存到si,且将高位si的值乘10 push si ;保护寄存器的原值 push dx mov si,10 mul si ;将si乘10,乘积低位保存在ax pop dx pop si xchg ax,di ;将原来si中低位的值与高位的值ax交换回来 add di,ax ;至此又录入一位十进制数 inc bx loop LoopScore2 mov ax,di mov ds:bp,al ;将得到的十进制分数存入保存十进制分数缓冲区MathScore中 ad

22、d si,50 ;使di指向下一个学生的偏移地址 inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数 pop cx ;弹出外循环的CX值 loop LoopScores2 pop bp pop ax pop bx pop cx pop dx pop si pop di retGetMathScore endp;=;子程序名:Writetofile;功能:用于创建文件并且存储学生信息;=Buildfile : push ax push cx push dx mov ah, 3ch mov cx, 00 lea dx, FName int 21h jc Cre

23、ateFileError mov FileHandle, ax jmp CreateFileOkCreateFileError: mov ah, 09h mov dx, offset CreateFileError int 21hCreateFileOk: pop dx pop cx pop ax ret WriteToFile: push ax push bx push cx push dx push di push si lea di, si.SName mov dx, di add dx, 2 mov cl, di+1 mov ch, 0 mov bx,FileHandle mov ah

24、, 40h int 21h jc WriteFileError call WriteSpace lea di, si.SNumber mov dx, di add dx, 2 mov cl, di+1 mov ch, 0 mov bx, FileHandle mov ah, 40h int 21h jc WriteFileError call WriteSpace lea di, si.ChineseScore mov dx, di add dx, 2 mov cl, di+1 mov ch, 0 mov bx, FileHandle mov ah, 40h int 21h jc WriteF

25、ileError call WriteSpace lea di, si.MathScore mov dx, di add dx, 2 mov cl, di+1 mov ch, 0 mov bx, FileHandle mov ah, 40h int 21h jc WriteFileError call WriteSpace lea di, si.EnglishScore mov dx, di add dx, 2 mov cl, di+1 mov ch, 0 mov bx, FileHandle mov ah, 40h int 21h jc WriteFileError call WriteSpace lea di, si.SumScore mov dx, di add dx, 2 mov cl, di+1 mov ch, 0 mov bx, FileHandle mov ah, 40h int 21h jc WriteFileError call WriteEndLine

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

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