运用8086汇编语言,利用冒泡排序算法,对原始数据进行排序。
时间: 2023-07-18 07:41:06 浏览: 109
下面是使用8086汇编语言实现冒泡排序算法的代码:
```
; 冒泡排序算法
; 输入:存放在数组arr中的n个整数
; 输出:按升序排列的n个整数
.model small
.stack 100h
.data
arr db 5, 2, 8, 7, 1, 3, 6, 4
n equ 8
.code
main proc
mov ax, @data
mov ds, ax
; 外层循环,控制比较的轮数
mov cx, n-1
outer_loop:
; 内层循环,比较相邻的两个数,将大的数往后移动
mov bx, 0
inner_loop:
mov al, arr[bx]
cmp al, arr[bx+1]
jle next
xchg al, arr[bx+1]
mov arr[bx], al
next:
inc bx
cmp bx, cx
jb inner_loop
; 减少比较轮数
dec cx
cmp cx, 0
jne outer_loop
; 输出排序后的结果
mov bx, 0
output_loop:
mov al, arr[bx]
call print_num
inc bx
cmp bx, n
jb output_loop
mov ah, 4ch
int 21h
main endp
; 输出数字
print_num proc
push ax
push bx
push cx
push dx
mov bx, 10
mov cx, 0
mov dx, 0
; 将数字转换为字符串
convert_num:
div bx
push dx
inc cx
cmp ax, 0
jne convert_num
; 逐个输出字符串中的字符
output_num:
pop dx
add dl, '0'
mov ah, 2h
int 21h
loop output_num
; 输出换行符
mov dl, 0ah
mov ah, 2h
int 21h
pop dx
pop cx
pop bx
pop ax
ret
print_num endp
end main
```
上述代码中,使用了8086汇编语言实现了冒泡排序算法,并且使用print_num过程实现了数字的输出。可以将上述代码保存为一个.asm文件,然后使用汇编器和链接器将其编译成可执行文件,运行后即可看到排序后的结果。
阅读全文