zoukankan      html  css  js  c++  java
  • 汇编(四)

      使用汇编语言实现冒泡排序算法,对数据段中的数据进行由小到大排序。

      冒泡排序算法:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序每遍历一次就可以将当前剩下数据中的最大值推向“顶端”。

      在学习了基本的汇编指令后,又了解了冒泡排序的基本思想,那么用汇编实现冒泡排序还是一件挺容易的事。如果用高级语言实现过冒泡,那就再好不过了。用汇编实现只不过是换了一种语言工具而已。

      其具体实现如下,其中在数据段中定义了score,包含15个字节变量,该代码就是对这15个字节变量进行排序。

    ;采用冒泡排序法对分数进行排序
    ;将最大值保存在max中,将最小值保存在min中
    stack segment stack
        db 2014 dup(?)
    stack ends
    data segment
        score db 20,10,3,40,50,44,56,30,5,43,12,34,34,44,89
        br db 0dH,0aH,'$'
        min db ?
        max db ?
        maxAddr dw ?
    data ends
    code segment 'code'
        assume cs:code,ds:data,ss:stack
    start:
        mov ax,data
        mov ds,ax
        mov ax,offset score
        add ax,sizeof score
        dec ax
        mov maxAddr,ax
        mov cx,14
        mov si,0
    lp1:                    ;外循环
        mov bx,si
    lp2:                    ;内循环
        mov di,bx            
        inc di                ;di=bx+1
        mov al,score[di]
        cmp score[bx],al
        jg chgval
        jmp lp2End
    chgval:                    ;若数据顺序错误,交换他们的值
        xchg score[bx],al
        mov score[di],al
        jmp lp2End
    lp2End:
        inc bx
        cmp bx,maxAddr
        jnl lp1End
        jmp lp2
    lp1End:
        dec maxAddr
        loop lp1
    done:
        ;将最大值保存到max中,最小值报保存到min中
        mov si,offset score
        mov al,score[si]
        mov min,al
        add si,sizeof score
        dec si
        mov al,score[si]
        mov max,al
        
        mov si,0
        mov cx,8
        mov bl,score[si]
    
        mov dx,offset br
        mov ah,09H
        int 21H
        mov ax,4c00H
        int 21H
        
    code    ends
        end start
  • 相关阅读:
    10 个雷人的注释,就怕你不敢用!
    Java 14 之模式匹配,非常赞的一个新特性!
    poj 3661 Running(区间dp)
    LightOJ
    hdu 5540 Secrete Master Plan(水)
    hdu 5584 LCM Walk(数学推导公式,规律)
    hdu 5583 Kingdom of Black and White(模拟,技巧)
    hdu 5578 Friendship of Frog(multiset的应用)
    hdu 5586 Sum(dp+技巧)
    hdu 5585 Numbers
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/4920462.html
Copyright © 2011-2022 走看看