常用arm指令及汇编【二】

常用arm指令及汇编【二】

ID:8809638

大小:42.00 KB

页数:9页

时间:2018-04-08

常用arm指令及汇编【二】_第1页
常用arm指令及汇编【二】_第2页
常用arm指令及汇编【二】_第3页
常用arm指令及汇编【二】_第4页
常用arm指令及汇编【二】_第5页
资源描述:

《常用arm指令及汇编【二】》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、ARM汇编程序设计及一些格式要求说明一般地,ARM源程序文件名的后缀名如下:汇编文件:*.S引入文件:*.INCC程序:    *.c头文件:   *.h汇编语句格式:[标号] <指令

2、条件

3、S>  <操作数>  [;注释]1、所有标号必须在一行的顶格书写,其后面不要加:2、所有指令均不能顶格书写3、ARM汇编器对标识符大小写敏感,书写标号及指令时字母大小要一致,在ARM汇编程序中,一个ARM指令,伪指令,寄存器名可以全部为大写字母,也可以全部为小写字母,但不要大小写混合使用4、注释使用;或者@,@表示开始到此行结束,注释可以在一行顶格书写(对A

4、DS汇编格式,只支持;)5、源程序中允许空行6、如果单行太长,可以使用字符/将其分行,/后不能有任何字符,包括空格7、对于变量的设置,常量的定义,其标识符必须在一行的顶格书写标号:在ARM汇编中,标号代表一个地址,根据标号生成方式,可以分为以下3种1、基于PC的标号,例如:BL LEDTEST2、基于寄存器的标号,例如:MAP 0x00,R93、绝对地址,例如:LDRR0,=WTCON局部标号:主要用于局部范围代码中,对宏定义也非常有用,格式如下:N{routname}N是局部标号,为0~99routname是局部标号作用范围的名称局部标号引用格

5、式:%{F

6、B} {A

7、T} N{routname}其中:%表示局部标号引用操作F指示编译器只向前搜索B指示编译器只向后搜索A指示编译器搜索宏的所有嵌套层次T指示编译器搜索宏的当前层应用举例如下:      mov  r1,#160    subs r1,r1,#1      bne   %B0宏定义及其作用:使用宏定义可以提高程序的可读性,简化程序代码和同步修改,宏首先要定义,然后再使用,当源程序被汇编时,汇编器将展开每一个宏调用,用宏定义体代表程序中的宏调用,并使用实际的参数值代替宏定义时的形式参数宏定义应用举例如下:.....MACRO  

8、     ;宏定义CALL $FUNCTION,$DAT1,$DAT2  ;宏名称为CALL,带有3个参数IMPORT $FUNCTION      ;声明外部子程序MOV   R0,$DAT1   ;设置子程序参数,R0=$DAT1MOV  R1,$DAT2   ;BL      FUNCTION  ; 调用子程序MEND                      ;宏定义结束......汇编预处理后,宏调用将被展开,程序清单如下:......IMPORT FADD1MOV   R0,#3MOV   R1,#3BL      FADD1子程序的

9、调用:使用BL指令进行调用,该指令会把返回的PC值保存在LR示例如下:       ......       BL DELAY        ......DELAY  ....        MOVPC,LR当子程序指令完毕后,使用MOV,B/BX,STMFD等指令返回,STMFD要与LDMFD配套使用STMFD SP!,{R0-R7,LR}......LDMFD SP!,{R0-R7,PC}ARM7TDMI(-S)是没有BLX指令的,但可以通过以下几条程序实现其功能ADR R1, DELAY+1MOV LR , PC ;保存返回地址到LRBX 

10、    R1          ;  跳转并切换指令集......该程序要注意的是3级流水线,PC执行到哪里是关键特殊寄存器定义及应用:基于ARM核的芯片一般有片内外设,它们通过其特殊寄存器访问示例如下:WDTC  EQU 0xE000000   ;寄存器定义              ....               LDR R0,=WDTC  ;加载立即数要加=               MOV R1, #0x12               STR R1, [R0]          ;WDTC=0x12散转功能是汇编程序常用的一种算

11、法,其示例如下:      CMP R0,#MAXINDEX                 ;判断索引号是否超过最大索引值      ADDLO PC,PC,R0,LSL#2   ;若没有超出,则跳转到相应位置      B      ERROR                                  ;若已经超出,则进行出错处理      ;散转表,对应索引号为0~N      B    FUN1      B    FUN2      B    FUN3查表操作是汇编程序常用的一种操作,其示例如下:        LDR R3, 

12、=DISP_TAB          ;取得表头        LDR R2,[R3,R5,LSL#2]  ;根据R5的值查表,取出相应

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。