利用IAR通过汇编语言实现冒泡排序

本文介绍如何使用IAR工具在Cortex-M平台上利用汇编语言实现冒泡排序算法。通过创建工程、编写代码,对10个整数进行排序,并验证排序结果的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用【IAR】编写汇编实现【冒泡排序】

作者:BruderLung

时间:2019.11.27

第一步:创建文件

File-New File

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdjbDE5OTk=,size_16,color_FFFFFF,t_70

创建文件

第二步:创建工程

Project-Create New Project

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdjbDE5OTk=,size_16,color_FFFFFF,t_70

创建工程

 

第三步:选择项目模板

asm-asm[Cortex-M]

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdjbDE5OTk=,size_16,color_FFFFFF,t_70

选择项目模板

第四步:编写代码

在如图所示模板的main和B main之间编写代码

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdjbDE5OTk=,size_16,color_FFFFFF,t_70

 

代码[10个数冒泡排序]:

__iar_program_start
        
main    
        MOV R0,#0    ;R0初始化
        LDR R2,=RESULT    ;将数据段的地址赋给R2

LOOP1 ;【R1初始化】  
        MOV R1,#0
        B LOOP2
        
LOOP2  ;【比较大小】
        ADD R6,R2,R1   ;第一个数地址
        LDR R3,[R6]
        LDR R4,[R6,#4]; 因为4位表示一个数
        CMP R3,R4
        BGT L1  ;R3>R4则交换位置
        B LOOP3      
        
L1  ;【交换位置】
        STR R3,[R6,#4]
        STR R4,[R6]
        
LOOP3 ;【改变R1值】
        ADD R1,R1,#4
        MOV R5,#36    ;(10—1)*4
        SUB R5,R5,R0   ;比较内循环大小
        CMP R1,R5
        BLT LOOP2
        BGE LOOP4 

LOOP4;【外循环增加】
        ADD R0,R0,#4
        CMP R0,#36
        BLT LOOP1
        BGE STOP
STOP
        B STOP

        DATA
RESULT
        DCD 1,3,2,5,6,4,8,7,9,0   ;数据段

        B       main

第五步:检查结果

在view中打开以下几个窗口,窗口【symbols】可以发现RESULT的地址为0x7c,,运行完毕后在窗口【memory】可发现排序正确。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdjbDE5OTk=,size_16,color_FFFFFF,t_70

谢谢大家的阅读!生活愉快!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值