請編制程序,其功能是:設20個8位有符號數構成一個數組,試依次去掉其中負的奇數,生成一個新的數組(順序不變)。
部分程序已給出, 其中原始數據由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中(請自行在CX中設定輸出長度)。
請在BEGIN和END之間補充一段源程序,完成要求的功能。
對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現整個程序中存在錯誤之處, 請加以修改。
試題程序:
EXTRN LOAD:FAR,SAVE:FAR
LE EQU 20
DSEG SEGMENT
SOURCE DB LEN DUP(?)
RESULT DB LEN DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DW 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
LEA DX,SOURCE ;數據區(qū)起始地址
LEA SI,NAME0 ;原始數據文件名
MOV CX,LEN ;字節(jié)數
CALL LOAD ;從'INPUT1.DAT'中讀取20個字節(jié)的數據
;****BEGIN****
LEA SI,SOURCE
LEA DI,RESULT
MOV CX,20
LOOP1: MOV AL,[SI]
MOV AH,AL
SHR AH,1
JNC KEEP
CMP AL,0
JNL KEEP
JMP EXIT
KEEP: MOV [DI],AL
INC DI
EXIT: INC SI
LOOP LOOP1
;****END****
LEA DX,RESULT ;結果數據區(qū)首址
LEA SI,NAME1 ;結果文件名
CALL SAVE ;保存結果到文件
RET
START ENDP
CSEG ENDS
END START
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |