📄 字母转换.asm
字号:
DATAS SEGMENT
;>>>>>>>>>>>>>>>>>>
MAXNUM EQU 10
BUF DB MAXNUM+1
COUNT DB 0
INPUT DB MAXNUM+1 DUP(0)
OUTPUT DB MAXNUM DUP(0),'$'
PROMPT DB 'PLEASE INPUT:','$'
SHOW DB 13,10,10,'THEN CHANGES:','$'
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
DB 256 DUP(0)
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;>>>>>>>>>>>>>>>>>>
LEA DX,PROMPT
MOV AH,9
INT 21H
;>>>>>>>>>>>>>>>>>>
LEA DX,BUF
MOV AH,0AH
INT 21H
;>>>>>>>>>>>>>>>>>>;>>>>>>>>>>>>>>>>>>;>>>>>>>>>>>>>>>>>>
MOV CX,MAXNUM
MOV SI,0
;>>>>>>>>>>>>>>>>>>;判断所输入的是否为字母
INTEXT:
MOV AL,INPUT[SI]
CMP AL,7BH
JS TESTTWO ;ASCII码小于7BH,转二测试.
ERROR:
MOV OUTPUT[SI],20H ;出错,以空格显示.
JMP NEXT
TESTTWO:
CMP AL,61H
JS TESTTHREE ;ASCII码小于61H,转三测试.
JMP SUBC ;ASCII码小于7BH,大于61H,则转正确的转换(为小写字母).
TESTTHREE:
CMP AL,5BH
JS TESTFOUR;ASCII码小于5BH,转四测试.
JMP ERROR ;ASCII码小于61H又大于5BH.
TESTFOUR:
CMP AL,41H
JS ERROR ;ASCII码小于41H.
;ASCII码小于5BH,大于41H,则为大写字母的转换
;>>>>>>>>>>>>>>>>>>;ADD
ADD AL,20H
MOV OUTPUT[SI],AL
JMP NEXT
;>>>>>>>>>>>>>>>>>>;SUB
SUBC:
SUB AL,20H
MOV OUTPUT[SI],AL
;>>>>>>>>>>>>>>>>>>
NEXT:
INC SI
LOOP INTEXT
;>>>>>>>>>>>>>>>>>>;>>>>>>>>>>>>>>>>>>;>>>>>>>>>>>>>>>>>>
LEA DX,SHOW
MOV AH,9
INT 21H
LEA DX,OUTPUT
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -