CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
MESS1 DB 'Capital letter translated to small letter-----press 1',0DH,0AH ;大写转小写
DB 'Small letter translated to capital letter-----press 2',0DH,0AH ;小写转大写
DB 'return to DOS-----prss 3',0DH,0AH,'$' ;返回DOS
MESS2 DB 'Please input letter,then press enter to tanslate!',0DH,0AH,'$'
MARK DB ?
BUF DB 82 DUP(?)
DATA ENDS
STACK SEGMENT stack
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
A PROC NEAR
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK ;段寄存器和堆栈初始化
MOV SS,AX
MOV SP,TOP
MOV BX,OFFSET BUF
WWW: CRLF
MOV DX,OFFSET MESS1 ;显示提示信息
MOV AH,09H
INT 21H
CRLF
MOV BX,OFFSET BUF
III: MOV AH,01H ;接收输入数
INT 21H
CMP AL,'3'
JE OOO
JMP NEXT1
NEXT1: CMP AL,'1'
JNE NEXT2
JMP GGG
NEXT2: CMP AL,'2'
JE SSS
JMP III
OOO: MOV AH,4CH ;返回DOS
INT 21H
GGG: CRLF
MOV DX,OFFSET MESS2 ;显示提示信息
MOV AH,09H
INT 21H
L1: MOV AH,01H ;等待输入
INT 21H
CMP AL,0DH ;结果以回车结束,显示
JE SHOW
CMP AL,41H
JB L2
CMP AL,5AH
JA L2
ADD AL,20H ;转换为小写
L2: MOV [BX],AL
INC BX
JMP L1
SSS: CRLF
MOV DX,OFFSET MESS2 ;显示提示信息
MOV AH,09H
INT 21H
L3: MOV AH,01H
INT 21H
CMP AL,0DH ;结果以回车结束,显示
JE SHOW
CMP AL,61H
JB L4
CMP AL,7AH
JA L4
SUB AL,20H ;转换为大写
L4: MOV [BX],AL
INC BX
JMP L3
SHOW: MOV AL,24H
INC BX
MOV [BX],AL
MOV DX,OFFSET BUF
MOV AH,09H ;显示结果
INT 21H
CRLF
JMP WWW
A ENDP
CODE ENDS
END START
温馨提示:答案为网友推荐,仅供参考