请编制程序,其功能为:设由20个8位有符号数构成一个数组,试依次去掉其中负的奇数,生成一个新的数组(顺序不变)。结果存放在RESULT开始的内存单元中。
部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,运算结果要求从RESULT开始存放,由SAVE过程保存到OUTPUT1.DAT文件中。请在BEOIN和END之间补充使其完整。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终产生运行结果。
部分程序如下:
; PROG1.ASM
EXTRN LOAD:FAR,SAVE:FAR
LEN EQU 20
DSEG SEGMENT
SOURCE DW N DUP (?)
RESULT DW N DUP (0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DB 256 DUP (?)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG;SS:SSEG
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX, DSEG
MOV DS,AX
MOV ES, AX
LEA DX, SOURCE
LEA SI,NAME0
MOV CX,N
CALL LOAD
; *** BEGIN ***
…………
…………
…………
; *** END ***
LEA DX, RESULT
LEA SI,NAME1
MOV CX,N
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。
答 案:; *** BEGIN *** LEA SISOURCE LEA DIRESULT MOV CX20 LOOP1: MOV AL[SI] MOV AHAL SHR AH1 JNC LOOP2 CMP AL0. JNL LOOP2 JMP EXIT LOOP2: MOV [DI]AL INC DI EXIT: INC SI LOOP LOOP1 ; *** END *** [INPUT 1.DAT 中的输入数据]: 81 H60H8EH38H68H60H8EH38H68H5EH 50H64H52H55H48H3AH4AH40H42H23H [输出结果] 60 8E 38 68 60 8E 38 68 5E 50 64 52 55 48 3A 4A 40 42 23 00
; *** BEGIN *** LEA SI,SOURCE LEA DI,RESULT MOV CX,20 LOOP1: MOV AL,[SI] MOV AH,AL SHR AH,1 JNC LOOP2 CMP AL,0. JNL LOOP2 JMP EXIT LOOP2: MOV [DI],AL INC, DI EXIT: INC SI LOOP LOOP1 ; *** END *** [INPUT 1.DAT 中的输入数据]: 81 H,60H,8EH,38H,68H,60H,8EH,38H,68H,5EH, 50H,64H,52H,55H,48H,3AH,4AH,40H,42H,23H [输出结果] 60 8E 38 68 60 8E 38 68 5E 50 64 52 55 48 3A 4A 40 42 23 00