zoukankan      html  css  js  c++  java
  • assembly x86(nasm)选择排序

    有一个首地址为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
  • 相关阅读:
    ssh代理转发
    了解ssh代理:ssh-agent
    ssh使用密钥进行认证
    拾遗之”三元运算”与”打印奇偶行”
    MySQL 8.0二进制包安装
    awk内置函数
    awk数组详解
    awk动作总结之二
    awk动作总结之一
    [shell]批量抽取文件并重命名
  • 原文地址:https://www.cnblogs.com/lanclot-/p/10956989.html
Copyright © 2011-2022 走看看