请编制程序PROG1.ASM,其功能是:统计30个学生成绩中得分在100~90、89~80、 79~70、69~60区间以及低于60分的人数,并计算30个学生的平均成绩(取整数),结果依次存入指定的内存区域。 例如: 内存中有10个分数; 5

admin2012-03-05  42

问题 请编制程序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开始的内存单元中。运算结果要求从RESULT开始存放,由过程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     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
   ; *** 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)  
              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

选项

答案(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分为止。对于不同的分数段分别增加相应的计数器,最后计算所有学生的平均成绩。
转载请注明原文地址:https://jikaoti.com/ti/4M27FFFM
0

相关试题推荐
最新回复(0)