📄 rjexp10.asm
字号:
CRLF MACRO
MOV AHM02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
MESS1 DB '大写转小写-----按1',0DH,0AH
DB '小写转大写-----按2',0DH,0AH
DB '退 回 DOS-----按3',0DH,0AH,'$'
MESS2 DB '输入字符串,按回车进行转换!',0DH,0AH,'$'
MARK DB ?
BUF DB 82 DUP(?)
DATA ENDS
STACK SEGMENT
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK ;段寄存器和堆栈初始化
MOV SS,AX
MOV SP,TOP
MOV BX,OFFSET BUF ;BX指向字符行缓冲区首址.
KKK: MOV SI,0000H ;偏移指针SI清0
MOV MARK,0
MOV AH,09H
LEA DX,MESS1
INT 21H
BG: MOV AH,08H
INT 21H ;接收键入字符
CMP AL,'3'
JE PPP ;
CMP AL,'1'
JE BS
CMP AL,'2'
JE SB
JMP BG
BS: MOV AH,09H ;大写转小写
LEA DX,MESS2
INT 21H
MOV MARK,11H
BS1: MOV AH,01H
INT 21H
CMP AL,0DH
JE BBB
CMP AL,5AH
JA TTT
CMP AL,41H
JB TTT
ADD AL,20H
JMP TTT
SB: MOV AH,09H ;小写转大写
LEA DX,MESS2
INT 21H
MOV MARK,22H
SB1: MOV AH,01H
INT 21H
CMP AL,0DH
JZ BBB
CMP AL,61H
JB TTT
CMP AL,7AH
JA TTT ;不是小写它母转TTT
SUB AL,20H ;小写字母转化为大写字母
TTT: MOV [BX+SI],AL ;存入字符行缓冲区中
INC SI ;偏移指针加1
CMP MARK,11H
JE BS1
CMP MARK,22H
JE SB1
JMP PPP
BBB: MOV [BX+SI],AL
MOV AL,0AH
MOV [BX+SI+1],AL ;加入换行符
MOV AL,'$'
MOV [BX+SI+2],AL ;再加一个`$`标志字符
MOV AH,09H
MOV DX,BX
INT 21H ;显示转换后的字符串
JMP KKK ;循环
PPP: MOV AX,4C00H
INT 21H
CODE ENDS ;返回DOS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -