显示学生名次表汇编语言.docx

上传人:b****1 文档编号:210688 上传时间:2023-04-28 格式:DOCX 页数:12 大小:120.05KB
下载 相关 举报
显示学生名次表汇编语言.docx_第1页
第1页 / 共12页
显示学生名次表汇编语言.docx_第2页
第2页 / 共12页
显示学生名次表汇编语言.docx_第3页
第3页 / 共12页
显示学生名次表汇编语言.docx_第4页
第4页 / 共12页
显示学生名次表汇编语言.docx_第5页
第5页 / 共12页
显示学生名次表汇编语言.docx_第6页
第6页 / 共12页
显示学生名次表汇编语言.docx_第7页
第7页 / 共12页
显示学生名次表汇编语言.docx_第8页
第8页 / 共12页
显示学生名次表汇编语言.docx_第9页
第9页 / 共12页
显示学生名次表汇编语言.docx_第10页
第10页 / 共12页
显示学生名次表汇编语言.docx_第11页
第11页 / 共12页
显示学生名次表汇编语言.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

显示学生名次表汇编语言.docx

《显示学生名次表汇编语言.docx》由会员分享,可在线阅读,更多相关《显示学生名次表汇编语言.docx(12页珍藏版)》请在冰点文库上搜索。

显示学生名次表汇编语言.docx

显示学生名次表汇编语言

******学院综合性

实验报告

课程名称汇编语言

实验学期2011至2012学年第2学期学生所在系部计算机学院计算机科学与技术系

年级2010级专业班级*************学生姓名*****学号****************任课教师####实验成绩

计算机学院制

《汇编语言》课程综合性实验报告

第5页

第6页

第7页

第8页

第9页

附程序:

DATASEGMENT

infor0db0ah,0dh,'sort=$'

infor1db0ah,0dh,'inputname:

$'

infor2db0ah,0dh,'inputscore:

$'

nequ15;姓名长度

mequ4;成绩长度(3位+回车pequ4;输入的人数(4个qequ3;成绩位数

buff1dbn,?

ndup(0,'$';姓名缓冲区,加$以便输出

buff2dbm,?

mdup(0,'$';成绩缓冲区

snamedbpdup(n+1dup(0;保存姓名

score1dwpdup(m+1dup(0;保存成绩

score2dwpdup(m+1dup(0

mingcidbpdup(0;名次

xdw?

sign1dw0

sign2dw0

contdb'1';计数

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

mainprocfar

MOVAX,DATA

MOVDS,AX

moves,ax

movbx,0

movcx,0

callinput

callsort

callprint

movah,4ch

int21h

mainendp

;子程序1,输入姓名、成绩

inputproc

incbx;输入次数统计

cmpbx,p;输入次数

jaexit

leadx,infor1;显示提示1

movah,9

int21h

leadx,buff1;输入姓名

movah,10

int21h

moval,buff1+1;实际输入个数,al

addal,2;+2,包含buffer1的0,1号单元movah,0

movsi,ax;回车od所在位置,跟在最后一个字符后

movbuff1[si],0;将od换为0,便于输出显示

leadx,infor2;显示提示2

movah,9

int21h

leadx,buff2;输入成绩

movah,10

int21h

moval,buff2+1;实际输入个数

addal,2;个数+2,包含0,1单元找到odmovah,0

movsi,ax

movbuff2[si],0;将od换为0,便于输出显示

movmingci[bx-1],bl;bx为输入次数,保存输入次序cmpbx,1;第一次输入转let1

jzlet1

addsign1,n+1;姓名间隔为n+1

addsign2,q;成绩间隔为q

let1:

callcopy;子程序嵌套

jmpinput

exit:

ret

inputendp

;子程序2,数据转存

copyproc

movcx,n+1;姓名长度+1(包含$

leasi,buff1+2

leadi,sname;姓名传送到sname

adddi,sign1;加上间隔值

cld

repmovsb

movcx,n

movax,'$';用$覆盖姓名区,清除已输入的姓名leadi,buff1+2

repstosb

movcx,m+1;成绩位数+1(包含s

leasi,buff2+2

leadi,score1;成绩传送到scorel

adddi,sign2;加上间隔值

cld

repmovsb

leasi,buff2+2

movdi,sign2

callchange;二进制成绩,scorel2

ret

copyendp

;子程序3,十进制数ASCII码→二进制

changeproc

movx,0

movcx,[si-1];成绩的位数,cx

andcx,000fh;保留低4位

rept2:

moval,[si];按位取出成绩

cmpal,30h;是否在0~9之间

jlexit1

cmpal,39h

jgexit1

andax,000fh;去掉ASCII码

xchgax,x

movdx,10;将ax中前一次形成的数扩大10倍

muldx

addx,ax;保存到x

incsi

looprept2

movax,x;按十进制形成的成绩以二进制保存

movscore2[di],ax;二进制成绩送入score2movx,0

addsign2,2;下一个成绩单元

exit1:

ret

changeendp

;子程序4,按成绩排序

sortproc

movcx,p;数组长度

deccx

loop1:

pushcx;保存外循环次数

movbx,0

movsi,0

loop2:

movax,score2[bx]

cmpax,score2[bx+m+1];m+1=5

jgenext;降序

xchgax,score2[bx+m+1];交换成绩

movscore2[bx],ax

moval,mingci[si]

xchgal,mingci[si+1];交换成绩

movmingci[si],al

next:

addbx,m+1;下一个成绩

incsi

looploop2

popcx;恢复外循环次数

looploop1

ret

sortendp

;子程序5,打印排序名单

printproc

leadx,infor0;显示结果提示

movah,9

int21h

movcx,p

movbx,0

movax,0

movdi,0

rept3:

movdl,0ah;回车换行

movah,2

int21h

movdl,0dh

int21h

movdl,cont;显示名次序号

movah,2

####学院综合性实验报告int21hinccontmovdl,0ahmovah,2int21hmovdl,0dhint21hmovax,0moval,mingci[di]decalmovbl,9mulblleadx,snameadddx,axmovah,9int21hmovdl,0ahmovah,2int21hmovdl,0dhint21hmovax,0movbx,0moval,mingci[di]decalmovbl,5mulblleadx,score1adddx,axmovah,9int21hincdilooprept3retprintendp;回车换行;取名次;位置-1,因为地址从0开始;姓名位置=al×9(包含$;偏移地址+姓名位移量;显示名字;回车换行;取名次;地址从0开始;成绩位移量=al×5(包含$;显示成绩codeendsENDSTART第15页

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2