汇编语言 字符串排序。从键盘输入10个任意长度字符串,将其按照ASCII码大小排序,并在屏幕上显示出来。
时间: 2024-05-09 22:17:48 浏览: 82
好的,这个问题我可以回答。以下是汇编语言字符串排序的程序:
```
model small
.stack 100h
.data
strings db 10 dup ('$') ; 存储输入的字符串
nl db 0dh, 0ah, '$' ; 换行符
msg1 db 'Enter a string: $'
msg2 db 0dh, 0ah, 'Sorted strings:', 0dh, 0ah, '$'
.code
main proc
mov ax, @data
mov ds, ax
; 输入10个字符串
mov cx, 10
input_loop:
mov ah, 09h
lea dx, msg1
int 21h
mov ah, 0ah
lea dx, strings + (cx - 1) * 12
int 21h
loop input_loop
; 对字符串按ASCII码排序
mov si, offset strings
sort_loop:
mov bx, si
mov di, si
inc di
inner_loop:
mov al, [bx]
cmp al, [di]
jbe no_swap
xchg al, [di]
xchg al, [bx]
no_swap:
inc bx
inc di
cmp di, offset strings + 12*10
jb inner_loop
; 输出排序后的字符串
mov ah, 09h
lea dx, msg2
int 21h
mov si, offset strings
mov cx, 10
output_loop:
mov ah, 09h
mov dx, si
int 21h
mov dx, offset nl
int 21h
add si, 12
loop output_loop
mov ah, 4ch
int 21h
main endp
end main
```
在这个程序中,我们先定义了一个大小为10的字符串数组,然后使用`int 21h, 0ah`中断来从键盘输入字符串。输入完所有字符串后,我们使用冒泡排序来对字符串进行排序。最后,我们使用`int 21h, 09h`中断来向屏幕输出排序结果。
希望这个程序对你有所帮助。
阅读全文