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