请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。
这道题的注释没有分号,如果直接复制粘贴要手动加以下,懒得切换中英文了。
这个就是前两个题的升级版
DATAS SEGMENT
BUF1 DB 100
DB ?
DB 100 DUP(?)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,BUF1
MOV AH,0AH;读入键盘输入的东西
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV BL,BUF1[1];存入输入的个数
MOV SI,2;设置开始的地方
CHULI:
CMP BL,0;
JZ EXIT
CMP BUF1[SI],'A' 首先看是不是大于A
JNB ISDAXIE
JB ISNOT
ISDAXIE:
CMP BUF1[SI],'Z' 再看是不是小于Z 这样确定大写字母
JA ISXIAOXIEA
JNA ZIMU
ISXIAOXIEA:
CMP BUF1[SI],'a' 是比a大么
JB ISNOT
JNB ISXIAOXIEZ
ISXIAOXIEZ: 是比z小么?
CMP BUF1[SI],'z'
JA ISNOT
JNA ZIMU
ISNOT: 如果不是字母就打印出来
MOV DL,BUF1[SI]
MOV AH,02H
INT 21H
INC SI
DEC BL
JMP CHULI
ZIMU: 是字母的话 就直接跳过
INC SI
DEC BL
JMP CHULI
EXIT:
;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
网友评论