DATA SEGMENT
DISP DB 'please input a lower letter: $' ;输出please input a lower letter:
DATA ENDS
DISP DB 'please input a lower letter: $' ;输出please input a lower letter:
DATA ENDS
STACK SEGMENT PARA STACK
DB 100 DUP(?)
STACK ENDS
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX ;将数据段变量传入段寄存器
LEA DX,DISP ;lea为传送偏移地址到DX;输出disp
MOV AH,09H ;也可写为MOV AH,9
INT 21H ;输出字符串
MOV AH,01H
INT 21H ;输入字符;若改为07H则不回显
CMP AL,'R' ;判断是否为R
JE UPPER ;若相等则跳转到upper
SUB AX,20H ;将输入的小写字母的ASCII值减小20H,因为输入的小写字母ASCII比要输出的大写字母多20H
MOV DL,AL ;DL中此时为要出的字母的ASCII码
MOV AH,02H
INT 21H ;输出DL中的字符
UPPER:
MOV AH,4CH
INT 21H ;退回到dos
CODE ENDS
END START
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX ;将数据段变量传入段寄存器
LEA DX,DISP ;lea为传送偏移地址到DX;输出disp
MOV AH,09H ;也可写为MOV AH,9
INT 21H ;输出字符串
MOV AH,01H
INT 21H ;输入字符;若改为07H则不回显
CMP AL,'R' ;判断是否为R
JE UPPER ;若相等则跳转到upper
SUB AX,20H ;将输入的小写字母的ASCII值减小20H,因为输入的小写字母ASCII比要输出的大写字母多20H
MOV DL,AL ;DL中此时为要出的字母的ASCII码
MOV AH,02H
INT 21H ;输出DL中的字符
UPPER:
MOV AH,4CH
INT 21H ;退回到dos
CODE ENDS
END START