Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7724506
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2011-07-06 17:42:47

;

;      ARM汇编编程 函数调用

;

 

              ; 定义代码段

              AREA Code, CODE  

              ENTRY   

              CODE32                             ; 声明代码是32

 

START          

      

              LDR R0, =0x12345678

             

              BL fun                                 ; 进入子函数

 

STOP

              CODE32

              MOV R0, #0X18  

              LDR R1, =0X20026  

              SWI 0X123456 

 

;

; 函数把32位数按字节逆排序,字节二进制逆排序,最后得到一个新的数字

; 入口参数 R0 -> 原操作数

; 出口参数 R0 -> 新生成的数

;

      

fun

      

              MOV R2, #31               ; 循环次数

              MOV R1, #0                 ; 先取反把R1全设为1

 

LOOP

              TST R0, #1                                ; 测试是否为1

              MOVNE R3, #1                         

              ORRNE R1, R1, R3, LSL R2 ; 在缓冲寄存器中相应位置1

              MOV R0, R0, LSR #1                 

             

              SUBS R2, R2, #1

              BNE LOOP

             

              MOV R0, R1

             

              BX LR           ;      函数返回

      

               

           END

 

 

 

 

 

;

;      ARM汇编编程 函数实现开关中断

;

 

              ; 定义代码段

              AREA Code, CODE  

              ENTRY   

              CODE32                             ; 声明代码是32

 

START   

              BL closeinput 

              BL openinput  

             

 

STOP

              CODE32

              MOV R0, #0X18  

              LDR R1, =0X20026  

              SWI 0X123456 

 

                     ; 关中断

closeinput

                     MRS R0, CPSR

                     ORR R0, R0, #(0x01<<7)

                     MSR CPSR_c, R0

                    

                     BX LR

                    

                     ; 开中断

openinput

                     MRS R0, CPSR

                     BIC R0,R0, #1<<7

                     MSR CPSR_c, R0

                    

                     BX LR

               

           END

 

 

 

阅读(2428) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~