冒泡排序_汇编语言的子程序调用与宏定义实现

1 子程序

;环境为ADS 子程序调用
    AREA    MAIN,CODE,READONLY
    ENTRY
    CODE32                 
start                       
  
    BL MAOPAO
stop
    MOV R0,#0x18
    LDR R1,=0x20026
    SWI 0x123456
     
MAOPAO 
    MOV R4,#0               ;R4为全局变量 
    LDR R6,=src             ;r6数组首地址 
    ADD R6,R6,#len-4        ;r6指向数组为地址 
outer                        
    LDR R1,=src             ;r1 指向数组首地址  
inner                       ;内层循环 一次冒泡过程 
    LDR R2,[R1]             ;去数组前两个数值比较
    LDR R3,[R1,#4]         
    CMP R2,R3                
    STRGT R3,[R1]            
    STRGT R2,[R1,#4]        ;大了就交换到后面 
    ADD R1,R1,#4                
    CMP R1,R6               ;判断一次循环是否结束 
    BLT inner               ;没有结束,继续本次冒泡
   
    ADD R4,R4,#4            ;全局变量加1 
    CMP R4,#len             ;判断外层是否结束
    SUBLE R6,R6,#4          
    BLE outer               
    MOV PC,LR
   
    AREA DATA,DATA,READWRITE 
src DCD 15,-4,0,4,1,-1,16,32,-32,2       
len EQU 10*4                
   
    END

2 宏定义

;环境为ADS,宏定义
    MACRO  
$label  maopao $x,$y
    MOV R4,#0               ;R4为全局变量 
$label.outer 
    LDR R6,=$x             ;r6数组首地址 
    ADD R6,R6,#$y-4                      
    LDR R1,=$x             ;r1 指向数组首地址  
$label.inner                       ;内层循环 一次冒泡过程 
    LDR R2,[R1]             ;去数组前两个数值比较
    LDR R3,[R1,#4]         
    CMP R2,R3                
    STRGT R3,[R1]            
    STRGT R2,[R1,#4]        ;大了就交换到后面 
    ADD R1,R1,#4                
    CMP R1,R6               ;判断一次循环是否结束 
    BLT $label.inner               ;没有结束,继续本次冒泡
   
    ADD R4,R4,#4            ;全局变量加1 
    CMP R4,#$y             ;判断外层是否结束
    SUBLE R6,R6,#4          
    BLE $label.outer               
    MEND
     
    AREA    MAIN,CODE,READONLY
    ENTRY
    CODE32
                      
start                       
lable    maopao src,len 
 
stop
    MOV R0,#0x18
    LDR R1,=0x20026
    SWI 0x123456
     
     
   
    AREA DATA,DATA,READWRITE 
src DCD 15,-4,0,4,1,-1,16,32,-32,2       
len EQU 10*4                
   
    END


你可能感兴趣的:(冒泡排序,宏,汇编语言,ads)