文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>常用的 ARM 汇编子程序

常用的 ARM 汇编子程序

时间:2009-04-13  来源:luohuan123

1. 子程序 的调用

     BL xxxx

 .....

xxxx

    .....

     MOV PC , LR

    或B LR

      BX LR

      STMFD SP!, {R0-R7 ,PC}

 

2. 数据比较 跳转

CMP R1,R2

BEQ XXXXXX

......

CMP R1,R2

ADDHI R1,R2,R1

ADDLS R1,R2,R2

......

ANDS R1,R1, #0x08

BNE WAIT

 

3. 循环

       MOV R1,#10

 LOOP

      .....

      SUB R1,R1,#1

      CMP R1, 0

      BEQ LOOP

 

4. 数据块的复制

     MOV R1,=DATA_DST

     MOV R2,=DATA_SRC

     MOV R3,#10

LOOP

     LDMFD R2!,{R4-R8}

     STMFD R1!,{R4-R8}

     SUBS R3,R3,#1

     BNE LOOP

 

5. 堆栈操作

OUTDATA

     STMFD SP! {R0-R7,LR}

     ...

     BL DELAY

     ...

     LDMFD SP! {R0-R7,PC}

 

6. 特殊寄存器的使用

WDTC EQU 0x00320212

...

LDR R0, =WDTC

MOV R1, #1O

STR R1,[R0]  ; 实现对外设的访问

 

7. 散转功能

CMP RO , #MAXINDEX

ADDLO PC,PC,RO,#4 ; 如果没有超过范围,那么开始跳转

B ERROR           ;散转表所对应的标号 0,1,2,3 ....

 

B FUN1

B FUN2

...

 

8.查表功能

     LDR R1, =TABLE

     LDR R2, [R1 ,R5, LSL #2] ;R5 是要查询的表的标号

     ...

TABLE  DCD 0X11,OX22,OX33

       DCD 0X23,...

 

9.长跳转

    ADD LR, PC , #4

    LDR PC, [PC,#-4]

    DCD LADDR_FUN

    ....

    RET_FUN....

    也可以用 LDR PC, =LADDR_FUN 实现跳转

 

10.信号量

DISP_SEM EQU 0x40002A00

.....

DISP_WAIT

      MOV R1 ,#0

      LDR R0, =DISP_SEM

      SWP R1,R1,[R0]

      CMP R1,#0

      BEQ DISP_WAIT

 

11.伪指令的使用

LDR R1,=0x00120021

LDR R0,=RR_TAB

...

NOP

B ; 死循环

 

12. 外围部件的控制

LDR R0, =GPIO_BASE

MOV R1,#0x00

STR R1,[R0,#0x04] ; IOSET 0x00

MOV R1,#0x10

STR R1,[R0,#OxC0] ; IOCLR 0x101

相关阅读 更多 +
排行榜 更多 +
节奏大师老版本

节奏大师老版本

音乐节奏 下载
真人街机捕鱼怀旧版下载

真人街机捕鱼怀旧版下载

休闲益智 下载
放置宠物市场

放置宠物市场

音乐节奏 下载