请编制程序,其功能是:计算10×3矩阵中每一行元素(八位二进制数)之和,并将其存放在指定的内存区中。 例如:+ b" [6 k8 ]7 Q
内存中有 0,0,0,0,0,0,0,0,0,0(第1行),1,1,1,1,1,1,1,1,1,1(第2行)…9,9,9,9,9,9,9,9,9,9,9,9,9(第3行)
. ` R$ c. O' d" N. H 结果为 000AH,000AH…000AH# y3 y! p2 O! I
部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
- s% m* P S8 m8 C) ^( v 填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
* g9 H8 `8 C( a 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
4 J/ Y% ^- _& C+ K# E2 A 试题程序:) r7 l( m2 E8 P) A, C& O
EXTRN LOAD:FAR,SAVE:FAR* N' T8 |6 _; x% o+ s
N EQU 306 l9 q! ^6 h7 c0 V6 Z
DSEG SEGMENT4 K) A1 Y; {2 A% n. e9 x" Z: h& P
SOURCE DB N DUP(?)
" o) s+ C/ c( o3 ?! j: B: I SRC DW SOURCE
: S) z! t. Z/ ]8 o r) t+ T RESULT DW N/3 DUP(0)6 u6 A* f' x0 D2 z. K9 Q5 o( ~
I EQU 3
: w) T: S5 X( s3 ?! A+ | J EQU 108 u0 ~) k; w: M" I6 ]
NAME0 DB 'INPUT1.DAT',08 c/ ]4 V; q+ Y0 L+ Y2 N. v
NAME1 DB 'OUTPUT1.DAT',0
+ \5 k& v% F/ ?* Z& @ N DSEG ENDS" Z& L4 P7 W J) L! E! F' K
SSEG SEGMENT STACK: p4 I/ b9 i6 _7 n3 d6 F3 ^' v
DB 256 DUP(?): l# O F# b! Y
SSEG ENDS
1 B0 P& Z5 w# L6 x( ^5 | CSEG SEGMENT
0 i- K, a$ ~- P! K a+ A ASSUME CS:CSEG,SS:SSEG,DS:DSEG$ I+ [9 j! `, N7 E1 m
START PROC FAR/ n. d+ {$ v7 B6 ^5 {
PUSH DS
4 q1 j# m8 Y; ~) n3 }) t# W XOR AX,AX$ E& A2 n4 X, x
PUSH AX
8 F8 w* j4 F/ `& V0 l MOV AX,DSEG
4 H% ?/ ?3 r, k2 I2 i) h MOV DS,AX" K% i0 ~: D( }0 D. {+ K$ L
MOV ES,AX
: K2 j! b5 ]: n, e- z$ j LEA DX,SOURCE ;数据区起始地址. B/ G5 j# [8 j n, R& u/ W
LEA SI,NAME0 ;原始数据文件名/ S+ i1 T( v" Z6 X A1 a$ P
MOV CX,N ;字节数- E2 I' s1 t+ `; n8 c7 k: j/ ]% D
CALL LOAD ;从'INPUT1.DAT'中读取数据
' I8 U5 z6 I6 J$ \ ;****BEGIN****/ s% |. E1 y2 B8 m4 P) Y* p$ ]: q
LEA SI,SOURCE- D% `0 }4 d- L6 V2 m2 ~7 v2 K3 w* q
LEA DI,RESULT( M# t8 R6 E! d- D
MOV BX,1/ S$ Y% ?4 A. c* F
LPJ: MOV DX,0/ H, X7 R# e$ P, e
MOV CX,1
1 |1 A3 \5 e6 z. B, n; R LPI: MOV AL,[SI]
' k1 ?$ o/ Y2 _ ___________________________9 Q# u' |: T; j
ADD DX,AX
# m- q& l. g* I7 B5 l8 } ADD SI,_______________; \( n# h6 E& m, ^4 |6 p/ }1 H
INC CX
3 q& W$ q6 d3 C+ Y2 U CMP CX,I
4 \: O& J h* F0 V' u9 U& E, k6 e JBE LPI, X5 i% Y* m7 W& c# L
MOV [DI],DX
/ z- N0 {; s0 D* K1 g$ [; h" G ADD DI,_______________
7 s2 S/ y1 P# x, r7 Q. N9 q" ^ INC SRC
, h8 O3 G5 X" c6 V( e ___________________________5 B/ c! e% c: U8 f+ F+ T
CMP BX,_______________
7 _! n% X0 a# h% P O JBE LPJ7 H2 v& A9 Z) G+ s0 H# S
;****END****( G3 n$ E$ S% {0 S- J9 o8 u
LEA DX,RESULT ;结果数据区首址+ O- f3 @* P2 |7 q
LEA SI,NAME1 ;结果文件名
" `$ {# b9 D7 w MOV CX,N*2/3 ;字节数
7 h: N% c! r% y7 U1 s CALL SAVE ;保存结果到文件
. O7 ^' i- I5 V& D2 X. o RET
5 e7 N0 ~5 t, B START ENDP) x% d% L; ]& o* M9 ^1 g
CSEG ENDS0 ?6 N; [9 [' s7 R/ h5 O b
END START |