免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 894 | 回复: 0
打印 上一主题 下一主题

ARM汇编编程 函数调用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:51 |只看该作者 |倒序浏览

;

;      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

 

 

 

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP