例如:
内存中有:AA55H,55AAH,FFAAH
结果为: PP00H,FF00H,FFAAH
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从 RESULT开始存放, 由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已经给出的源程序使其完整,空白处已经用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
N EQU 3
STAC SEGMENT STACK
D.B 128 DUP (?)
STAC ENDS
D.ATA SEGMENT
SOURCE DW N DUP(?)
RESULT DW N DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
D.ATA ENDS
C.ODE SEGMENT
A.SSUME CS:CODE, DS:DATA, SS:STAC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,SOURCE ;数据区起始地址
LEA SI,NANE0 ;原始数据文件名
MOV CX,N*2 ;字节数
C.ALL LOAD ;从'INPUT1.DAT'中读取数据
; ********* BEGIN **********
MOV DI,OFFSET RESULT
MOV CX,N
MOV BX,00
PRO: MOV AX, (1)
MOV DX,AX
A.ND (2) ,DH(3) AH,AL
MOV (4) ,DL
A.DD BX,2(5)
A.DD DI,2(6)
JNZ PRO
; ******** END ********
LEA DX,RESULT ;结果数据区首址
LEA SI,NAME1 ;结果文件名
NOV CX,N*2 ;结果字节数
C.ALL SAVE ;保存结果到文件
RET
START ENDP
C.ODE ENDS
E.ND START