试题程序:
EXTRN LOAD:FAR,SAVE:FAR
N EQU 10
STAC SEGMENT STACK
DB 128 DUP(?)
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP(?)
RESULT DB 5*N DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STAC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX ;置附加段寄存器
LEA DX,SOURCE ;数据区起始地址
LEA SI,NAME0 ;原始数据文件名
MOV CX,N ;字节数
CALL LOAD ;从'INPUT1.DAT'中读取数据
;****BEGIN****
LEA SI,SOURCE
MOV DI,OFFSET PDATA ;PDATA为正数数组存放缓冲区首址
MOV CX,N
CLP1: MOV AL,[SI]
MOV BL,AL
MOV AH,AL
________________________
AND AL,0F0H
_________________________
MOV CL,4
_________________________
POP CX
CMP ________________
JA CLP2
CMP AH,9
JA CLP2
MOV ________________
INC DI
MOV BYTE PTR[DI],0CCH
INC DI
MOV BYTE PTR[DI],BL
INC DI
MOV BYTE PTR[DI],0DDH
INC DI
MOV BYTE PTR[DI],0EDH
JMP CLP3
CLP2: MOV BYTE PTR[DI],0DH
INC DI
MOV BYTE PTR[DI],0EH
INC DI
MOV BYTE PTR[DI],BL
INC DI
MOV BYTE PTR[DI],0DH
INC DI
MOV BYTE PTR[DI],0EH
CLP3: INC SI
INC DI
_________________________
;****END****
LEA DX,RESULT ;结果数据区首址
LEA SI,NAME1 ;结果文件名
MOV CX,N+2 ;字节数
CALL SAVE ;保存结果到文件
RET
START ENDP
CODE ENDS
END START