Keil,C51汇编选择排序法

本文详细描述了一段用汇编语言实现的排序算法,通过比较和交换操作对一组数字进行升序排列,展示了基本的程序流程和逻辑结构。
摘要由CSDN通过智能技术生成

;E CHAR D:30H=9, 11H, 5, 31H, 20H, 16H,1, 1AH, 3FH, 8
    ORG   0000H
    LJMP  MAIN
    ORG   0100H
    
MAIN:                              ;比较循环次数,每次选择比较后,次数递减
                                   ;10个数字,第一轮需要比较9次,以后每轮次数递减
    MOV   R7, #09H 
    MOV  R2, #30H  ;起始地址为30H   
LP1:
    MOV   R6, 07H  ;R6为内循环    
    MOV   A, R2   ;准备两个指针,R1,R2
    MOV   R0, A
    MOV   A,R2
    MOV   R1,A
    INC   R1
LP2:      
    MOV   A,@R0  ;取R0中寄存的数
    CLR   C      ;清进位标志
    SUBB  A, @R1 ;和后面一个数比较,判断大小
    JC  LP3 ;若C置位,则表示@R0小于@R1,不需要交换两个数
    MOV   A, R1;否则交换位置
    MOV   R0,A
LP3:  

    INC   R1
    DJNZ  R6, LP2 ;进行内循环,若(R6)=0,往下执行
    MOV A,R2    
    MOV R1,A
    MOV A,@R1
    XCH A,@R0
    MOV @R1,A
    MOV A,R2
    MOV R1,A    ;完成一轮比较,依次将最小数寄存在A中锁定
    INC R2     ;进行下一位数比较    
    DJNZ  R7, LP1;一轮过后,已经把最小的放第一个了,所以循环次数-1
    SJMP  $
    END

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值