;对键盘输入的小写字母用大写字母显示出来
DATA SEGMENT
CRLF DB 0AH,0DH,'$' ;换行
MESSAGE DB "CONTINUE(C) OR QUIT(Q)?",0AH,0DH,'$' ;0AH 换行 ODH 空格 24H '$'
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
L1: MOV AH,1 ;INT 21H的1号功能是获得键盘输入并放在AL中
INT 21H
PUSH AX ;保护键盘输入
MOV AH,9
LEA DX,CRLF
INT 21H
MOV AH,2
POP DX
SUB DL,20H ;将小写字母转化为大写字母 ASCII码相差20H
INT 21H
MOV AH,9
LEA DX,CRLF
INT 21H
MOV AH,9
LEA DX,MESSAGE
INT 21H
MOV AH,1
INT 21H
PUSH AX
MOV AH,9
LEA DX,CRLF
INT 21H
POP DX
CMP DL,'C'
JE L1
MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START
DATA SEGMENT
CRLF DB 0AH,0DH,'$' ;换行
MESSAGE DB "CONTINUE(C) OR QUIT(Q)?",0AH,0DH,'$' ;0AH 换行 ODH 空格 24H '$'
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
L1: MOV AH,1 ;INT 21H的1号功能是获得键盘输入并放在AL中
INT 21H
PUSH AX ;保护键盘输入
MOV AH,9
LEA DX,CRLF
INT 21H
MOV AH,2
POP DX
SUB DL,20H ;将小写字母转化为大写字母 ASCII码相差20H
INT 21H
MOV AH,9
LEA DX,CRLF
INT 21H
MOV AH,9
LEA DX,MESSAGE
INT 21H
MOV AH,1
INT 21H
PUSH AX
MOV AH,9
LEA DX,CRLF
INT 21H
POP DX
CMP DL,'C'
JE L1
MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START