用8086汇编写一个冒泡排序
时间: 2023-12-15 10:54:04 浏览: 74
下面是用8086汇编语言实现冒泡排序的代码:
```
.model small
.stack 100h
.data
arr db 10, 4, 2, 8, 6, 7, 3, 1, 5, 9
n db 10
.code
main proc
mov ax, @data
mov ds, ax
mov cx, n
dec cx
outer_loop:
mov bx, cx
inner_loop:
mov al, arr[bx]
cmp al, arr[bx-1]
jge skip_swap
; 交换 arr[bx] 和 arr[bx-1]
mov dl, arr[bx]
mov dh, arr[bx-1]
mov arr[bx], dh
mov arr[bx-1], dl
skip_swap:
dec bx
cmp bx, 0
jne inner_loop
dec cx
cmp cx, 0
jne outer_loop
; 输出排序后的结果
mov ah, 09h
lea dx, arr
int 21h
mov ah, 4ch
int 21h
main endp
end main
```
这个程序中,我们使用了一个10个元素的数组`arr`和一个表示数组长度的字节变量`n`。程序首先将数据段地址赋值给`ds`寄存器,然后使用两个嵌套的循环来进行冒泡排序。内层循环比较相邻的两个元素,如果它们的顺序不正确,则交换它们的位置。外层循环则控制循环次数,每次循环都将内层循环的起始位置向前移动一个位置。最后,程序使用`int 21h`中断来输出排序后的结果,并退出程序。
阅读全文