码迷,mamicode.com
首页 > 编程语言 > 详细

assembly x86(nasm)选择排序

时间:2019-05-31 19:53:38      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:ima   mes   下标   com   最小值   jmp   循环   color   最小   

有一个首地址为NUM的N字无序无符号整数数组,编制程序采用选择排序法使该数组中的数按照从小到大的次序排序输出。

 技术图片

 

选择排序:

 

技术图片

 

data segment
message        db    This is a program of Selection sort,0dh,0ah,$
NUM         dw     12,78,55,4,125,96    ;0ch,4eh,37h,4h,7dh,60h
count         db     $-NUM
data ends
code segment
    assume cs:code,ds:data
start:
        mov ax,data
        mov ds,ax
        mov    dx,offset message            
        mov    ah,9                        
        int    21h    
        xor cx,cx
        mov cl,count
        shr cl,1
        dec cx                    ;比较n-1次
        mov bx,0
loop1:
        push cx                    ;cx入栈,避免内循环改变cx的值
        mov si,bx                ;si为内层循环的初始值,相当于下标
        mov ax,NUM[si]            ;ax为关键字
loop2:
        cmp ax,NUM[si+2]
        jg exchange             ;ax>NUM[si+1]则NUM[si+1]设为当前最小值,交换
        jmp done
exchange:
        xchg ax,NUM[si+2]        ;暂时存在ax中
done:
        add si,2
        loop loop2
        mov NUM[bx],ax            ;得到一个最小值, 前面的已经排好序
        add bx,2
        pop cx
        loop loop1
        xor cx,cx
        xor si,si
print:                            ;输出
        mov ax,NUM[si]
loopb:
        xor dx,dx
        inc cl
        mov bx,10
        div bx                    ;ax商,dx余
        push dx                    ;余数入栈
        cmp ax,0
        jne loopb
loopc: 
        pop dx
        or  dl,00110000b
        mov    ah,2                            
        int    21h
        loop loopc
        add si,2
        mov dl,20h
        mov ah,2h
        int 21h
        mov bx,word ptr count
        cmp si,bx
        jb print
exit:
        mov ah,4ch
        int 21h
code ends
end start

 

assembly x86(nasm)选择排序

标签:ima   mes   下标   com   最小值   jmp   循环   color   最小   

原文地址:https://www.cnblogs.com/lanclot-/p/10956989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!