指令格式与条件码讲解_第1页
指令格式与条件码讲解_第2页
指令格式与条件码讲解_第3页
指令格式与条件码讲解_第4页
指令格式与条件码讲解_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、3 嵌入式ARM指令系统 第章 了解了解ARMARM指令系统的特点指令系统的特点 掌握掌握ARMARM指令的寻址方式及指令指令的寻址方式及指令 了解了解ThumbThumb指令系统指令系统 ARM指令的基本格式如下: S , 其中号内的项是必须的,号内的项是可选的。各项的说明 如下: opcode:指令助记符; Rd:目标寄存器(操作数据的最终结果存放的寄存器); cond:执行条件; Rn:第1个操作数的寄存器; S:它是标记,是否影响/修改CPSR寄存器对应位的值; operand2:第2个操作数; LDRR0,R1;读取R1地址上的存储单元内容,执行条件AL; BEQDATAEVEN;条

2、件执行分支指令,执行条件EQ,即相等则跳 转到DATAEVEN; ADDS R2,R1,#1;加法指令,R2R1+1,影响/修改CPSR寄存器对 应C位的值; SUBNES R2,R1,#0 x20;条件执行的减法运算,执行条件NE,R1- 0 x20 -R2,影响CPSR寄存器; ARM指令的基本格式如下: S , 灵活的使用第2个操作数“operand2”能够提高代码效率。 它有如下的形式有如下的形式: #immed_8r常数表达式,立即数 (挺难理解); Rm寄存器方式(操作数即为寄存器中的数值); Rm,shift寄存器移位方式; #immed_8r常数表达式常数表达式 一个立即数必须

3、用一个字节(必须用一个字节(8bit8bit)可以描述完成)可以描述完成 该常数必须对应8位位图(pattern),即一个8位的常 数通过循环右移偶数位得循环右移偶数位得到,为合法常量。 循环右移10位 0 x00 0 0 0 0 0 0 0 0 0 x00 0 0 0 0 0 0 0 0 0 x00 0 0 0 0 0 0 0 0 0 x00 0 0 0 0 0 0 0 0 0 x00 0 0 0 0 0 0 0 0 0 x80 1 0 0 0 0 0 0 0 0 x04 0 0 0 0 0 1 0 0 8位常数 0 x12 0 0 0 1 0 0 1 0 例如: MOVR0,#1 ; R0

4、 = 1 ANDR1,R2,#0 x0F ; R2与与0 x0F,结果保存在结果保存在R1中中 LDR R0,R1,#-4 ;读取读取R1地址上的存储器单元内容地址上的存储器单元内容, ;且且R1=R1-4 如何判断合法常量与非法常量? 一个常数中的两个“1”在8个比特中实现,并且后面跟偶数个零(二进制) 合法常量 0 xFF、0 x104、0 xFF0、0 xFF000、0 xFF000000、0 xF000000F 非法常量: 0 x101、0 x102、0 xFF1、0 xFF04,0 xFF003、0 xFFFFFFFF Rm寄存器方式(可以实现复杂的立即数(非法)) 在寄存器方式下,

5、操作数即为寄存器中内容的数值。 例如: SUBR1,R1,R2 ;R1- R2R1 MOVPC,R0 ;PC=R0,PC=R0,程序跳转到指定地址程序跳转到指定地址 LDR R0,R1,-R2 ;读取读取R1R1地址上的存储器单元内容地址上的存储器单元内容 ;并存入并存入R0R0,且,且R1=R1-R2R1=R1-R2 Rm,shift寄存器移位方式 将寄存器的移位结果作为操作数,但Rm值保持不变, 移位方法如下: 0 LSR移位操作: 0 ASR移位操作: ROR移位操作: RRX移位操作: 每次只能移动一每次只能移动一 位,把位,把CPSR寄寄 存器中的存器中的C/进位进位 位补充到最左边

6、位补充到最左边 C ASL移位操作: 空出的最低有 效位用0填充 空出的最高有 效位用0填充 算术移位的对象是 有 符号数,移位过程 中 必须保持操作数的 符 号不变。即源操作 数是正数,则空出 的 最高有效位用0填 充,如果是负数, 则用1填充。将寄存器的内容循环 右移1位,空位用原 来的C标志位填充。 0 Rm,shift寄存器移位方式 例如: ADDR1,R1,R1,LSL #3;R1=R1+R1*8=9R1,即即R1乘以乘以9 SUBR1,R1,R2,LSR R3;R1=R1-(R2/2R3) 注意:注意:ARM指令只会改变目标寄存器中的内容,而操作数寄存器中的内容指令只会改变目标寄存

7、器中的内容,而操作数寄存器中的内容 不不 会改变;会改变; 错例: ADD R3,R7,#1023 (十进制十进制);1023(0 x3FF)不是一个循环移位的8位位图 SUB R11,R12,R3,LSL #32 ;#32超出了超出了LSL范围范围 MOVS R4,R4,RRX #3 ;RRX不需指定移位量, RRX总是移总是移1位位 ARM指令的基本格式如下: S , 使用条件码“cond”可以实现高效的逻辑操作,提 高代码效率。 所有的ARM指令都可以条件执行,而Thumb指令 只有B(跳转)指令具有条件执行功能。如果指令不标如果指令不标 明条件代码,将默认为无条件(明条件代码,将默认为无条件(ALAL)执行)执行。 指令条件码表 C代码: If(a b) a+; Else b+; 对应的汇编代码如下.其R0为a,R1为b CMPR0,R1 ;R0与R1比较 ADDHI R0,R0,#1 ;若R0R1,则R0=R0+1 ADDLS R1,R1,#1 ;若R0R1,则R1=R1+1 示例1: C代码: If(a!=10)比较R0是否为10 CMPNE R1,#20 ;若R0不为10,则比较 ;R1是否为20 ADDNE R0,R0,R1;若R0不为1

温馨提示

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

评论

0/150

提交评论