题目:请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。
这道题第一道题差不多,首先读取所有的字符,一个一个判断是不是大写,是就转换成小写,不是输出。
需要注意的是masm考试软件给得ascii表是十六进制的,这个BUG查了很久都没查出来。。。
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大(这里之判断了比A大,这样不够)
JNB ISDAXIE ;是的画跳到这里
JB ISNOT;不是
ISDAXIE:
CMP BUF1[SI],'Z';这里判断是不是比Z小,这样才能定位是大写字母
JA ISNOT ;比Z大就不是大写字母了。
MOV CL,BUF1[SI] ;因为大写字需要处理,所以用CL缓冲一下。直接用DL也许也可以把
ADD CL,20H
MOV DL,CL
MOV AH,02H
INT 21H
INC SI
DEC BL
JMP CHULI
ISNOT:;其他字母直接输出。
MOV DL,BUF1[SI]
MOV AH,02H
INT 21H
INC SI
DEC BL
JMP CHULI
EXIT:
;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START