N EQU 20
STAC SEGMENT STACK
DB 128 DUP (?)
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP(?)
RESULT DB N+1 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
LEA DX,SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据文件名
MOV CX,N ; 字节数
CALL LOAD ; 从’INPUT1.DAT’中读取数据
; **** BEGIN ****
MOV DI,OFFSET RESULT
MOV BX,0
MOV DL,0
MOV CX,N
PRO: MOV AL,SOURCE[BX]
CMP AL,61H
__ KEEP ; <’a’
CMP AL,7AH ; >=’a’
JNBE KEEP ; >’z’
CMP AL,79H ; <=’y’
JBE ____
INC DL
NINC: SUB AL,___
MOV [DI],AL
INC DI
JMP ____
KEEP: MOV [DI],AL
__________________
JUMP: INC BX
DEC CX
JNZ PRO