1、PC技术机试模拟试卷 21及答案与解析 一、程序设计题 1 请编制程序 PROG1.ASM,其功能是:统计 30个学生成绩中得分在 100 90、89 80、 79 70、 69 60区间以及低于 60分的人数,并计算 30个学生的平均成绩 (取整数 ),结果依次存入指定的内存区域。 例如: 内存中有 10个分数; 5EH,50H,64H,52H,55H,48H,3AH,4AH,40H,42H 结果为: 02H,03H,02H,02H,01H,4DH(平均成绩 ) 部分程序已给出,其中原始数据由过程 LOAD从文件 INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从 RES
2、ULT开始存放,由过程 SAVE保存到文件 OUTPUT1.DAT中。 填空 BEGIN和 END之间已给出的源程序使其完整 (空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可 ),或删除 BEGIN和 END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与 IO.OBJ链接产生 PROG1.EXE执行文件,最终运行程序产生结果 (无结果或结果不正确者均不得分 )。调试中若发现整个程序中 存在错误之处,请加以修改。 试题程序: EXTRN LOAD:FAR, SAVE:FAR N EQU 30 L EQU 5 DSEG SEGMENT SOURCE
3、DB N DUP(?) RESULT DB N+1 DUP(0) NAME0 DB INPUT1. DAT,0 NAME1 DB OUTPUT1.DAT,0 DSEG ENDS SSEG SEGMENT STACK DB 256 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, SS: SSEG, DS: DSEG START PROC FAR PUSH DS XOR AX, AX PUSH AX MOV AX, DSEG MOV DS, AX LEA DX, SOURCE LEA SI, NAME0 MOV CX, N CALL LOAD ; *
4、BEGIN * LEA SI,SOURCE LEA DI,RESULT XOR BX,BX (l) MOV CX,N GOON: LODSB (2) ADD BX,AX (3) JAE A1 CMP AL,80 JAE A2 CMP AL,70 JAE A3 CMP AL,60 JAE A4 INC (4) (5) A4: INC BYTE PTR DI+3 JMP NEXT A3: INC BYTE PTR DI+2 JMP NEXT A2: INC BYTE PTR DI+I JMP NEXT A1: INC BYTE PTR DI NEXT: LOOP GOON MOV AX, (6)
5、MOV DL, (7) DIV DL MOV DI+5, AL ; * END * LEA DX, RESULT LEA SI, NAME1 MOV CX, L+1 CALL SAVE RET START ENDP CSEG ENDS END START PC技术机试模拟试卷 21答案与解析 一、程序设计题 1 【正确答案】 (1) XOR AX, AX (2) CBW (3) CMPAL, 90 (4)BYTE PTR DI+4(5) JMP NEXT (6) BX (7) N 【试题解析】 首先将 AX和 BX都置零,对操作数进行扩展,从高于 90分的开始统计,一直到低于 60分为止。对于不同的分数段分别增加相应的计数器,最后计算所有学生的平均成绩。