汇编语言程序设计期末大作业。

2025-08-02

汇编语言程序设计期末大作业:

编写一完整的汇编语言源程序,实现从键盘输入一个班(不少于10人)的学生记录(学号:8位数字、姓名:不多余10个英文字符,语文:0-100的整数、数学:0-100的整数、英语:0-100的整数)后,

(1) 将输入的记录保存在C盘根目录下名为stuscore.dat的文件中; (2) 按照各科成绩总分先高后低的顺序输出全部学生记录和排名顺序; (3) 输出总分高于班平均总分的全部学生记录。 要求: 元月4日前提交一份纸质报告(班长统一收齐)。

大作业格式:

1. 标题: 汇编语言程序设计期末大作业 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-----------------$' messMenu1 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:$' 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 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 segment

assume cs:code,ds:data,ss:stack start: 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,10 InputStu:

call GetStudent lea dx,messNext 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 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

lea 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 ret

GetStudent endp

;============================================================ ;子程序名:TureShow

;功能辅助子程序ShowStu,用于输出字符串

;============================================================ 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 ret

TureShow endp

;============================================================ ;子程序名:ShowStu

;功能:显示学生信息记录

;============================================================ ShowStu proc near push cx push ax push dx push si

push di ;保护现场 call Endline lea di,SumScore lea bx,StudAddress mov cx,10

Loop1: mov si,word ptr[bx] 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 用于排序对齐 lea dx,mess3


汇编语言程序设计期末大作业。.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2024小升初50道经典奥数题及答案详细解析

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219