请编制程序,其功能是:将一数据采集系统中采集的80个字节无符号数(已存于SOURCE开始的内存区域)按算术平均数字滤波方法进行数字滤波,每8个数求一个平均值(舍去余数)。将10个平均值依次写入RESULT指示的内存区域。 例如:
+ N: D" F% t( c: a9 I8 X+ ]4 F 原采集数据 1EH 31H 31H 33H 58H 75H 38H 34H 49H A2H 98H
/ H: X0 f! e) H [6 E+ r DFH 99H 64H 64H B7H…1 Z( o1 M: Y0 C! Q
结果为 3DH CCH…# o- T# X; C) A$ i4 v1 D0 I
部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
9 J5 @$ u( i: | 填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
8 W( J$ B0 `. U7 i6 v; m' ~ 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。% R4 v/ n8 K" W
试题程序:
; C; f7 U+ b8 S6 A EXTRN LOAD:FAR,SAVE:FAR' D1 v( J. U: k3 k# M
N EQU 109 ?2 Q' P9 v, y7 p! \
STAC SEGMENT STACK" }2 z( ]) Y5 r( {5 p) p, F
DB 128 DUP(?)7 R2 D% P# q: @. T# S1 h. T4 v0 y0 t
STAC ENDS* M4 I2 D1 l4 |: Z
DATA SEGMENT3 ?' H. d. y7 g+ i$ h
SOURCE DB 8*N DUP(?)0 _/ _" E' W4 x. s7 C
RESULT DB N DUP(0)# f+ a4 S" z6 C, l6 t3 t2 r; c
NAME0 DB 'INPUT1.DAT',0
. \0 ]+ g6 X& Y+ F NAME1 DB 'OUTPUT1.DAT',0
, s8 b, f# c& C DATA ENDS
, E% X* q. \" f. o CODE SEGMENT
9 o2 [% t3 W, ~ ASSUME CS:CODE,DS:DATA,SS:STAC
^4 o- F" |$ c# @. H START PROC FAR8 Z* a Q! s, A+ D
PUSH DS
! U6 C* f0 l7 h/ W2 [ XOR AX,AX9 L# {: B4 E/ W3 q
PUSH AX
- ^( H" v o/ q0 o9 q G MOV AX,DATA
. k& v% j' ?+ t% q MOV DS,AX
+ v& O7 P8 ?0 j% L LEA DX,SOURCE ;数据区起始地址. z: c: P, S+ s5 O( q3 F$ W6 B/ _
LEA SI,NAME0 ;原始数据文件名$ V6 L/ v# }# v* F
MOV CX,6*N ;字节数
2 D/ R \5 H8 N9 O& W1 X' j/ r CALL LOAD ;从'INPUT1.DAT'中读取数据- X4 H$ h' {0 ~% {
;****BEGIN****% h, C) ? j2 u" ^
LEA SI,SOURCE+ A4 M! W/ ^& G/ _# E0 t7 r4 e5 D
MOV __________________
/ A# w' Z; z! R: B7 q MOV DX,N+ N4 H* D( l$ D* |4 Z
MAGN1: XOR AX,AX2 z) H1 t7 z4 m/ v+ ?
XOR BX,BX
/ P! E( A* \ z( B+ e MOV CX,_______________
/ k0 k/ Z, l" J$ U! q MAGN2: MOV AL,[SI] ;取数并求和放BX中) M, m: }- | C, g. H- `7 Y! S
ADD BX,_______________. S2 f3 g5 a0 q* P, e5 h1 g# M% @0 ?6 [
INC SI" J! `7 \' h0 j, }
____________________________
7 b. f+ `4 K. t4 W- | MOV AX,BX
7 U9 T6 n9 w3 A* j ____________________________
# k. S: a( z6 P! t/ ]* p: ~ ____________________________
% _& T0 N! h. ] p2 z1 _ ____________________________& m$ d9 T( ~" l, [% c* k
____________________________
" J6 x; ], O8 p p* k3 F DEC DX
, Q6 B- V8 j. _- Y. I/ R4 A- t9 J ________ MAGN1% y5 @! l+ X- b2 O5 f% C* j) R
;****END****
. p- C) B5 E* Q, U0 ^' O3 n LEA DX,RESULT ;结果数据区首址: R t1 Q+ F& g5 K! F4 @/ E
LEA SI,NAME1 ;结果文件名" Y) ?9 q6 y; X
MOV CX,N ;字节数
2 A$ G3 t5 c# f5 v) ] CALL SAVE ;保存结果到文件; u, H0 r* q+ n
RET
( h3 ? q7 N8 ?! }( h5 z4 p START ENDP
/ Z( j" s, T# D7 \2 y CODE ENDS
- j0 T% m3 J' l, f END START |