;从键盘输入任意一串小写字符(字符个数可变),
;将输入的小写字符转换为相应的大写字符,并在显示器上显示输出。
;从键盘输入任意一串小写字符(字符个数可变),
;将输入的小写字符转换为相应的大写字符,并在显示器上显示输出。
DATAS SEGMENT
;此处输入数据段代码
INPUTSET DB 'PLEASE ENTER A STRING OF LOWERCASE LETTERS $'
STRING DB 30H
DB 0
DB 30H DUP('$')
COUNT EQU $-STRING
TIP DB 'THERE ARE ILLEGAL LETTERS! $'
;OUTLETTER DB COUNT
DATAS ENDS
STACKS SEGMENT
DW 20H DUP(0);此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
;此处输入代码段代码
;初始化
FIRST:
;MOV AX,0
;MOV STRING,AL
MOV DX,OFFSET INPUTSET
MOV AH,09H
INT 21H
MOV DL,0AH;回车
MOV AH,2
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
;输入字符串
LEA DX,STRING
MOV AH,0AH
INT 21H
MOV CL,STRING+1
MOV SI,2
MOV DL,0AH;回车
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
;小写变大写
NEXT:MOV AL,STRING[SI]
;小写字符串判断
CMP AL,'a'
JB ERROTIP
CMP AL,'z'
JA ERROTIP
SUB AL,20H
MOV STRING[SI],AL;存得到的大写字母
INC SI
LOOP NEXT
MOV STRING[SI],'$'
MOV DX,OFFSET STRING
ADD DX,2
MOV AH,09H
INT 21H
MOV DL,0AH;回车
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
JMP EXIT
ERROTIP:
MOV DX,OFFSET TIP
MOV AH,09H
INT 21H
MOV DL,0AH;回车
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
JMP FIRST
EXIT:
MOV AH,4CH
INT 21H
CODES ENDS
END START