8086汇编语言冒泡排序
时间: 2023-10-12 15:15:36 浏览: 69
下面是8086汇编语言实现冒泡排序的示例代码:
```
; 冒泡排序
; 将数组a中的数据从小到大排序
; a:存放待排序数据的数组
; n:数组中数据的个数
.model small
.stack 100h
.data
a db 7, 2, 4, 1, 5, 3, 6 ; 待排序数组
n equ $-a ; 数组中数据的个数
.code
main proc
mov ax, @data
mov ds, ax
mov cx, n ; cx寄存器存储循环次数
dec cx ; 最后一个数不用比较,所以循环次数-1
L1: mov si, 0 ; si寄存器指向数组a的第一个元素
L2: mov di, si ; di寄存器指向数组a的第一个元素
inc di ; 比较数组a的相邻两个元素
L3: cmp di, n ; 如果已经比较到了数组最后一个元素,则结束本次循环
je L5
mov al, [a+si] ; 取出数组a中si位置的元素
mov bl, [a+di] ; 取出数组a中di位置的元素
cmp al, bl ; 比较两个元素的大小
jle L4 ; 如果a[si] <= a[di],则跳过交换操作
xchg al, bl ; 交换两个元素的值
mov [a+si], al ; 将交换后的值存回数组a
mov [a+di], bl
L4: inc si ; si和di指针分别向后移动一位
inc di
jmp L3
L5: loop L1 ; 循环次数减一
mov ah, 4ch
int 21h
main endp
end main
```
以上代码将数组a中的数据从小到大排序,可以通过修改比较大小的方式实现从大到小排序。