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

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

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

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

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

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

leadx,buff1;

输入姓名

movah,10

moval,buff1+1;

实际输入个数,al

addal,2;

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

movsi,ax;

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

movbuff1[si],0;

将od换为0,便于输出显示

leadx,infor2;

显示提示2

leadx,buff2;

输入成绩

moval,buff2+1;

实际输入个数

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

movsi,ax

movbuff2[si],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;

movdi,sign2

callchange;

二进制成绩,scorel2

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;

保存外循环次数

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;

下一个成绩

looploop2

popcx;

恢复外循环次数

looploop1

sortendp

子程序5,打印排序名单

printproc

leadx,infor0;

显示结果提示

movcx,p

movax,0

movdi,0

rept3:

movdl,0ah;

回车换行

movah,2

movdl,0dh

movdl,cont;

显示名次序号

####学院综合性实验报告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