请编制程序PROG1.ASM,其功能是:对10个无符号字节数据排序(升序),然后剔除第一个数和最后一个数,并按四舍五入原则计算其余8个数据的算术平均值。将剩余的8个数据存入指定的内存区域中,其后存放平均值。 例如: 内存中有:1,5,4,0,7

admin2009-02-15  24

问题 请编制程序PROG1.ASM,其功能是:对10个无符号字节数据排序(升序),然后剔除第一个数和最后一个数,并按四舍五入原则计算其余8个数据的算术平均值。将剩余的8个数据存入指定的内存区域中,其后存放平均值。
   例如:
   内存中有:1,5,4,0,7,9,2,6,8,3
   结果为:1,2,3,4,5,6,7,8,5
   部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件 OUTPUT1.DAT中。
   填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
   对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。
   试题程序:
              EXTRN     LOAD:FAR, SAVE:FAR
   N          EQU       10
   DSEG       SEGMENT
   SOURCE     DB        N DUP(?)
   RESULT     DB        N-1 DUP(0)
   NAME0      DB        ’INPUT1. DAT’,0
   NAME1      DB        ’OUTPUT 1.DAT’,0
   TEMP       DW        0
   DSEG       ENDS
   SSEG       SEGMENT   STACK
              DB        256 DUP(?)
   SSEG       ENDS
   CSEG       SEGMENT
              ASSUME    CS: CSEG, SS: SSEG, DS: DSEG, ES: DSEG
   START      PROC      FAR
              PUSH      DS
              XOR       AX, AX
              PUSH      AX
              MOV       AX, DSEG
              MOV       DS, AX
              MOV       ES, AX
              LEA       DX, SOURCE
              LEA       SI, NAME0
              MOV       CX, N
              CALL      LOAD
   ;*** BEGIN ***
              MOV       BX,  (1)   
   GOONI:      (2)  
              LEA       SI, SOURCE
   GOONJ:     MOV       AL, [SI]
              CMP       AL, [SI+1]
              JLE       NEXT
              XCHG      AL, [SI+1]
              MOV       [SI], AL
   NEXT:      ADD       SI, 1
              LOOP      GOONJ
               (3)   
              JNZ       GOONI
              CLD
              LEA       SI, SOURCE
              LEA       DI, RESULT
              MOV       CX,  (4)  
              INC       SI
   LP2:       LODSB
              CBW
              ADD       TEMP, AX
              STOSB
   LP1:       LOOP      LP2
              MOV       AX, TEMP
               (5)  
              DIV       DL
              ADD       AH, AH
              CMP       AH, DL
              JB        OFF
               (6)   
   OFF:       MOV       [DI], AL
   ; *** END ***
   EXIT:      LEA       DX,RESULT
              LEA       SI,NAME1
              MOV       CX,N-1
              CALL      SAVE
              RET`
   START      ENDP
   CSEG       ENDS
              END        START

选项

答案(1)N (2) MOV CX, N-1 (3) DEC BX(4) N-2 (5) MOV DL, N-2 (6) ADD AL,1

解析 首先将数值排序;然后从排序后的第二个数开始,求其后N-2个数的按四舍五入原则的算术平均值。
转载请注明原文地址:https://jikaoti.com/ti/jwV7FFFM
0

最新回复(0)