请编制程序,其功能是:内存中连续存放着两个无符号字节数序列AK和BK(k=0,…,9),求序列CK,CK=AK×BK(CK以有符号字的形式按C0,…,C9的顺序连续存放)。 例如:) v2 Y7 W4 I' A3 x3 }
序列AK为 FFH,80H,7FH,00H…
?7 y3 s* F9 `5 ? 序列BK为 FFH,80H,01H,02H…
+ Q& A9 W7 k1 N0 t) d( t8 D 则结果CK为 FE01H,4000H,007FH,0000H…) t) w' J. ]! B+ \- S) o
部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。3 [8 p7 j. I; _5 r
填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
/ y8 O) e( l8 u 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
: C8 m5 _3 U! o- i* @: z: T% r 试题程序:
8 u# b* x$ o5 P, \8 g EXTRN LOAD:FAR,SAVE:FAR1 G2 U8 G* @6 ?, O
N EQU 10+ a8 {) {6 W0 O5 V, p
STAC SEGMENT STACK" t) V# g% ^: a. }4 x0 N$ n
DB 128 DUP(?)
: R W- P3 i3 [ {5 C- } STAC ENDS
& a2 v: i5 ]% _4 |( E& N DATA SEGMENT
6 h; n: H$ Y- c! A K0 w2 u" } SOURCE DB N*2 DUP(?)# k/ ?% M. C/ F8 i% c
RESULT DW N DUP(0)
: l7 l# M. u" b% A" f, G R NAME0 DB 'INPUT1.DAT',0
! D6 L; V! Q* C7 C. e/ t NAME1 DB 'OUTPUT1.DAT',0
1 d" A% w& O2 b DATA ENDS
" \# _- `5 O! [! ]% A: H CODE SEGMENT2 u% e- p, O! G2 D# S! J
ASSUME CS:CODE,DS:DATA,SS:STAC
; [) L; F+ o+ r' K% M# N; j& T START PROC FAR
T, M, ~0 E* Z) d' c7 |) k; ` PUSH DS9 w3 s- D* S. x. X6 h" G1 d
XOR AX,AX6 S) |4 z% L8 y9 h" R
PUSH AX
: e, g5 V) m. m. o9 ]$ c; e+ E MOV AX,DATA
/ X7 l$ K$ @; U9 _' q0 e MOV DS,AX
1 C$ Y: j% k4 I" r1 ~ LEA DX,SOURCE ;数据区起始地址: K2 P! c# {1 ~: q" d$ P
LEA SI,NAME0 ;原始数据文件名 u9 J% E( B7 K
MOV CX,N*2 ;字节数
t* t, Y- q |( K CALL LOAD ;从'INPUT1.DAT'中读取数据/ E h6 O% l1 d" d. o
;****BEGIN****
2 v. I( ]7 g$ F8 B ___________,OFFSET RESULT: Q( X- Y* f$ e: a* R
MOV BX,0
/ A7 \# L8 s- ? __________________________
) |4 P' p" z, P2 S* o8 \6 k2 l% F! C PRO: ___________,SOURCE[BX+N]6 e) u" p& c; c* ]" N% ]$ L
___________________________
8 K" \) l4 j) o! H! x# q: V) u MOV [DI],AX
+ q( p8 k* E& R0 ?4 _( H. T, ~ ADD DI,22 ]% y, ] S; J3 a6 u2 L3 A
INC BX( r/ E4 v C9 f Q
___________________________
4 G( e( r4 j. L( p- I2 Q JNZ PRO
1 N% Z4 U/ D# N% v/ r2 \2 z ;****END****. h5 k) w6 S9 m
LEA DX,RESULT ;结果数据区首址- d" E! W+ }$ K' _, B
LEA SI,NAME1 ;结果文件名
1 D5 X" u8 B0 l MOV CX,N*2 ;字节数2 t4 d; h0 ]9 y& c% T
CALL SAVE ;保存结果到文件% O+ T+ f- m% T: p4 `
RET
6 T( M% \; ~- ^' f' z" p0 O4 J START ENDP
4 Z( G) d5 c) y7 f CODE ENDS
: n4 ~( M) k- a" |! v END START |