📄 p2.asm
字号:
DATA SEGMENT
STRING DB 20 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,0
MOV DX,0
MOV SI,OFFSET STRING
MOV AH,1
INT 21H
CMP AL,0DH
JZ EXIT ;判断第一个字符,如果为回车,则程序结束
MOV [SI],AL
INC CX
INC DX
INC SI
L0: MOV AH,1 ;输入字符串
INT 21H
CMP AL,0DH ;回车为结束符,转下一步操作
JZ NEXT1
MOV [SI],AL
INC SI
INC CX ;记录输入字符的个数
INC DX
JMP L0
NEXT1:DEC CX ;外循环比较次数
DEC DX ;内循环比较次数
PUSH CX ;保护现场
PUSH DX
L1: MOV SI,OFFSET STRING ;冒泡法排序
L2: MOV AL,[SI]
CMP AL,[SI+1]
JLE L3
XCHG AL,[SI+1]
MOV [SI],AL
L3: INC SI
DEC DX
JNZ L2
POP DX
PUSH DX
DEC CX
JNZ L1
POP DX ;恢复现场
POP CX
INC CX
MOV SI,OFFSET STRING
NEXT2:MOV DL,[SI] ;输出字符串
MOV AH,2
INT 21H
INC SI
LOOP NEXT2
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -