8086汇编,实现冒泡排序并做到100以内的数打印

8086汇编,实现冒泡排序并做到100以内的数打印

assume cs:code, ds:data, ss:stack

data segment
    arr db 2, 4, 9, 1, 7, 10, 12, 35
    len dw $ - arr
data ends

stack segment
    db 10 dup(0)
stack ends

code segment
start:
	;; 初始化
    mov ax, data
    mov ds, ax
    mov ax, stack
    mov ss, ax
    mov bp, 0
    mov sp, 10

    call bubble_sort
    call println

    mov ah, 4ch
    int 21h

bubble_sort:
    mov ax, len
    dec ax
    mov cx, ax
    
;; 外循环
fori:  
    push cx
    mov si, 0
    
;; 内循环    
forj: 

    ;; if arr[si] > arr[si + 1]
    mov ah, arr[si]
    cmp ah, arr[si + 1]
    jle j1

    ;; swap arr[si], arr[si + 1]
    mov al, arr[si + 1]
    mov arr[si], al 
    mov arr[si + 1], ah

j1:
    ;; end loop, update si
    inc si
    loop forj  

    pop cx
    loop fori

    ;; return 
    ret


println:
    mov cx, len
    mov si, 0

j2: 
    mov al, arr[si]
    mov ah, 00h
    mov bl, 10
    div bl
    cmp al, 0
    je j3
    
    add al, 30h
    mov dl, al
    push ax
    mov ah, 02h
    int 21h
    pop ax

j3:
    add ah, 30h
    mov dl, ah
    mov ah, 02h
    int 21h

    ;; print ' '
    mov dl, 0
    int 21h
    
    inc si

    loop j2
    
    ;; print '\n'
    mov dx, 0ah
    int 21h

    ret

code ends
end start
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值