我是靠谱客的博主 害怕眼神,最近开发中收集的这篇文章主要介绍汇编学习笔记->数组的冒泡排序使用冒泡排序算法对数组进行升序排序一些指令的说明,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

编译环境:emu8086
附:汇编常用跳转指令及其检测位
https://blog.csdn.net/c529283955/article/details/103015482

使用冒泡排序算法对数组进行升序排序

由于数组中有负数,因此比较两数大小时,应当使用带符号的跳转指令。数组用dw定义时,要取下一个数的位置时,应使用bx+2,因为1个字(word)=2个字节(byte)

(一)数组用db定义

datas segment
    n   db 6
    num db -20,6 ,4 ,100 ,20 ,1
datas ends

stack segment
    dw 128 dup(0)    
stack ends

codes segment 
    assume cs:codes,ds:datas,es:datas
start:
    mov ax,datas
    mov ds,ax
    mov es,ax
    
    mov cl,n        ;外循环次数
    xor ch,ch       ;异或对ch清零
    dec cx          ;实际循环次数为n-1
again_out:
    lea bx,num
    mov dx,cx       ;设置内循环的次数
again_in:
    mov al,[bx]
    mov ah,[bx+1]
    cmp al,ah       ;比较两数的大小
    jle ok          ;前一个数<=后一个数,因此不交换
    mov [bx+1],al   ;交换两数
    mov [bx],ah
ok:
    inc bx          ;数组下标向后移动一位(相当于j++)
    dec dx          ;内循环次数-1,若减一的结果为0,则ZF=1
    jne again_in    ;ZF=0时跳转到again_in,ZF=1时会顺序执行下边的指令
    loop again_out  ;回到外循环
    
    mov ah,4ch
    int 21h    
codes ends
end start

(二)数组用dw定义

注释大致与上相同,si为16位寄存器,但不可拆分为2个8位寄存器来使用

datas segment
    n   db 6
    num dw -20,6 ,4 ,100 ,20 ,1
datas ends

stack segment
    dw 128 dup(0)    
stack ends

codes segment 
    assume cs:codes,ds:datas,es:datas
start:
    mov ax,datas
    mov ds,ax
    mov es,ax
    
    mov cl,n        ;外循环次数
    xor ch,ch       ;异或对ch清零
    dec cx          ;实际循环次数为n-1
again_out:
    lea bx,num
    mov dx,cx       ;
again_in:
    mov ax,[bx]
    mov si,[bx+2]
    cmp ax,si
    jle ok
    mov [bx+2],ax
    mov [bx],si
ok:
    add bx,2
    dec dx
    jne again_in    
    loop again_out
    
    mov ah,4ch
    int 21h    
codes ends
end start        

一些指令的说明

jle

jump when less or equal [小于等于时跳转]
SF ≠ OF or ZF=1时跳转
SF为正负符号位(Sign Flag),0为正数,1为负数
OF为溢出符号位(Overflow Flag),运算结果溢出时,OF=1,否则为0

jne

jump when not equal [不等于时跳转]
ZF=0时跳转至标号处执行,ZF=1时会顺序执行下边的指令(ZF=1时不跳转)

最后

以上就是害怕眼神为你收集整理的汇编学习笔记->数组的冒泡排序使用冒泡排序算法对数组进行升序排序一些指令的说明的全部内容,希望文章能够帮你解决汇编学习笔记->数组的冒泡排序使用冒泡排序算法对数组进行升序排序一些指令的说明所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部