嵌入式微处理器 arm指令集 幻灯片课件.ppt

嵌入式微处理器 arm指令集 幻灯片课件.ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式微处理器 arm指令集 幻灯片课件.ppt

第五讲 ARM指令集与编程 孙成富 ARM 指令集的特点 向后兼容:新版本增加指令,并保持指令向后兼容; Load-store 结构* load/store –从存储器中读某个值,操作完后再将其放回存储器中 只对存放在寄存器的数据进行处理; 对于存储器中的数据,只能使用load/store指令进行存取 指令格式 指令格式 3 地址指令格式 在ARM状态中使用 例 指令语法 目标寄存器(Rd) 源寄存器1(Rn) 源寄存器2(Rm) ADD r3,r1,r2 r3 r1 r2 ARM指令编码格式 说明 Cond 指令执行的条件编码 Opcode 指令操作符编码 S 决定指令的操作是否影响CPSR的值 Rd 操作目标寄存器编码 Rn 包含第一操作数的寄存器编码 Shifter_operand 表示第二操作数 cond 001 opcode s Rn Rd Shifter_operand 31 28 27 25 24 21 20 19 16 15 12 11 8 7 0 ARM指令的寻址方式 寄存器寻址  寄存器中的数据就是操作数 立即寻址   指令中给出了操作数本身 寄存器间接寻址 以寄存器中的数据为地址从存储器取出数据作为操作数 寄存器变址寻址 将寄存器中的数据和指令中的数据相加得到操作数的有效地址 多寄存器寻址  一次完成对多个寄存器的操作 相对寻址    指相对程序计数器PC当前值的寻址方式 堆栈寻址    针对堆栈的寻址方式 数据处理指令 - 2 ADD r0, r1, r2 r0 := r1 + r2 ADC r0, r1, r2 r0 := r1 + r2 + C SUB r0, r1, r2 r0 := r1 - r2 SBC r0, r1, r2 r0 := r1 - r2 + C - 1 RSB r0, r1, r2 r0 := r2 – r1 RSC r0, r1, r2 r0 := r2 – r1 + C - 1 算术操作 按位逻辑操作 AND r0, r1, r2 r0 := r1 and r2 ORR r0, r1, r2 r0 := r1 or r2 EOR r0, r1, r2 r0 := r1 xor r2 BIC r0, r1, r2 r0 := r1 and (not) r2 寄存器移位 MOV r0, r2 r0 := r2 MVN r0, r2 r0 := not r2 比较操作 CMP r1, r2 set cc on r1 - r2 CMN r1, r2 set cc on r1 + r2 TST r1, r2 set cc on r1 and r2 TEQ r1, r2 set cc on r1 xor r2 数据处理指令 - MOV MOV指令是把一个数N送到目标寄存器中,N可以是寄存器,也可以是立即数。 MOV指令语法: 〈指令〉{〈cond} {S} Rd, N 例:PRE r0= 5 , r2=6 MOV r0, r2 POST r0=6 ,r2=6 MOV r0, r2 r0 := r2 MVN r0, r2 r0 := not r2 桶形移位器的使用 PRE r0=8, r2=5 MOV r0 ,r2, LSL #2(逻辑左移两位:r22=r5*4) POST r0=20, r2=5 数据处理指令 移位操作 在任何数据处理指令中,第二个寄存器操作数可以有应用该操作数的移位操作. 逻辑移位 LSL:逻辑左移 字的最小位空位清零 LSR:逻辑右移字的最大位空位清零. 桶形移位器操作 LSL:逻辑左移(Logical Shift Left)。寄存器中字的低端空出的位补0。 LSR:逻辑右移(Logical Shift Right)。寄存器中字的高端空出的位补0。 ASR:算术右移(Arithmetic Shift Right)。算术移位的对象是带符号数,在移位过程中必须保持操作数的符号不变。若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。 ROR:循环右移(Rotate Right)。从字的最低端移出的位填入字的高端空出的位。 RRX:扩展为1的循环右移(Rotate Right Extended by 1 place)。操作数右移一位,空位(位[31])用原C标志填充。 数据处理指令 - 3 移位操作 (cont’d) 算术移位 ASR: = LSR ASL: 算术左移 循环移位: ROR,

文档评论(0)

youngyu0329 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档