微机原理及应用习题库硬件应用设计题汇编语言程序设计题.doc

上传人:s****u 文档编号:12813823 上传时间:2020-05-26 格式:DOC 页数:27 大小:120KB
返回 下载 相关 举报
微机原理及应用习题库硬件应用设计题汇编语言程序设计题.doc_第1页
第1页 / 共27页
微机原理及应用习题库硬件应用设计题汇编语言程序设计题.doc_第2页
第2页 / 共27页
微机原理及应用习题库硬件应用设计题汇编语言程序设计题.doc_第3页
第3页 / 共27页
点击查看更多>>
资源描述
微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815假设有一字节型数组ARRAY,编写完整的汇编语言程序求该数组中负数的个数。其中,在该数组的第一个字节存放的是数组中所包含的数据的个数,第二个字节用来存放结果,即数组中负数的个数,数组中的第三个字节开始存放的是数组中的数据。 1 写出编程思想;2 编写完整的源程序。1. 编程思想为统计数组中负数的个数,需要逐个判断数组中的每个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,便是数组中所包含的负数的个数。2完整的源程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT ARRAY DB 200 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DI,ARRAY MOV SI,DI MOV CL,DI XOR CH,CH MOV BL,CH INC DI INC DI AGAIN:TEST BYTE PTRDI,80H JZ POSI INC BL POSI: INC DI LOOP AGAIN MOV SI+1,BL MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815编一个完整的汇编语言程序,完成从键盘输入一个字符,若输入的是1字符,则在屏幕上显示你的英文名字;若输入的是2字符,则在屏幕上显示你的学号。若输入的不是1或者2字符,则重新输入。STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT STRING1 DB DO YOU WANT TO INPUT STRING?(Y/N):$ CRLF DB 0DH,0AH,$ STRING2 DB PLEASE INPUT STRING.,0DH,0AH,$ NAME DB ZHANG SAN. ,0DH,0AH,$ NUMBER DB 020701053. ,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DX,STRING1 MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL,Y JE INPUT CMP AL,y JNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H LEA DX,STRING2 MOV AH,09H INT 21H AGAIN: MOV AH,01H INT 21H CMP AL,1 JE DISPNAME CMP AL,2 JE DISPNUMBER JMP AGAINDISPNAME: LEA DX,NAME MOV AH,09H INT 21H JMP DONEDISPNUMBER:LEA DX,NUMBER MOV AH,09H INT 21H DONE: MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815假设有一字节型数组ARRAY,编写完整的汇编语言程序求该数组中小于80H的数的个数。其中,在该数组的第一个字节存放的是数组中所包含的数据的个数,第二个字节用来存放结果,数组中的第三个字节开始存放的是数组中的数据。1. 写出编程思想;2. 编写完整的源程序。1.编程思想将数组中的每个数逐个与80H比较,根据大小关系方可统计出数组中小于80H的数的个数2.完整的源程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT ARRAY DB 200 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DI,ARRAY MOV SI,DI MOV CL,DI XOR CH,CH MOV BL,CH INC DI INC DI AGAIN:CMP BYTE PTRDI,80H JAE L1 INC BL L1: INC DI LOOP AGAIN MOV SI+1,BL MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815在存储器DATABUF以下连续的单元存放着由字符0 9或A F组成的一串字符(字符个数自定义或用其它方法求解),试编写完整的8086汇编语言程序,将其转换成数字存回原处。(如某单元的字符为1,即31H,就转换成01H;为A, 即41H,就转换成0AH)1. 写出编程思想;2. 编写完整的源程序。1.编程思想 将存储器DATABUF以下连续的单元中的每个数与39H(1字符的ASCLL码)比较,若该数小于等于39H,则将该数减去30H,否则将该数减去37H,其结果就是该字符对应的数字。2. 完整的源程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT DATABUF DB 1234ABCDdcsa56 COUNT EQU $-DATABUFDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET DATABUF MOV CX,COUNT NEXT: MOV AL,SI CMP AL,39H JBE L1 SUB AL,7 L1: SUB AL,30H MOV SI,AL INC SI LOOP NEXT MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815在当前数据段,偏移地址为DATAB开始的顺序80个单元中,存放着某班80个同学某门课考试的成绩,编写程序统计高于等于90分,80分89分,70分79分,60分69分,低于60分的人数各为多少,将结果放在同一数据段、偏移地址为BTRX开始的顺序单元中。1. 写出编程思想。2. 编写完整的源程序。1. 编程思想将偏移地址为DATAB开始的顺序80个单元中的数分别与90、80、70、60比较,根据比较的大小关系就可统计出高于等于90分,80分89分,70分79分,60分69分,低于60分的人数。2. 完整的源程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT DATAB DB 80 DUP(?) BTRX DB 5 DUP(00H)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET DATAB MOV DI,OFFSET BTRX XOR BX,BX XOR DX,DX MOV CX,80 NEXT: MOV AL,SI CMP AL,90 JB C80 INC BH ;90分的人数 JMP AAA C80: CMP AL,80 JB C70 INC BL ;80分的人数 JMP AAA C70: CMP AL,70 JB C60 INC DH ;70分的人数 JMP AAA C60: CMP AL,60 JB AAA INC DL ;60分的人数 JMP AAA AAA: INC SI LOOP NEXT MOV AL,80 SUB AL,BH SUB AL,BL SUB AL,DH SUB AL,DL ;50分的人数 MOV DI,BH MOV DI+1,BL MOV DI+2,DH MOV DI+3,DL MOV DI+4,AL MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815编写完整的汇编语言程序,实现从键盘输入一串字符,并在屏幕上显示出来。1. 写出编程思想。2. 编写完整的汇编语言程序。1. 编程思想用DOS 0AH号功能完成从键盘输入一串字符,用DOS 09H号功能完成屏幕的显示。2. 完整的汇编语言程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENTSTRING1 DB DO YOU WANT TO INPUT STRING?(Y/N):$ CRLF DB 0DH,0AH,$ STRING2 DB PLEASE INPUT STRING.,0DH,0AH,$ BUFIN DB 20H DB ? BUFIN1 DB 20H DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DX,STRING1 MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL,Y JE INPUT CMP AL,y JNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H LEA DX,STRING2 MOV AH,09H INT 21H LEA DX,BUFIN MOV AH,0AH INT 21H MOV AL,BUFIN+1 CBW LEA SI,BUFIN+2 ADD SI,AX MOV BYTE PTR SI,$ LEA DX,CRLF MOV AH,09H INT 21H LEA DX,BUFIN+2 MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815已知有100个8位无符号数已存放在缓存区INX中,编写完整的汇编语言程序,实现对这100个数据由高到低排序。 1。写出编程思想。2。编写完整的汇编语言程序。1. 编程思想利用气泡排序法对这100个8位无符号数两两进行比较,从而完成值的大小从大至小排序。2. 完整的汇编语言程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENTINX DB 100 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CH,100-1 B10: LEA SI,INX MOV CL,CH B20: MOV AL ,SI CMP AL ,SI+1 JAE B30 XCHG AL, SI+1 MOV SI,ALB30: INC SI DEC CL JNZ B20 DEC CH JNZ B10 MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815编写完整的汇编语言程序,实现以下功能:从键盘输入一串字符,将其按ASCII码值的大小从小至大排序,并将排好序的新的字符串输出到屏幕上显示出来。1。写出编程思想。2。编写完整的汇编语言程序。1. 编程思想用DOS 0AH号功能完成从键盘输入一串字符,利用气泡排序法对输入的字符串中字符两两进行比较,从而完成按ASCII码值的大小从大至小排序。对排好序的新的字符串,用DOS 09H号功能完成屏幕的显示。2. 完整的汇编语言程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENTSTRING1 DB DO YOU WANT TO INPUT STRING?(Y/N):$ CRLF DB 0DH,0AH,$ STRING2 DB PLEASE INPUT STRING.,0DH,0AH,$ BUFIN DB 20H DB ? BUFIN1 DB 20H DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DX,STRING1 MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL,Y JE INPUT CMP AL,y JNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H LEA DX,STRING2 MOV AH,09H INT 21H LEA DX,BUFIN MOV AH,0AH INT 21H MOV AL,BUFIN+1 CBW LEA SI,BUFIN+2 ADD SI,AX MOV BYTE PTR SI,$ LEA DX,CRLF MOV AH,09H INT 21H MOV CH,BUFIN+1 DEC CH B10: LEA SI,BUFIN+2 MOV CL,CH B20: MOV AL ,SI CMP AL ,SI+1 JAE B30 XCHG AL, SI+1 MOV SI,ALB30: INC SI DEC CL JNZ B20 DEC CH JZ DISP JMP B10DISP: LEA DX,BUFIN+2 MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815在首址为DAT的字数组中存放有100个无符号数,求出它们的平均值,并统计大于、等于及小于此平均数的个数。1 简述编程思想,画出流程图;2 编写完整的源程序。1. 编程思想先求出100个无符号数的和,除以100就是平均值;然后用每个数与平均值比较就可得出大于、等于及小于此平均数的个数。2. 完整的汇编语言程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT DAT DB 100 DUP(?) LVEL DB 0 GDAT DB 0 EDAT DB 0 LDAT DB 0DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CX,100 LEA SI,DAT MOV AX,0 L1: ADD AL,SI ADC AH,0 INC SI LOOP L1 MOV BL,100 DIV BL MOV LVEL,AL MOV CX,100 LEA SI,DAT CMP SI,AL JA DY JE XD INC LDAT JMP L2DY: INC GDAT JMP L2XD: INC EDATL2: INC SI LOOP L1 MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815编一个完整的汇编语言程序,求某数的绝对值,并将结果放回原处。STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT XADR DW 3456HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,XADR TEST AX,8000H JNS DONE NEG AX MOV XADR,AX MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815编一个完整的汇编语言程序,完成将以DSRC为首址的连续的100个字节搬家到DDST以下单元。STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT DSRC DB 100 DUP(?) DDST DB DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA SI,DSRC LEA DI,DDST MOV CX,100 NEXT: MOV AL,SI MOV DI,AL INC SI INC DI LOOP NEXT MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815编写FAR类型子程序实现以十六进制数在屏幕上显示AL的内容。1. 写出编程思想。2. 编写完整的源程序。CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK DISPLAY PROC FAR PUSH AX PUSH CX PUSH DX PUSH AX MOV CL,4;处理高位十六进制数 SHR AL,CL CALL CHANG;十六进制数变换成ASCII码 MOV AH,02 MOV DL,AL INT 21H;显示一位字符 POP AX AND AL,0FH;处理低位十六进制数 CALL CHANG;十六进制数变换成ASCII码 MOV AH,02 MOV DL,AL INT 21H;显示一位字符 POP DX POP CX POP AX RETDISPAL ENDP CODE ENDS END DISPLAY MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815编写FAR类型子程序实现统计一个字(AX)中“1”的个数。1.写出编程思想。2.编写完整的源程序。1.编程思想由于AL中有两位十六进制数,每一位的值为09、0AH0FH,在显示时需要将它们转换成相应的ASCII码,然后调用INT 21H的02H号功能进行显示。2.完整的源程序CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK COUNTER1 PROC NEAR PUSH AXMOV CX,16XOR BL,BLCOU1:SHR AX,1ADC BL,0LOOP COU1 POP AX RETCOUNTER1 ENDP CODE ENDS END DISPLAY微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815设在BUFFER中已经保存有字型数据(),其中前2个字节为数据的个数,计算数据的差分,并保存在DIFF缓冲区中。1.写出编程思想。2.编写完整的源程序。1.编程思想可根据数据的差分定义来编成计算,其公式为:2.完整的源程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENT BUFFER DW n DW X1,X2,XnDIFF DWn-1 DUP(?) DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV SI,BUFFER MOV CX,SI ADDSI,2 JCXZPROCEND;当(CX)0时,跳过循环 LEADI,DIFF MOV AX,SI ADDSI,2PROC1: ADDAX,SI SHRAX,1;完成(AX)2操作 MOV DI,AX;保存差分结果 ADDDI,2 MOVAX,SI ADDSI,2 LOOP PROC1 MOV AH,4CH INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815字节型变量VAR1、VAR2和VAR3存放有3个无符号数,将其中的内容按从大到小重新排列。1.写出编程思想。2.编写完整的源程序。1.编程思想通过在三个数中找出最大值,将它与VAR1单元进行交换;然后对剩余的两个数进行比较,将较大值存放在VAR2中。经重新排列后,VAR1的值最大,VAR3的值最小。由于变量中存放的数据为无符号数,因此应该采用JA、JAE、JB、JBE等指令。2.完整的源程序STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTVAR1DB 46H ;先假设一组值,以便检验程序设计的正确性VAR2DB 15HVAR3DB 0A2HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX LEA SP,TOP MOV AL,VAR1;用户编写的程序 CMP AL,VAR2JAE NO_CHG1XCHG AL,VAR2NO_CHG1:CMP AL,VAR3JAE NO_CHG2XCHG AL,VAR3NO_CHG2:MOV VAR1,AL;最大值保存到VAR1MOV AL,VAR2CMP AL,VAR3JAE NO_CHG3XCHG AL,VAR3MOV VAR2,AL;次大值保存到VAR2NO_CHG3:MOV AH,4CH;返回DOS操作系统INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815在SOURCE存储区中保存有500个字节数据,现在要求将数据中的0FFH值去掉,并传送到DESTINATION缓冲区中,其有效数据个数保存在NUMBER中。1.写出编程思想。2.编写完整的源程序。1.编程思想将SI指向源操作数区域,DI指向目的操作数区域,每次传送一个字节,但在传送前对其内容进行检测,如果为0FFH,则不传送。在传送的同时要使有效数据个数的计数单元NUMBER进行加1。2.完整的源程序N=500STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTSOURCE LABEL BYTE;假设有500个数据,并利用重复宏随机产生 X=17 REPT 500 X=(X+97) mod 256 DB X ENDMDESTINATIONDB N DUP(?)NUMBERDW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX LEA SP,TOP XOR AX,AX;用户编写的程序MOV NUMBER,AXMOV CX,NLEA SI,SOURCELEA DI,DESTINATIONMOVE1:MOV AL,SIINC SICMP AL,0FFHJZ MOVE2MOV DI,ALINC DIINC NUMBERMOVE2:LOOP MOVE1MOVE_END:MOV AH,4CH;返回DOS操作系统INT 21HCODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815在缓冲区DAT1和DAT2中,存放着两组递增有序的8位二进制无符号数,其中前两个字节保存数组的长度,要求编程实现将它们合并成一组递增有序的数组DAT,DAT的前两个字节用于保存新数组的长度。1.写出编程思想。2.编写完整的源程序。1.编程思想这里要用到3个指针,对于将数据写入数组DAT的指针首选使用DI,从DAT1和DAT2读数据的两个指针可分别采用SI和BX,并结合使用字符串指令,可以简化程序的设计。在程序设计中,将由BX指示的缓冲区DAT2中的内容读入AL,这样,当需要将DAT1的内容传送到DAT时,可直接采用MOVSB指令;当需要将DAT2的内容传送到DAT时,可直接采用STOSB指令。2.完整的源程序STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTDAT1 DW 10;设DAT1中有10个数据 DB 10H,25H,67H,68H,73H,83H,95H,0A8H,0C2H,0E6HDAT2 DW 13;设DAT2中有13个数据 DB 05,12H,26H,45H,58H,65H,67H,70H,76H,88H,92H,0CDH,0DEHDAT DW ? DB 200 DUP(?) DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOPMOV CX,DAT1;CX表示DAT1的数据个数MOV DX,DAT2;DX表示DAT2的数据个数MOV DAT,CX;先计算出DAT的数据个数ADD DAT,DXLEA SI,DAT1+2;SI指向DAT1的数据区LEA BX,DAT2+2;BX指向DAT2的数据区LEA DI,DAT+2;DI指向DAT的数据区CLDL1:MOV AL,BXINC BXL2:CMP AL,SIJB L3MOVSB;DAT1区中的一个数据传送到DAT区DEC CXJZ L4JMP L2L3:STOSB;DAT2区中的一个数据传送到DAT区DEC DXJZ L5JMP L1L4:MOV SI,BXDEC SIMOV CX,DXL5:REP MOVSB;将DAT1或DAT2中剩余部分全部传送到DAT区 MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START微机原理及应用 汇编语言程序设计第32讲第38讲0.80.815在AVG缓冲区中保存有按报考号顺序排列的研究生考生平均成绩,在MIN缓冲区保存有与AVG相对应的考生单科最低成绩,报考学生总人数存储在字变量NUM中,给定录取条件为:(1) 最低单科成绩不得低于60分;(2) 选定录取分数线,按平均成绩从高分到低分录取,但录取人数不超过800人。编程求取录取分数线N1和实际录取人数N2。1.写出编程思想。2.编写完整的源程序。1.编程思想首先,根据考生的单科最低成绩,剔除不合格的考生;然后将合格考生按平均成绩由高分到低分进行排序,在排序时,应该保留考生的考号信息。当合格考生人数超出计划录取人数时,录取分数线就是第800位考生的平均成绩;当合格考生人数不足计划录取人数时,录取分数线就是最后一位合格考生的平均成绩。2.完整的源程序STACK SEGMENT STACK stack DW 256H DUP(?)TOP LABEL WORDSTACK ENDSN=2000;考生人数M=800;计划录取人数DATA SEGMENTNUM DW N ;学生总人数AVG DB N DUP(?) ; 平均成绩MIN DB N DUP(?) ;最低单科成绩 N1 DB ? ;存放录取分数线 N2 DW ? ;存放实际录取人数 BUF1 DB N DUP(?) ;暂存平均成绩BUF2DW N DUP(?) ;暂存学号DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOPMOV CX,NUMCALL PRODUCT;产生模拟数据XOR SI,SI;剔除单科不合格的考生XOR DI,DI XOR BX,BXMOV CX,NUMELIMINATE:CMP MINSI,60JB ELIMINATE1MOV AL,AVGSIMOV BUF1DI,AL;保存合格考生的平均成绩INC DIMOV BUF2BX,SI;保存合格考生的考号ADD BX,2ELIMINATE1:INC SILOOP ELIMINATEMOV CX,DI;对合格考生按平均成绩由高分到低分排序LEA SI,BUF1LEA DI,BUF2CALL SORTCMP CX,M;合格考生数是否大于计划录取人数?JBE MATRI00MOV CX,MMATRI00:MOV BX,CXMOV AL,BUF1BX;录取分数线MOV N1,ALMOV N2,BX;实际录取人数MOV AL,N1;显示录取分数线CALL DISPALCALL DISPCRMOV AX,N2;显示实际录取人数CALL DISPAXCALL DISPCR MOV AH,4CH;返回DOS系统 INT 21HSORTPROC NEAR;数据排序程序PUSH AXPUSH CXPUSH SIPUSH DIDEC CX ADD SI,CX;SI指向BUF1末地址ADD DI,CX;SI指向BUF2末地址ADD DI,CXLP1:;外循环开始 PUSH CX PUSH SIPUSH DILP2:;内循环开始 MOV AL,SI CMP AL,SI-1 JBE NOXCHG XCHG AL,SI-1;交换操作 MOV SI,ALMOV AX,DI;考生考号也同步交换XCHG AX,DI-2MOV DI,AXNOXCHG: DEC SIDEC DIDEC DI LOOP LP2POP DI POP SI POP CX LOOP LP1POP DIPOP SIPOP CXPOP AXRETSORTENDPPRODUCT PROC NEAR;产生模拟数据PUSH AXPUSH CXMOV AL,17MOV BH,59LEA SI,AVGPR1:ADD AL,BHCMP AL,100JAE PR1CMP AL,40JB PR1MOV SI,ALINC SILOOP PR1POP CXMOV AL,5MOV BH,3LEA SI,AVGLEA DI,MINPR2:ADD AL,BHCMP AL,15JAE PR2MOV BL,SISUB BL,ALMOV DI,BLINC SIINC DILOOP PR2POP AXRETPRODUCT ENDPCODE ENDS END START
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!