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