显示学生名次表(汇编语言)_第1页
显示学生名次表(汇编语言)_第2页
显示学生名次表(汇编语言)_第3页
显示学生名次表(汇编语言)_第4页
显示学生名次表(汇编语言)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*学院综合性实 验 报 告课程名称 汇 编 语 言实验学期 2011 至 2012 学年 第 2 学期 学生所在系部 计算机学院计算机科学与技术系年级 2010级 专业班级 * 学生姓名 * 学号 * 任课教师 # 实验成绩计算机学院制 汇 编 语 言 课程综合性实验报告 第 5 页 第 6 页 第 7 页 第 8 页 第 9 页 价 附程序:DATA SEGMENTinfor0 db 0ah,0dh,'sort= $'infor1 db 0ah,0dh,'input name: $'infor2 db 0ah,0dh,'input score:$

2、9;n equ 15 ; 姓名长度m equ 4 ; 成绩长度(3位 +回车 p equ 4 ; 输入的人数(4个 q equ 3 ; 成绩位数buff1 db n,? ,n dup (0,'$' 姓名缓冲区,加 $以便输 出buff2 db m,? ,m dup (0,'$' 成绩缓冲区sname db p dup (n+1 dup (0 ; 保存姓名score1 dw p dup (m+1 dup (0 ; 保存成绩score2 dw p dup (m+1 dup (0mingci db p dup (0 ; 名次x dw ?sign1 dw 0sign2

3、dw 0cont db '1' ; 计数DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART :main proc farMOV AX,DATAMOV DS,AXmov es,axmov bx,0mov cx,0call inputcall sortcall printmov ah,4chint 21hmain endp; 子程序 1,输入姓名、成绩input procinc bx ; 输入次数统计cmp bx,p ; 输入次数ja exitlea dx,infor1 ; 显示提示 1mov ah,9int 21hlea dx,buf

4、f1 ; 输入姓名mov ah,10int 21hmov al,buff1+1 ; 实际输入个数, aladd al,2 ;+2,包含 buffer1的 0,1号单元 mov ah,0mov si,ax ; 回车 od 所在位置,跟在最后一个字 符后mov buff1si,0 ; 将 od 换为 0,便于输出显示lea dx,infor2 ; 显示提示 2mov ah,9int 21hlea dx,buff2 ; 输入成绩mov ah,10int 21hmov al,buff2+1 ; 实际输入个数add al,2 ; 个数 +2,包含 0,1单元找到 od mov ah,0mov si,ax

5、mov buff2si,0 ; 将 od 换为 0,便于输出显示mov mingcibx-1,bl ;bx 为输入次数,保存输入次序 cmp bx,1 ; 第一次输入转 let1jz let1add sign1,n+1 ; 姓名间隔为 n+1add sign2,q ; 成绩间隔为 qlet1:call copy ; 子程序嵌套jmp inputexit:retinput endp; 子程序 2,数据转存copy procmov cx,n+1 ; 姓名长度 +1(包含 $lea si,buff1+2lea di,sname ; 姓名传送到 snameadd di,sign1 ; 加上间隔值cld

6、rep movsbmov cx,nmov ax,'$' 用 $覆盖姓名区,清除已输入的姓名 lea di,buff1+2rep stosbmov cx,m+1 ; 成绩位数 +1(包含 slea si,buff2+2lea di,score1 ; 成绩传送到 scoreladd di,sign2 ; 加上间隔值cldrep movsblea si,buff2+2mov di,sign2call change ; 二进制成绩, scorel2retcopy endp; 子程序 3,十进制数 ASCII 码二进制change procmov x,0mov cx,si-1 ; 成绩的

7、位数, cxand cx,000fh ; 保留低 4位rept2:mov al,si ; 按位取出成绩cmp al,30h ; 是否在 09之间jl exit1cmp al,39hjg exit1and ax,000fh ; 去掉 ASCII 码xchg ax,xmov dx,10 ; 将 ax 中前一次形成的数扩大 10倍mul dxadd x,ax ; 保存到 xinc siloop rept2mov ax,x ; 按十进制形成的成绩以二进制 保存mov score2di,ax ; 二进制成绩送入 score2 mov x,0add sign2,2 ; 下一个成绩单元exit1: retc

8、hange endp; 子程序 4,按成绩排序sort procmov cx,p ; 数组长度dec cxloop1:push cx ; 保存外循环次数mov bx,0mov si,0loop2:mov ax,score2bxcmp ax,score2bx+m+1 ;m+1=5jge next ; 降序xchg ax,score2bx+m+1 ; 交换成绩mov score2bx,axmov al,mingcisixchg al,mingcisi+1 ; 交换成绩mov mingcisi,alnext:add bx,m+1 ; 下一个成绩inc siloop loop2pop cx ; 恢复外

9、循环次数loop loop1retsort endp; 子程序 5,打印排序名单print proclea dx,infor0 ; 显示结果提示mov ah,9int 21hmov cx,pmov bx,0mov ax,0mov di,0rept3:mov dl,0ah ; 回车换行mov ah,2int 21hmov dl,0dhint 21hmov dl,cont ; 显示名次序号mov ah,2#学院综合性实验报告 int 21h inc cont mov dl,0ah mov ah,2 int 21h mov dl,0dh int 21h mov ax,0 mov al,mingcidi dec al mov bl,9 mul bl lea dx,sname add dx,ax mov ah,9 int 21h mov dl,0ah mov ah,2 int 21h mov dl,0dh int 21h mov ax,0 mov bx,0 mov al,mingcidi dec al mov bl,5 mul bl lea dx,score1 add dx,ax mov ah,9 int 21h inc di loop rept

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论