提示输入数据,比如10个数据(十进制形式)然后,输入提示,1-从大到小排序;2-从小到大排序,显示按要求排序的数据。可以显示在同一行、两个数据之间用一定空格分开;也可以显示在不同的行。给出汇编语言代码
时间: 2024-02-03 09:12:37 浏览: 88
以下是基于 x86 架构的汇编语言代码:
```
.model small
.stack 100h
.data
arr db 10, 5, 8, 3, 2, 9, 4, 6, 1, 7
msg1 db 'Sorted data in descending order:', '$'
msg2 db 'Sorted data in ascending order:', '$'
.code
main proc
mov ax, @data
mov ds, ax
; Print prompt message and read user choice
mov ah, 9
lea dx, prompt
int 21h
mov ah, 1
int 21h
sub al, '0'
; Sort the array based on user choice
cmp al, 1
je descending
cmp al, 2
je ascending
jmp exit
descending:
mov cx, 10
mov si, 0
outer_loop:
mov di, si
inc di
inner_loop:
mov al, [arr+si]
cmp al, [arr+di]
jge skip_swap
xchg al, [arr+di]
mov [arr+si], al
skip_swap:
inc di
cmp di, 10
jne inner_loop
inc si
cmp si, 9
jne outer_loop
; Print sorted data in descending order
lea dx, msg1
mov ah, 9
int 21h
mov cx, 10
lea si, arr
print_loop1:
mov dl, [si]
add dl, 30h
mov ah, 2
int 21h
mov ah, 2
mov dl, ' '
int 21h
add si, 1
loop print_loop1
jmp exit
ascending:
mov cx, 10
mov si, 0
outer_loop2:
mov di, si
inc di
inner_loop2:
mov al, [arr+si]
cmp al, [arr+di]
jle skip_swap2
xchg al, [arr+di]
mov [arr+si], al
skip_swap2:
inc di
cmp di, 10
jne inner_loop2
inc si
cmp si, 9
jne outer_loop2
; Print sorted data in ascending order
lea dx, msg2
mov ah, 9
int 21h
mov cx, 10
lea si, arr
print_loop2:
mov dl, [si]
add dl, 30h
mov ah, 2
int 21h
mov ah, 2
mov dl, ' '
int 21h
add si, 1
loop print_loop2
exit:
mov ah, 4ch
int 21h
main endp
prompt db 'Enter 1 to sort data in descending order or 2 to sort in ascending order: $'
end main
```
这个程序会提示用户输入一个数字,然后根据用户的选择使用选择排序算法对给定的数组进行排序,并将排序结果输出到屏幕上。请注意,这个程序只适用于小型数组,对于更大的数据集,可能需要使用更高效的排序算法。
阅读全文
相关推荐
















