请编制程序,其功能是:内存中连续存放着10个16位二进制数,分别对每个数的高位字节和低位字节进行逻辑与运算及逻辑或运算。运算结果以字的形式按序连续存放(低位字节存入逻辑与运算的结果,高位字节存入逻辑或运算的结果)。 例如:
8 e7 ^0 B% o, S 内存中有 AA55H,55AAH,FFAAH…
' d$ C& K @6 F0 q" e 结果为 FF00H,FF00H,FFAAH…
: l) j) f1 s1 h' Z 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。6 ?1 H7 \" J2 ^& Q
填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 k5 S) E$ L, r: U) x; w
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。 |0 v0 ?' d! m! p/ H
试题程序:
. ?2 \) a* _; F) D# z# r EXTRN LOAD:FAR,SAVE:FAR) l/ s# k& K1 o
N EQU 10
- @0 ~! d' J) C, I% E/ ~* D' ^ STAC SEGMENT STACK1 o* E* d* j9 E1 V2 P
DB 128 DUP(?) M7 r4 H0 u3 I' q
STAC ENDS
2 M f% X, T8 j0 G+ p, s DATA SEGMENT6 | j( o% w# U5 H0 E9 S8 D
SOURCE DB N DUP(?)
. e4 E4 \, \) j" t$ Z RESULT DB N DUP(0)2 ?3 o; f5 O( S3 _% |; Q
NAME0 DB 'INPUT1.DAT',0) _( _, R3 p) X5 f
NAME1 DB 'OUTPUT1.DAT',0
- x3 Y- h/ Q' d7 b$ I: m- d; Q- T DATA ENDS
! P0 d% t8 o6 ~ CODE SEGMENT
$ |0 H. K" n0 k ?8 r' c9 @ ASSUME CS:CODE,DS:DATA,SS:STAC9 y9 X! f! z) ^, f3 v
START PROC FAR
. Q2 r3 K4 ?, C m; Q* `/ c9 F PUSH DS' P' U" G7 s8 _4 u/ |+ z k
XOR AX,AX5 l, ^1 N/ T% _( |0 j- d/ O$ t
PUSH AX% v' R5 P P7 e3 E6 d7 P" R
MOV AX,DATA4 ?7 j( b+ J( G$ v/ U0 T
MOV DS,AX I* T9 C4 H9 m# X
LEA DX,SOURCE ;数据区起始地址; n9 p( O' A, {9 F9 M6 R5 T
LEA SI,NAME0 ;原始数据文件名
$ {. _8 b$ t! i' u6 i/ a: V( h- L$ i7 `# \ MOV CX,N*2 ;字节数
Q* ^" @% e3 {: V1 o% `+ C CALL LOAD ;从'INPUT1.DAT'中读取数据
5 {( U, D* i3 ?- Z. ` ;****BEGIN****. z9 Y5 K4 @3 h
MOV DI,OFFSET RESULT5 {, Z5 s# Y! e+ f+ k, E4 J
MOV CX,N7 ]- {5 p: A9 t0 @5 o
MOV BX,005 I4 t& O' v: ]" \
PRO: MOV AX,_______________5 L/ e7 h- Y$ v9 [: G
MOV DX,AX) ]; |/ {% p! i6 E- \9 c: a" Z0 b, o
AND _________,DH
& r1 q( l' o% z$ H" L, C. o6 Z/ f ________ AH,AL
- P- B! s5 D! h+ a MOV _________,DL
8 E5 r |0 X. t8 O ADD BX,2
3 c" ]- ^( o' W$ H( T9 m ___________________________
% Q" @( Y: C# g& |: d JNZ PRO
+ i+ F1 i0 X4 U& j% v$ w% t) Z ;****END****
9 Z! ]. ~: h3 H/ J2 K LEA DX,RESULT ;结果数据区首址
9 ]' D7 J$ q, u LEA SI,NAME1 ;结果文件名! M* p9 B2 |5 R9 K/ I# o
MOV CX,N*2 ;字节数
4 G. x: S* M1 k CALL SAVE ;保存结果到文件
6 x! a0 z Z3 V8 m+ b RET
9 x* X6 w3 ?/ ] b9 g START ENDP, O/ p O' R# u- s
CODE ENDS
; @8 o5 ^6 @2 Z8 E END START |