编写程序使其能在masm5.1运行 数据排序。 提示输入数据,比如10个数据(十进制形式) 然后,输入提示,1-从大到小排序; 2-从小到大排序, 显示按要求排序的数据。可以显示在同一行、两个数据之间用一定空格分开;也可以显示在不同的行。
时间: 2024-02-12 17:05:34 浏览: 76
masm.rar_数据结构_Visual_C++_
以下是在 MASM 5.1 中使用 x86 汇编语言编写的程序,可以根据用户输入的要求对给定的数据进行排序:
```
.model small
.stack 100h
.data
input_prompt db '请输入10个数据(十进制形式):$'
sort_prompt db '请选择排序方式(1-从大到小排序;2-从小到大排序):$'
output_prompt db '按要求排序的数据:$'
data db 10 dup ('$')
temp db ?
count dw 10
sorted_data db 10 dup ('$')
.code
main proc
mov ax, @data
mov ds, ax
; 输入数据
mov ah, 09h
lea dx, input_prompt
int 21h
mov cx, count
lea si, data
input_loop:
; 读入数据
mov ah, 01h
int 21h
; 转换成数字
sub al, '0'
mov [si], al
; 换行
mov ah, 02h
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
inc si
loop input_loop
; 选择排序方式
mov ah, 09h
lea dx, sort_prompt
int 21h
; 读入排序方式
mov ah, 01h
int 21h
sub al, '0'
; 排序
lea si, data
lea di, sorted_data
mov cx, count
sort_loop:
mov ah, 0
mov al, [si]
mov bl, [si+1]
cmp al, bl
jae skip_swap
xchg al, bl
mov [si], al
mov [si+1], bl
skip_swap:
mov [di], al
mov [di+1], bl
add di, 2
add si, 2
loop sort_loop
; 输出排序结果
mov ah, 09h
lea dx, output_prompt
int 21h
mov si, offset sorted_data
output_loop:
; 输出数据
mov ah, 02h
mov dl, [si]
int 21h
mov dl, [si+1]
int 21h
; 输出空格
mov dl, ' '
int 21h
; 换行
mov ah, 02h
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
add si, 2
loop output_loop
mov ah, 4ch
int 21h
main endp
end main
```
这个程序首先提示用户输入 10 个数据,然后读入这些数据。接着,它会提示用户选择排序方式,读入用户的选择,并根据用户的选择对数据进行排序。最后,程序会输出排序后的数据。
阅读全文