编写一个masm汇编程序,利用冒泡法对一字符串进行排序。要求屏幕有提示信息“PLEASE ENTRY STRING”,当在下一行输入字符串后,结果按ASCII值由大到小排序,在下一行显示
时间: 2023-12-22 18:03:12 浏览: 77
汇编输入字符串对字符串进行冒泡排序
以下是一个简单的 MASM 汇编程序,利用冒泡排序算法对字符串进行排序:
```
.MODEL SMALL
.STACK 100H
.DATA
msg1 DB 'PLEASE ENTER STRING : $'
msg2 DB 'SORTED STRING : $'
str1 DB 100 DUP('$')
str2 DB 100 DUP('$')
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; 请用户输入字符串
MOV AH, 9
LEA DX, msg1
INT 21H
; 读取用户输入的字符串
MOV AH, 0AH
LEA DX, str1
INT 21H
; 复制一份字符串
MOV SI, OFFSET str1
MOV DI, OFFSET str2
MOV CX, 0
MOV CL, [SI+1]
ADD CX, 2
COPY_LOOP:
MOV AL, [SI+CX]
MOV [DI+CX], AL
LOOP COPY_LOOP
; 冒泡排序
MOV SI, OFFSET str2
MOV CX, 0
MOV CL, [SI+1]
ADD CX, 2
OUTER_LOOP:
MOV BX, CX
DEC BX
MOV DX, 0
INNER_LOOP:
MOV AL, [SI+DX+2]
CMP AL, [SI+DX+3]
JNC SKIP_SWAP
XCHG [SI+DX+2], [SI+DX+3]
MOV DX, BX
SKIP_SWAP:
INC DX
CMP DX, BX
JB INNER_LOOP
LOOP OUTER_LOOP
; 显示排序后的字符串
MOV AH, 9
LEA DX, msg2
INT 21H
MOV AH, 9
LEA DX, str2+2
INT 21H
; 结束程序
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
这个程序使用了 0Ah 和 09h 中断来读取用户输入的字符串并在屏幕上显示结果。 内部实现了冒泡排序算法,以按 ASCII 值由大到小排序输入的字符串。
阅读全文