请编制程序,其功能是:内存中连续存放的20个8位有符号数(补码)是由一个8位A/D转换器采集的双极性信号(Xn),现要求对该信号作如下处理(处理后的信号记为Yn): A、 Yn=Xn+5 Xn < -5
) a4 ], `2 N7 v( @3 U; n- u B、 Yn= 0 | Xn|5, J0 r3 f( ^: G3 y5 @. [3 L
例如:5 O" r% X$ c: P5 E' X( d1 V
Xn:03H,FEH,(-2)4EH,A2H(-94)…# [* \" F/ X' N5 I0 V: y
Yn:00H,00H, 49H,A7H(-89)…6 W% N! F/ s- u+ W# r
部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。7 g3 C/ }$ h, d' u2 `
填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
0 S o+ P" i9 C0 Z" P& i 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。& X9 r6 d3 d8 F4 k4 O: w1 I( b. C
试题程序:
2 Z# d& q; r" Q& m# e EXTRN LOAD:FAR,SAVE:FAR4 M5 w$ D& S# u) c- C; ~5 I7 P( \
N EQU 20. N y: z$ E, Q4 _+ r# `
DELTA EQU 57 s5 m7 |3 j8 Q* j# @0 E
STAC SEGMENT STACK
' }+ U2 E! O: h; M$ Y DB 128 DUP(?) I# F- [ f6 a# P& [+ z! ~& M3 V
STAC ENDS
$ |" S6 W* B' @5 x DATA SEGMENT
& r% W- o" X5 h0 n' O- O SOURCE DB N DUP(?)1 q6 i9 E1 R: W
RESULT DB N DUP(0)5 u# U% ^; a2 {. K7 u
NAME0 DB 'INPUT1.DAT',0$ F/ c! [% g/ e8 k1 q* w0 ~
NAME1 DB 'OUTPUT1.DAT',0
, M5 I& Y# u8 E5 ]7 g8 ~- ~ K DATA ENDS
5 c1 N7 `5 R( s7 R CODE SEGMENT* F/ z; Q! ^- `) i- I4 ^8 e
ASSUME CS:CODE,DS:DATA,SS:STAC
( e6 }# o$ R; w* O9 G: ^ START PROC FAR0 }3 k; T8 [9 E8 H# P& |
PUSH DS
: u2 m* B. A; [2 a XOR AX,AX
' i W/ q3 M6 [1 S: P2 a: E PUSH AX. y" c% k$ V" ^/ k; `" w! ]
MOV AX,DATA
$ L8 E1 ~( e2 X2 R+ v MOV DS,AX3 d8 ~4 l4 f, G. V
LEA DX,SOURCE ;数据区起始地址+ m' i: G* ]+ D' h
LEA SI,NAME0 ;原始数据文件名
2 X: b: i* [8 o' m3 B/ X MOV CX,N ;字节数
: @ e1 F+ n5 Y: |/ k- ? CALL LOAD ;从'INPUT1.DAT'中读取数据
# y0 b; K" k" g( o: Q. w6 z2 d1 P ;****BEGIN****3 {9 S$ v" `- R. r! ?
LEA SI,SOURCE
9 y/ T$ x }7 X LEA DI,RESULT( `; o+ f6 z8 V/ z- W1 P! i
_______________________6 A9 M( |) s) m# a- y0 f# K
NEXT: MOV AL,[SI]
, ~3 J# B1 L# a CMP AL,-DELTA
% }. t9 u# \4 Z& U. `7 {/ T; I | J_______ LESS- q# j# V6 C2 E' `, g! R
MOV AL,0
% P$ `& J) m8 @% K JMP STORE
5 I8 F, n2 z- a& h GREAT: SUB AL,DELTA
% T4 N, e6 Z6 z& H7 W, S5 X- p JMP STORE
0 V7 X1 ]+ B- t* v' d/ S LESS: ADD AL,DELTA
/ Q2 j2 r6 Q$ p, ~ STORE: MOV [DI],AL" [6 u* ^' p& ~0 u4 u6 ?; i
_______________________$ H; W) C+ G7 x( c- D: f
_______________________# T( r( \+ b* z' T1 e3 Q+ c
_______________________- ]; F7 I; \5 \% B6 Y- q& r
;****END****+ t# B! d- l+ ~ o& t
LEA DX,RESULT ;结果数据区首址
' L2 }. A. B7 x* M* V9 R+ x. t+ p LEA SI,NAME1 ;结果文件名 m0 O& @7 V' n2 k5 C
MOV CX,N ;字节数' E% c' ?6 t. o: `# [' i. l
CALL SAVE ;保存结果到文件
& l- z5 {: H& v( D! x' s! v# _ RET2 T9 i! D" h- f& K" ]( M; K
START ENDP
* F* x. @1 t+ V1 R/ M9 s7 ` CODE ENDS
1 }) h# |* t7 w; _( ]2 |6 w5 N END START |