嵌入式系统 第三章 ARM指令系统.ppt

嵌入式系统 第三章 ARM指令系统.ppt

ID:49279385

大小:245.50 KB

页数:57页

时间:2020-02-02

嵌入式系统 第三章 ARM指令系统.ppt_第1页
嵌入式系统 第三章 ARM指令系统.ppt_第2页
嵌入式系统 第三章 ARM指令系统.ppt_第3页
嵌入式系统 第三章 ARM指令系统.ppt_第4页
嵌入式系统 第三章 ARM指令系统.ppt_第5页
资源描述:

《嵌入式系统 第三章 ARM指令系统.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章ARM指令系统3.1数据处理指令3.2数据传送指令3.3控制流指令3.4汇编语言程序汇编语言的源语句行的一般格式是:{label}{instruction

2、directive

3、pseudo‑instruction}{;comment}注意:即使没有标号,指令、伪指令和命令前面也必须有一个空白,例如一个空格或制表符。源语句行的所有三部分都是可选的。可以使用空行来使代码更具可读性大小写规则指令记忆码、命令和符号寄存器名称可以用大写或小写编写,但不能混合使用大小写。标号:标号是表示地址的符号。在汇

4、编时计算由标号指定的地址。汇编器计算标号的地址,该地址是相对于所定义标号所在段的原点的。引用相同段内的一个标号时,可以使用程序计数器加上或减去一个偏移量。这被称为相对程序的寻址。其它段中的标号地址是在链接时计算的,此时链接程序已在存储器中为每个段分配了具体的位置。注释:一行中的第一个分号用于标记注释的开始,但不包括出现在一个字符串常数内的分号。行的末尾就是注释的结束。一个注释本身就是一个有效的行。汇编程序将忽略所有注释。常数:常数可以数值、布尔值、字符或字符串。数字可以接受下列形式的数字常数:十进

5、制数,如123十六进制数,如,0x7B布尔值布尔常数TRUE和FALSE必须书写为{TRUE}和{FALSE}。字符字符常数由左、右单引号组成,中间括住单个字符或一个转义字符,采用标准的C转义字符。字符串字符串由左、右双引号括住多个字符或空格而组成。如果在一个字符串内使用了双引号或美元字符作为文字文本字符,则必须用一对适当的字符来表示它们。例如,如果需要在字符串内使用单个$,则必须使用$$。在字符串常数内可以使用标准的C转义序列。ARM汇编语言模块的示例AREAARMex,CODE,READONL

6、Y;NamethisblockofcodeARMexENTRY;MarkfirstinstructiontoexecutestartMOVr0,#10;SetupparametersMOVr1,#3ADDr0,r0,r1;r0=r0+r1stopMOVr0,#0x18;angel_SWIreason_ReportExceptionLDRr1,=0x20026;ADP_Stopped_ApplicationExitSVC     #0x123456;ARMsemihosting(formerlySW

7、I)END;Markendoffile3.1数据处理指令ARM的数据处理指令使得程序员能够完成寄存器中数据的算术和逻辑操作。其他指令只是传送数据和控制程序的顺序。数据处理指令的典型特征是需要两个操作数,产生单个结果。所有的操作数是32位,或来自寄存器、或是指令中定义的立即数。如果有结果,则结果为32位宽并只能在寄存器中。每一个操作数寄存器和结果寄存器都在指令中独立指定,也即ARM指令使用3地址模式。ADDr0,r1,r2;r0:=r1+r2注意指令中操作数的顺序,r0是结果寄存器,然后是第一操作数

8、(r1),最后是第二操作数(r2)。当指令执行后,对系统状态而言唯一的变化是目的寄存器r0的值。CPSR中的标志位(N、Z、C、V)也可有选择地变化。1、算术操作这类指令对两个32位操作数进行二进制算术操作。ADDr0,r1,r2;r0:=r1+r2ADCr0,r1,r2;r0:=r1+r2+CSUBr0,r1,r2;r0:=r1-r2SBCr0,r1,r2;r0:=r1-r2+C-12、逻辑操作这类指令对输入操作数的对应位进行指定的布尔逻辑操作。ANDr0,r1,r2;r0[i]:=r1[i]a

9、ndr2[i]ORRr0,r1,r2;r0:=r1orr2EORr0,r1,r2;r0:=r1xorr2BICr0,r1,r2;r0:=r1andnotr23、寄存器传送操作这些指令无第一操作数(省略),只是简单的将第二操作数传送到结果寄存器。MOVr0,r2;r0:=r2MVNr0,r2;r0:=notr24、比较操作这类指令不产生结果(省略结果寄存器),仅影响CPSR中的相应位(N、Z、C、V)。CMPr1,r2;r1-r2ccCMNr1,r2;r1+r2ccTSTr1,r2;r1andr

10、2ccTEQr1,r2;r1xorr2cc5、立即数操作因为立即数是在32位指令中编码,所以不可能将32位都作为立即数,只能是一个8位数并按两位数为边界进行的调整。立即数=(0->255)x22n0<=n<=12ADDr3,r3,#1;r3:=r3+1ANDr8,r7,#&ff;r8:=r7[7:0]6、寄存器移位操作这类指令允许第二个操作数(寄存器)在同第一个操作数(寄存器)运算之前完成移位操作。ADDr3,r2,r1,LSL#3;r3:=r2+r1x8这是一条在单个时钟周期

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

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

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