汇编选择排序2

今天又重新理清了一下思路,要考试了,还是熟悉熟悉基本的东西吧。。。

data segment
    arr db 12,23,2,4,3,9,8,34,21,44,55,66,77,11,90
    count db $-arr
data ends
code segment
    assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax
    mov ax,0
    mov cx,0
    mov cl,count
    dec cx;比较n-1次
    mov bx,0
loop1:
    push cx;cx入栈,避免内循环改变cx的值
    mov si,bx;si为内层循环的初始值,相当于下标
    mov al,arr[si];al为关键字
loop2:   
    cmp al,arr[si+1];比较
    jg next;al>arr[si+1]则将arr[si+1]设为当前最小值,交换
    jmp done;否则不交换
next:
    xchg al,arr[si+1];暂时存在al中,并没有改变内存中的值
done:
    inc si;比较下一个
    loop loop2
    mov arr[bx],al;得到一个最小值, 前面的已经排好序
    inc bx;下一个
    pop cx
    loop loop1
    mov ax,4c00h
    int 21h
    code ends
    end start

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值