汇编冒泡排序

本文介绍了一个使用汇编语言实现的冒泡排序算法。通过循环结构和条件判断完成数组中字节数据的比较和交换操作,实现了对一组十六进制数的排序。最后通过INT 21H调用显示排序后的结果。
DATAS SEGMENT
    A DW 0,23H,19H,20H,32H,89H,12H,34H,38H,33H,45H,13H,43H,24H,54H,1
    COUNT EQU ($-A)/2;数组中元素的个数(字节)
DATAS ENDS


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


CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX


    MOV CX,COUNT-1 ;外层循环数组元素个数减一
    XOR DX,DX
LOPLEV1:
XOR SI,SI
PUSH CX ;CX入栈
INC DX  ;外循环一次DX加1
MOV CX,COUNT ;重新赋值CX进行下一轮循环
SUB CX,DX  ;内层循环次数减外层循环次数,相当于C语言中j-i-1
LOPLEV2:
MOV AX,A[SI]
MOV BX,A[SI+2]
CMP AX,BX ;比较大小
JL I10 ;AX大于BX执行下面交换,否则跳转到I10
MOV A[SI],BX
MOV A[SI+2],AX
I10:
ADD SI,2
    Loop LOPLEV2    
    POP CX
    LOOP LOPLEV1

;--------------输出按位输出---------------------
    MOV   SI, 0
    MOV   CX, COUNT
LP:
    OR AX, AX
    MOV DX,A[SI]
    ADD DX,30H
    MOV AH,2   
    INT 21H
    ADD SI,2
    LOOP LP

    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值