ARM指令集学习总结.doc_第1页
ARM指令集学习总结.doc_第2页
ARM指令集学习总结.doc_第3页
ARM指令集学习总结.doc_第4页
ARM指令集学习总结.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

四、ARM7指令集(只看了ARM指令)(一)说明1.处理器指令都是助记符,代表了一串二进制代码。2.指令LDMIA R5, R2,R7,R8 ;是多寄存器寻址方式,意思是把R5中的数据作为地址,把这个地址的数据赋给R2,把R5的下一个地址的数据赋给R7,在把下一个地址的数据赋给R8,是一条无条件执行指令。3.ARM指令特点:4.指令可选后缀(1)S后缀(2)!后缀!后缀的含义:在指令的地址表达式中含有!后缀时,指令执行后,基址寄存器中的地址将发生变化,变化结果为:基址寄存器中的地址值(指令执行后)=指令执行前的值+地址偏移量举例:LDMIA R3,R0,#04! ;R3R0+#04,使用!后缀 (1) B后缀(4)T后缀T后缀是一个很特殊的可选后缀,含义:指令在特权模式下对存储器的访问,将被存储器看成是用户模式的访问。(5)条件后缀在CPSR镇南关存放这条件标志位,他们反映了指令执行结果的某些特征,如两个数据比较结果是否相等,相加是否溢出等,在判断时,都要用到这些条件标志位,条件标志位往往引起程序分支。例:(二)指令集 ARM数据传送指令(存储器访问指令)以ARM为核的单片机结构中,所有的外围模块(片内)都和存储单元一样,是ARM的不同地址单元,无论这些模块的功能如何(通信,输入输出,定时器,存储器等),也无论这些模块的位置在片内还是片外,ARM处理器都把它们视为外部存储器。其操作和对存储器操作是相同的。ARM处理器的数据传送指令只针对存储器,所以也可叫存储器访问指令。把寄存器到存储器传送叫存储,把数据从存储器到寄存器的传送叫加载,ARM只有两种数据传送:存储和加载。举例:其中LDR指令是把数据从外部存储器传送到内部寄存器的指令, 也叫加载指令; STR指令是把数据从内部寄存器传送到外部存储器的指令,也称为存使用语句标号,使用语句标号是寻址是一种简单有效的寻址方法,注意PC作用(1)从寄存器到存储器的情况,一个字节的传送只能传送最低一个字节,如果要存储其他字节就需要移位操作,但是寄存器是32位结构,所以实际上有32位数据进入数据总线,只是把最低字节拷贝4次,这样四个字节都是一样的。在进行字节传送时,要弄清楚存储器是否有单字节接受能力。(2)从存储器到寄存器的加载过程从存储器读出数据时,也是32位数据,ARM处理器执行指令时,把所选择的传送字节放在低8位,其余的用0填充。(2) 大端方式和小端方式注意:(1) 指令的代码代表的是此助记符所表达的二进制是什么,了解这些有助于汇编调试。(2) 数据传送指令基本的就是LDR和STR然后再加上后缀后会衍生出很多。在相对寻址中的相对偏移时,如STR R4,SRART 含义就是把R4中的数据存储到标号指向的地址单元中去,如果标号是程序所使用的一个标号,那么此语句的含义就是修改标号所指向的程序,是无法执行的指令,因此,在使用相对偏移存储指令时,一要注意语句标号不能指向程序存储器的程序存储区,要指向程序存储器的数据存储区和数据存储器的数据存储区。二是所指向的区域是可修改的,如用户模式下,有些存储区是不能访问或是只读的。(3) 对语句LDR R4,START+0X4000,是一条错误的指令,因为程序相对偏移规定不得超过4096字节。分支指令1.分支指令B和分支连接指令BL程序简单跳转使用分支指令B;在需要保存跳转地址时,使用分支链接指令BL。指令格式:BCond 偏移表达式BLCond 偏移表达式说明:(1) 其中Cond是可选条件后缀,使用不受到限制。(2) 跳转的范围是32M地址(3) 在执行跳转指令时,处理器并不保存状态寄存器CPSR。2.分支和交换指令BX在ARM指令集和THUMB指令集之间进行程序跳转时,使用分支和交换指令BX。指令格式:BXCond RnARM数据处理指令1. 注意(1)ARM处理器的数据处理指令和外部存储器无关,而只涉及寄存器和立即数,也就是说数据处理指令是内部寄存器之间实现的的。(2)前面的所有外部存储器的寻址方式,都不适用。(3)一般采用寄存器寻址(4)其中的数据传送指令只是内部寄存器之间的数据传送。(5)数据处理指令和数据传送指令不同,数据处理指令大部分都会影响条件标志。数控位移位方式,就是使用数值常量控制移位位数,另一种就是寄存器控位移位方式,就是使用一个寄存器控制移位位数。注意第二操作数规范是一个8位的无符号数值常量,用0填充到32位后,循环右移偶次后得到的32位数值,例如下:2.ARM数据处理指令详述(1)数据传送指令MOV和MVN(只是在寄存器之间传和前面一种指令有区别)P116(2)加法指令ADD、减法指令SUB、反减法指令RSB、带进位加法指令ADC、带借位减法指令SBC、带借位反减法指令RSCP118其中指令SUBNES就使用了后缀NE和后缀S,注意第二操作数规范并且必须要有第二操作数。(4) 比较和测试指令CMP、CMN、TEQ、和TSTP120注意没有目标寄存器,在这些指令中不需要S后缀,也会刷新程序标志位,不保存比较结果。(5) 逻辑与指令AND、逻辑或指令ORR。逻辑异或指令EOR和位清除指令BICP123注意在ARM汇编中,16进制用#0x做前缀,如#0x00FF是一个16进制数,二进制数使用#2_做前缀,如#2_00110011是一个二进制数。(6)程序转态寄存器传送指令MRS和MSRP127注意在用户模式下不可以改变CPSR中的控制位7:0,如果是MRS R0 ,CPSR中不用指定位域;但是MSR SPSR(CPSR) ,R4这个就是错误的,没有指定位域。(7)乘法指令MUL和乘加指令MLAP129(8)无符号长乘法指令UMULL和长乘加指令UMLAL,带符号长乘法指令SMULL和长乘加指令SMLALP131ARM指令集中和协处理器有关的指令1.协处理器不能独立工作的芯片,必须和CPU一起工作,用来弥补处理器不能做复杂运算的缺点。2.ARM有专门的指令实现对协处理器的操作。(1)协处理器数据操作指令CDPP133(1) 协处理器数据传送指令LDC和STCP134(2) 协处理器寄存器传送指令MRC和MCRP136ARM指令集中的软件中断指令1. ARM指令集中软件中断指令是唯一一条不使用寄存器的ARM指令吗,也是一条可以条件执行的指令。2. 指令介绍(1) 软件中断指令SWI(重要)P138

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论