学生成绩排名-汇编语言综合实验报告
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OUT3DB'SCORE:$'
NEQU8
MEQU4
FEQU3
PEQU3
QEQU3
BUFF3DBF,?,FDUP(0),'$'
BUFF1DBN,?,NDUP(0),'$'
BUFF2DBM,?,MDUP(0),'$'
NUMBERDBPDUP(F+1DUP(0))
SNAMEDBPDUP(N+1DUP(0))
REP STOSB
MOVCX,M+1
LEASI,BUFF2+2
LEADI,SCORE1
ADDDI,SIGN2
CLD
REP MOVSB
LEASI,BUFF2+2
MOVDI,SIGN2
CALL CHANGE
RET
COPY ENDP
CHANGE PROC
MOVX,0
MOVCX,[SI-1]
ANDCX,000FH
子程序COPY的设计业分为三个部分:学号转存,姓名转存,成绩转存。三个数据的转存方法也相同的。首先将长度传给CX寄存器,再将源目标地址和目的地址分别给SI和DI,再调用REP MOVSB 进行串传送,传送完成之后,要将原来的BUFF缓存区清空,全部设置为$。但是由于成绩是以十进制保存的,所以还要转换为二进制。则在子程序COPY中调用CHANGE程序
全部代码:
DATASSEGMENT
INFOR0DB0AH,0DH,'SORT=$'
INFOR1DB0AH,0DH,'INPUT NAME:$'
INFOR2DB0AH,0DH,'INPUT SCORE:$'
INFOR3DB0AH,0DH,'INPUT NUMBER:$'
OUT1DB'NUBER:$'
OUT2DB'NAME:$'
MULBL
LEADX,NUMBER
ADDDX,AX
MOVAH,9
INT 21H
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
MOVAX,0
MOVAL,MINGCI[DI]
DECAL
MOVBL,9
MULBL
LEADX,SNAME
ADDDX,AX
MOVAH,9
INT 21H
REPT2:
MOVAL,[SI]
CMPAL,30H
JL EXIT1
CMPAL,39H
JG EXIT1
ANDAX,000FH
XCHGAX,X
MOVDX,10
MULDX
ADDX,AX
INCSI
LOOP REPT2
MOVAX,X
MOVSCORE2[DI],AX
MOVX,0
ADDSIGN2,2
EXIT1: RET
CHANGE ENDP
SORT PROC
MOVCX,P
DECCX
LOOP1:
PUSHCX
MOVBX,0
MOVSI,0
LOOP2:
MOVAX,SCORE2[BX]
CMPAX,SCORE2[BX+M+1]
JGE NEXT
XCHGAX,SCORE2[BX+M+1]
MOVSCORE2[BX],AX
MOVAL,MINGCI[SI]
将成绩位数给CX,从BUFF2中取出第一位数给AL,然后去掉ASCII码再将它与10相乘,再与X相加得到二进制成绩数最后存入到SCORE2中。
子程序SORT:
关键代码分析:
MOVCX,P
DECCX
LOOP1:
PUSHCX
MOVBX,0
MOVSI,0
LOOP2:
MOVAX,SCORE2[BX]
CMPAX,SCORE2[BX+M+1]
子程序INPUT的程序中主要有三个部分:学号输入,姓名输入,成绩输入,它们都设有缓区,分别为BUFF1,BUFF2,BUFF3。输入方式是调用了10号功能,输入一个字符串,长度也已经在之前设计好了。学号,姓名,成绩都是相同的输入方式,在输入完之后,由于最后一个回车符会被接收,所以,在每次输入完之后,将最后的回车符换为0,便于输出显示。同时也将它们的次序保存到MINGCI之中。学号,姓名,成绩输入完成后,子程序INPUT再调用COPY将缓存区转存到学号,姓名,成绩存储单元之中。
子程序CHANGE:
关键代码:
REPT2:
MOVAL,[SI]
CMPAL,30H
JL EXIT1
CMPAL,39H
JG EXIT1
ANDAX,000FH
XCHGAX,X
MOVDX,10
MULDX
ADDX,AX
INCSI
LOOP REPT2
MOVAX,X
MOVSCORE2[DI],AX
MOVX,0
ADDSIGN2,2
子程序流程图:
主程序:
INPUT子程序:
主要代码分析:
LEADX,INFOR1
MOVAH,9
INT 21H
LEADX,BUFF1
MOVAH,10
INT 21H
MOVAL,BUFF1+1
ADDAL,2
MOVAH,0
MOVSI,AX
MOVBUFF1[SI],0
此代码是输入姓名的代码,首先讲缓存区BUFF1的偏移地址给DX调用10号功能输入一个字符串,然后将回车0D所在位置换为0便于输出显示。
华北科技院综合性
实 验 报 告
课程名称汇 编 语 言
实验学期2011至2012学年 第1学期
学生所在系部计算机学院网络工程系
年级2009专业班级网络B091
学生姓名罗希学号************
任课教师李冬艳
实验成绩
计算机学院制
《汇 编 语 言》课程综合性实验报告
开课实验室:软件一实验室2011年12月6日
MOVBUFF2[SI],0
MOVMINGCI[BX-1],BL
CMPBX,1
JZ LET1
ADDSIGN1,N+1
ADDSIGN2,Q
ADDSIGN3,F+1
LET1:
CALL COPY
JMP INPUT
EXIT:
RET
INPUT ENDP
COPY PROC
MOVCX,F+1
LEASI,BUFF3+2
LEADI,NUMBER
ADDDI,SIGN3
CLD
REP MOVSB
MOVCX,F
MOVAX,'$'
LEADI,BUFF3+2
REP STOSB
MOVCX,N+1
LEASI,BUFF1+2
LEADI,SNAME
ADDDI,SIGN1
CLD
REP MOVSB
MOVCX,N
MOVAX,'$'
LEADI,BUFF1+2
子程序COPY:
关键代码分析:
MOVCX,N+1
LEASI,BUFF1+2
LEADI,SNAME
ADDDI,SIGN1
CLD
REP MOVSB
MOVCX,N
MOVAX,'$'
LEADI,BUFF1+2
REP STOSB
CX为姓名长度,将缓存区的姓名传入到SNAME中,SIGN1为他们的间隔,传完之后再将缓存区的数据清空,全部设置为$。学号和成绩也是如此。
子程序CHANGE,次程序主要是将缓存区的成绩转换成二进制并保存到SCORE2中,其中用刀了LOOP循环,首先,将成绩位数赋值给CX,X置0,取出成绩的最高位。与000F相与,保存最低4位,也就是转换成二进制。X再乘10。加上成绩的这一位十进制值。指针下移到下一个再进行循环知道全部完成。最后将转换好的十进制数存入SCORE2之中。
首先调用INPUT功能输入学号,姓名,成绩,存入BUFF1,BUFF2,BUFF3缓存中,此时的输入顺序就是他们排名。再调用COPY将3个缓存中的数据保存在NUBER,SNAME,SCORE1中。此时再调用CHANG功能把SCORE1中的成绩转换成2进制存到SCORE2中。用冒泡排序法从高到低进行排序,此时SCORE2的顺序改变,顺序号也改变,而NUBER,SNAME,SCORE1中的数据都不改变。最后,调用PRINT方法输出,按照成绩降序进行输出。根据他们的顺序号找出他们在NUBER,SNAME,SCORE1中的学号,姓名,成绩输出。
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
MOVAX,0
MOVBX,0
MOVAL,MINGCI[DI]
DECAL
MOVBL,5
MULBL
LEADX,SCORE1
ADDDX,AX
MOVAH,9
INT 21H
INCDI
LOOP REPT3
RET
PRINT ENDP
CODESENDS
1.必须画流程图。
2.本程序要求要有多重循环和子程序,其中成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。
四、实验结果及分析
本程序一共有5个子程序。子程序分别是INPUT键盘输入,COPY数据转存,CHANG 十进制数转换成二进制,SORT按成绩排序和PRINT打印排序名单。
输入界面:
REPT3:
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
MOVDL,CONT
MOVAH,2
INT 21H
INCCONT
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
MOVAX,0
MOVAL,MINGCI[DI]
DECAL
MOVBL,4
JGE NEXT
XCHGAX,SCORE2[BX+M+1]
MOVSCORE2[BX],AX
MOVAL,MINGCI[SI]
XCHGAL,MINGCI[SI+1]
MOVMINGCI[SI],AL
NEXT:
ADDBX,M+1
INCSI
LOOP LOOP2
POPCX
LOOP LOOP1
RET
采用了冒泡排序的方法,将SCORE2表中的成绩从大到小排序,MINGCI中的顺序也同时按照成绩高低排序。
实验题目
显示学生名次表
一、实验目的
进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序和子程序编程方法,巩固提高汇编语言程序设计能力应用水平。
二、设备与环境
PC兼容机、Windows操作系统、汇编程序masm611。
三、实验内容
编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字节的GRADE数组中,其中GRADE+N保存学号N+1的学生成绩。然后根据GRADE中的学生成绩,把学生名次填入50字节的RANK数组中,其中RANK+N的内容是学号为N+1学生的名次。再按学号顺序把学生成绩及学生名次显示出来。
ASSUMECS:CODES,DS:DATAS,SS:STACKS
MAIN PROC FAR
START:
MOVAX,DATAS
MOVDS,AX
MOVES,AX
MOVBX,0
MOVCX,0
CALL INPUT
CALL SORT
CALL PRINT
MOVAH,4CH
INT 21H
MAIN ENDP
INPUT PROC
MOVAH,10
INT 21H
MOVAL,BUFF1+1
ADDAL,2
MOVAH,0
MOVSI,AX
MOVBUFF1[SI],0
LEADX,INFOR2
MOVAH,9
INT 21H
LEADX,BUFF2
MOVAH,10
INT 21H
MOVAL,BUFF2+1
ADDAL,2
MOVAH,0
MOVSI,AX
子程序print::
关键代码:
MOVAX,0
MOVAL,MINGCI[DI]
DECAL
MOVBL,9
MULBL
LEADX,SNAME
ADDDX,AX
MOVAH,9
INT 21H
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
取出它的名次,根据名次知道了它的输入时顺序,计算它的名字在SNAME中的位置。找到了它的名字然后输出名字。学号,成绩也是如此。
ENDSTART
收获体会:
通过这次的汇编程序,我从中学习到了很多知识。虽然刚开始的时候遇到了很多难题,但是通过与老师、同学的交流之后,逐步克服了一个个的难题。提高了自己编程的思维能力,在将来的学习,生活之中能够快速的解决问题。汇编相对于别的编程语言而言,难度是比较大。汇编是直接对CUP进行操作,能够直接控制计算机编程。由于汇编不像JAVA 那样的高级编程语言面向对象,在编程的时候思维有点乱,容易出错,而且小的错误也不容易找到,特别是程序代码长的时候。
INCBX
CMPBX,P
JA EXIT
LEADX,INFOR3
MOVAH,9
INT 21H
LEADX,BUFF3
MOVAH,10
INT 21H
MOVAL,BUFF3+1
ADDAL,2
MOVAH,0
MOVSI,AX
MOVBUFF3[SI],0
LEADX,INFOR1
MOVAH,9
INT 21H
LEADX,BUFF1
XCHGAL,MINGCI[SI+1]
MOVMINGCI[SI],AL
NEXT:
ADDBX,M+1
INCSI
LOOP LOOP2
POPCX
LOOP LOOP1
RET
SORT ENDP
PRINT PROC
LEADX,INFOR0
MOVAH,9
INT 21H
MOVCX,P
MOVBX,0
MOVAX,0
MOVDI,0
SCORE1DWPDUP(M+1DUP(0))
SCORE2DWPDUP(M+1DUP(0))
MINGCIDBPDUP(0)
XDW?
SIGN1DW0
SIGN2DW0
SIGN3DW0
CONTDB'1'
DATASENDS
STACKSSEGMENT
;此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
NEQU8
MEQU4
FEQU3
PEQU3
QEQU3
BUFF3DBF,?,FDUP(0),'$'
BUFF1DBN,?,NDUP(0),'$'
BUFF2DBM,?,MDUP(0),'$'
NUMBERDBPDUP(F+1DUP(0))
SNAMEDBPDUP(N+1DUP(0))
REP STOSB
MOVCX,M+1
LEASI,BUFF2+2
LEADI,SCORE1
ADDDI,SIGN2
CLD
REP MOVSB
LEASI,BUFF2+2
MOVDI,SIGN2
CALL CHANGE
RET
COPY ENDP
CHANGE PROC
MOVX,0
MOVCX,[SI-1]
ANDCX,000FH
子程序COPY的设计业分为三个部分:学号转存,姓名转存,成绩转存。三个数据的转存方法也相同的。首先将长度传给CX寄存器,再将源目标地址和目的地址分别给SI和DI,再调用REP MOVSB 进行串传送,传送完成之后,要将原来的BUFF缓存区清空,全部设置为$。但是由于成绩是以十进制保存的,所以还要转换为二进制。则在子程序COPY中调用CHANGE程序
全部代码:
DATASSEGMENT
INFOR0DB0AH,0DH,'SORT=$'
INFOR1DB0AH,0DH,'INPUT NAME:$'
INFOR2DB0AH,0DH,'INPUT SCORE:$'
INFOR3DB0AH,0DH,'INPUT NUMBER:$'
OUT1DB'NUBER:$'
OUT2DB'NAME:$'
MULBL
LEADX,NUMBER
ADDDX,AX
MOVAH,9
INT 21H
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
MOVAX,0
MOVAL,MINGCI[DI]
DECAL
MOVBL,9
MULBL
LEADX,SNAME
ADDDX,AX
MOVAH,9
INT 21H
REPT2:
MOVAL,[SI]
CMPAL,30H
JL EXIT1
CMPAL,39H
JG EXIT1
ANDAX,000FH
XCHGAX,X
MOVDX,10
MULDX
ADDX,AX
INCSI
LOOP REPT2
MOVAX,X
MOVSCORE2[DI],AX
MOVX,0
ADDSIGN2,2
EXIT1: RET
CHANGE ENDP
SORT PROC
MOVCX,P
DECCX
LOOP1:
PUSHCX
MOVBX,0
MOVSI,0
LOOP2:
MOVAX,SCORE2[BX]
CMPAX,SCORE2[BX+M+1]
JGE NEXT
XCHGAX,SCORE2[BX+M+1]
MOVSCORE2[BX],AX
MOVAL,MINGCI[SI]
将成绩位数给CX,从BUFF2中取出第一位数给AL,然后去掉ASCII码再将它与10相乘,再与X相加得到二进制成绩数最后存入到SCORE2中。
子程序SORT:
关键代码分析:
MOVCX,P
DECCX
LOOP1:
PUSHCX
MOVBX,0
MOVSI,0
LOOP2:
MOVAX,SCORE2[BX]
CMPAX,SCORE2[BX+M+1]
子程序INPUT的程序中主要有三个部分:学号输入,姓名输入,成绩输入,它们都设有缓区,分别为BUFF1,BUFF2,BUFF3。输入方式是调用了10号功能,输入一个字符串,长度也已经在之前设计好了。学号,姓名,成绩都是相同的输入方式,在输入完之后,由于最后一个回车符会被接收,所以,在每次输入完之后,将最后的回车符换为0,便于输出显示。同时也将它们的次序保存到MINGCI之中。学号,姓名,成绩输入完成后,子程序INPUT再调用COPY将缓存区转存到学号,姓名,成绩存储单元之中。
子程序CHANGE:
关键代码:
REPT2:
MOVAL,[SI]
CMPAL,30H
JL EXIT1
CMPAL,39H
JG EXIT1
ANDAX,000FH
XCHGAX,X
MOVDX,10
MULDX
ADDX,AX
INCSI
LOOP REPT2
MOVAX,X
MOVSCORE2[DI],AX
MOVX,0
ADDSIGN2,2
子程序流程图:
主程序:
INPUT子程序:
主要代码分析:
LEADX,INFOR1
MOVAH,9
INT 21H
LEADX,BUFF1
MOVAH,10
INT 21H
MOVAL,BUFF1+1
ADDAL,2
MOVAH,0
MOVSI,AX
MOVBUFF1[SI],0
此代码是输入姓名的代码,首先讲缓存区BUFF1的偏移地址给DX调用10号功能输入一个字符串,然后将回车0D所在位置换为0便于输出显示。
华北科技院综合性
实 验 报 告
课程名称汇 编 语 言
实验学期2011至2012学年 第1学期
学生所在系部计算机学院网络工程系
年级2009专业班级网络B091
学生姓名罗希学号************
任课教师李冬艳
实验成绩
计算机学院制
《汇 编 语 言》课程综合性实验报告
开课实验室:软件一实验室2011年12月6日
MOVBUFF2[SI],0
MOVMINGCI[BX-1],BL
CMPBX,1
JZ LET1
ADDSIGN1,N+1
ADDSIGN2,Q
ADDSIGN3,F+1
LET1:
CALL COPY
JMP INPUT
EXIT:
RET
INPUT ENDP
COPY PROC
MOVCX,F+1
LEASI,BUFF3+2
LEADI,NUMBER
ADDDI,SIGN3
CLD
REP MOVSB
MOVCX,F
MOVAX,'$'
LEADI,BUFF3+2
REP STOSB
MOVCX,N+1
LEASI,BUFF1+2
LEADI,SNAME
ADDDI,SIGN1
CLD
REP MOVSB
MOVCX,N
MOVAX,'$'
LEADI,BUFF1+2
子程序COPY:
关键代码分析:
MOVCX,N+1
LEASI,BUFF1+2
LEADI,SNAME
ADDDI,SIGN1
CLD
REP MOVSB
MOVCX,N
MOVAX,'$'
LEADI,BUFF1+2
REP STOSB
CX为姓名长度,将缓存区的姓名传入到SNAME中,SIGN1为他们的间隔,传完之后再将缓存区的数据清空,全部设置为$。学号和成绩也是如此。
子程序CHANGE,次程序主要是将缓存区的成绩转换成二进制并保存到SCORE2中,其中用刀了LOOP循环,首先,将成绩位数赋值给CX,X置0,取出成绩的最高位。与000F相与,保存最低4位,也就是转换成二进制。X再乘10。加上成绩的这一位十进制值。指针下移到下一个再进行循环知道全部完成。最后将转换好的十进制数存入SCORE2之中。
首先调用INPUT功能输入学号,姓名,成绩,存入BUFF1,BUFF2,BUFF3缓存中,此时的输入顺序就是他们排名。再调用COPY将3个缓存中的数据保存在NUBER,SNAME,SCORE1中。此时再调用CHANG功能把SCORE1中的成绩转换成2进制存到SCORE2中。用冒泡排序法从高到低进行排序,此时SCORE2的顺序改变,顺序号也改变,而NUBER,SNAME,SCORE1中的数据都不改变。最后,调用PRINT方法输出,按照成绩降序进行输出。根据他们的顺序号找出他们在NUBER,SNAME,SCORE1中的学号,姓名,成绩输出。
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
MOVAX,0
MOVBX,0
MOVAL,MINGCI[DI]
DECAL
MOVBL,5
MULBL
LEADX,SCORE1
ADDDX,AX
MOVAH,9
INT 21H
INCDI
LOOP REPT3
RET
PRINT ENDP
CODESENDS
1.必须画流程图。
2.本程序要求要有多重循环和子程序,其中成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。
四、实验结果及分析
本程序一共有5个子程序。子程序分别是INPUT键盘输入,COPY数据转存,CHANG 十进制数转换成二进制,SORT按成绩排序和PRINT打印排序名单。
输入界面:
REPT3:
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
MOVDL,CONT
MOVAH,2
INT 21H
INCCONT
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
MOVAX,0
MOVAL,MINGCI[DI]
DECAL
MOVBL,4
JGE NEXT
XCHGAX,SCORE2[BX+M+1]
MOVSCORE2[BX],AX
MOVAL,MINGCI[SI]
XCHGAL,MINGCI[SI+1]
MOVMINGCI[SI],AL
NEXT:
ADDBX,M+1
INCSI
LOOP LOOP2
POPCX
LOOP LOOP1
RET
采用了冒泡排序的方法,将SCORE2表中的成绩从大到小排序,MINGCI中的顺序也同时按照成绩高低排序。
实验题目
显示学生名次表
一、实验目的
进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序和子程序编程方法,巩固提高汇编语言程序设计能力应用水平。
二、设备与环境
PC兼容机、Windows操作系统、汇编程序masm611。
三、实验内容
编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字节的GRADE数组中,其中GRADE+N保存学号N+1的学生成绩。然后根据GRADE中的学生成绩,把学生名次填入50字节的RANK数组中,其中RANK+N的内容是学号为N+1学生的名次。再按学号顺序把学生成绩及学生名次显示出来。
ASSUMECS:CODES,DS:DATAS,SS:STACKS
MAIN PROC FAR
START:
MOVAX,DATAS
MOVDS,AX
MOVES,AX
MOVBX,0
MOVCX,0
CALL INPUT
CALL SORT
CALL PRINT
MOVAH,4CH
INT 21H
MAIN ENDP
INPUT PROC
MOVAH,10
INT 21H
MOVAL,BUFF1+1
ADDAL,2
MOVAH,0
MOVSI,AX
MOVBUFF1[SI],0
LEADX,INFOR2
MOVAH,9
INT 21H
LEADX,BUFF2
MOVAH,10
INT 21H
MOVAL,BUFF2+1
ADDAL,2
MOVAH,0
MOVSI,AX
子程序print::
关键代码:
MOVAX,0
MOVAL,MINGCI[DI]
DECAL
MOVBL,9
MULBL
LEADX,SNAME
ADDDX,AX
MOVAH,9
INT 21H
MOVDL,0AH
MOVAH,2
INT 21H
MOVDL,0DH
INT 21H
取出它的名次,根据名次知道了它的输入时顺序,计算它的名字在SNAME中的位置。找到了它的名字然后输出名字。学号,成绩也是如此。
ENDSTART
收获体会:
通过这次的汇编程序,我从中学习到了很多知识。虽然刚开始的时候遇到了很多难题,但是通过与老师、同学的交流之后,逐步克服了一个个的难题。提高了自己编程的思维能力,在将来的学习,生活之中能够快速的解决问题。汇编相对于别的编程语言而言,难度是比较大。汇编是直接对CUP进行操作,能够直接控制计算机编程。由于汇编不像JAVA 那样的高级编程语言面向对象,在编程的时候思维有点乱,容易出错,而且小的错误也不容易找到,特别是程序代码长的时候。
INCBX
CMPBX,P
JA EXIT
LEADX,INFOR3
MOVAH,9
INT 21H
LEADX,BUFF3
MOVAH,10
INT 21H
MOVAL,BUFF3+1
ADDAL,2
MOVAH,0
MOVSI,AX
MOVBUFF3[SI],0
LEADX,INFOR1
MOVAH,9
INT 21H
LEADX,BUFF1
XCHGAL,MINGCI[SI+1]
MOVMINGCI[SI],AL
NEXT:
ADDBX,M+1
INCSI
LOOP LOOP2
POPCX
LOOP LOOP1
RET
SORT ENDP
PRINT PROC
LEADX,INFOR0
MOVAH,9
INT 21H
MOVCX,P
MOVBX,0
MOVAX,0
MOVDI,0
SCORE1DWPDUP(M+1DUP(0))
SCORE2DWPDUP(M+1DUP(0))
MINGCIDBPDUP(0)
XDW?
SIGN1DW0
SIGN2DW0
SIGN3DW0
CONTDB'1'
DATASENDS
STACKSSEGMENT
;此处输入堆栈段代码
STACKSENDS
CODESSEGMENT