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
  • 相关阅读:
    Linux异步IO
    基本数据类型总结--
    总结
    字典魔法二
    字典及其魔法
    元祖的魔法
    列表的特点
    运算符
    while ……else……和while……continue……和 while…………break…………
    作业---写一个程序,用户名 、密码输入错误3次 错误
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/4920462.html
Copyright © 2011-2022 走看看