請編制程序,其功能是:剔除10個8位無符號二進制數(shù)據(jù)中的最大值和最小值,然后按四舍五入原則計算其
請編制程序,其功能是:剔除10個8位無符號二進制數(shù)據(jù)中的最大值和最小值,然后按四舍五入原則計算其余8個數(shù)據(jù)的算術平均值,將剔除最大值和最小值之后的8個數(shù)據(jù)依次存入指定的內(nèi)存區(qū)域中,并在其后存放平均值。
例如:
內(nèi)存中有:01H,05H,04H,00H,07H,09H,02H,06H,08H,03H
結果為: 01H,05H,04H,07H,02H,06H,08H,03H,05H
部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內(nèi)存單元中,運算結果要求從 RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。
請?zhí)羁誃EGIN和END之間已給出的源程序使其完整,空白已用橫線標出,每個空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可,或刪除BEGIN和END之間原有的代碼并自行編程來完成所要求的功能。
對程序必須進行匯編,并與IO.OBJ鏈接產(chǎn)生可執(zhí)行文件,最終運行程序產(chǎn)生結果。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。
[試題程序]
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 'OUTPUT1.DAT',0
TEMP DW 0
DSEG ENDS
SSEG SEGMENT STACK
DB 200 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 ********
XOR AX,AX
XOR BX,BX
XOR DX,DX
MOV SI,OFFSET SOURCE
MOV BL, (1) ; 取第一個數(shù)作為最大值暫存BL
MOV DL, (2) ; 取第一個數(shù)作為最小值暫存DL
MOV CX,N
GOON: ADD AL,[SI]
ADC AH,0
CMP BL,[SI]
JA (3)
MOV BL,[SI]
CONT: CMP DL,[SI]
(4)
MOV DL,[SI]
NEXT: INC SI
LOOP GOON
CLD
LEA SI,SOURCE
LEA DI,RESULT
MOV CX,
正確答案:(1) [SI] (2) [SI] (3) CONT(4) JL NEXT (5) 8 (6) INC AL(1) [SI] (2) [SI] (3) CONT(4) JL NEXT (5) 8
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領域),建議您咨詢相關領域專業(yè)人士。