汇编冒泡排序,数组题

Posted Afololer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编冒泡排序,数组题相关的知识,希望对你有一定的参考价值。

数组题

  • cx应为长度-1
  • 二层循环要保存cx,si

把数组中的0去掉,其他往前移动,最后面补0

DATAS SEGMENT
    ;此处输入数据段代码  
    ar db 6,33H,30H,30H,33H,30H,33H,'$'
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov si,1
    mov cl,ar
    dec cl
L1:
   

    PUSH SI
    push cx
L2:
    mov bl,ar[si]
    cmp bl,30H
    jnz l3 ;不是0
    xchg bl,ar[si+1]
    mov ar[si],bl
L3:
    inc si
    LOOP l2
    pop cx
    POP SI

    
    loop L1


    lea dx,ar+1
    mov ah,9
    int 21H
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

冒泡排序

DATAS SEGMENT
    ;此处输入数据段代码  
    array1 db 'h','a','d','c','t','b','y','l','$'
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    mov cx,7
    lea bx,array1
    mov si,0
L1:
  ;每一轮由开始比较,最大的沉到最后面
    push si
    push cx
L2:   
    mov al,array1[si]
    cmp al,array1[si+1]
    jb L3           ;小于
    xchg al,array1[si+1] 
    mov array1[si],al

L3: 
    inc si
    LOOP L2
    pop cx
    pop si
    LOOP L1


    lea dx,array1
    mov ah,09h
    int 21H
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

以上是关于汇编冒泡排序,数组题的主要内容,如果未能解决你的问题,请参考以下文章

算法通关手册 刷题笔记2 数组排序之冒泡排序选择排序

这个 x86 汇编冒泡排序程序有啥问题?

[AI助力] 算法通关手册 刷题笔记2 数组排序之冒泡排序选择排序

冒泡排序(面试题)

你真的会写冒泡排序吗?

汇编实现排序——冒泡排序