指令格式与条件码.ppt

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

本章目标 3.1 ARM指令集概述 3.2 ARM指令系统 ARM指令的种类: 存储器访问指令 数据处理指令 乘法指令 ARM分支指令 协处理器指令 杂项指令 伪指令 总 结 MTSE1.0 MTSE1.0 * * * 3 嵌入式ARM指令系统 第 章 了解ARM指令系统的特点 掌握ARM指令的寻址方式及指令 了解Thumb指令系统 ARM指令的基本格式如下: 3.1.1 指令格式 ARM指令集——指令格式 opcode {cond} {S} Rd ,Rn, {operand2} 其中号内的项是必须的,{}号内的项是可选的。各项的说明如下: opcode:指令助记符; Rd:目标寄存器(操作数据的最终结果存放的寄存器); cond:执行条件; Rn:第1个操作数的寄存器; S:它是标记,是否影响/修改CPSR寄存器对应位的值; operand2:第2个操作数; ARM指令格式举例: ARM指令:用黑色表示;条件码:用蓝色表示;标记:用红色表示; LDR R0,[R1];读取R1地址上的存储单元内容,执行条件AL; BEQ DATAEVEN;条件执行分支指令,执行条件EQ,即相等则跳转到DATAEVEN; ADDS R2,R1,#1;加法指令,R2?R1+1,影响/修改CPSR寄存器对应C位的值; SUBNES R2,R1,#0x20;条件执行的减法运算,执行条件NE,R1-0x20 --R2,影响CPSR寄存器; ARM指令的基本格式如下: ARM指令集——第2个操作数,使用的非常灵活 opcode {cond} {S} Rd ,Rn{,operand2} 灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式: #immed_8r——常数表达式,立即数 (挺难理解); Rm——寄存器方式(操作数即为寄存器中的数值); Rm,shift——寄存器移位方式; ARM指令集——第2个操作数 #immed_8r——常数表达式 一个立即数必须用一个字节(8bit)可以描述完成 该常数必须对应8位位图(pattern),即一个8位的常数通过循环右移偶数位得到,为合法常量。 循环右移10位 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x80 1 0 0 0 0 0 0 0 0x04 0 0 0 0 0 1 0 0 8位常数 0x12 0 0 0 1 0 0 1 0 ARM指令集——第2个操作数 例如: MOV R0,#1 ; R0 = 1 AND R1,R2,#0x0F ; R2与0x0F,结果保存在R1中 LDR R0,[R1],#-4 ;读取R1地址上的存储器单元内容, ;且R1=R1-4 如何判断合法常量与非法常量? 一个常数中的两个“1”在8个比特中实现,并且后面跟偶数个零(二进制) 合法常量 0xFF、0x104、0xFF0、0xFF000、0xFF000000、0xF000000F 非法常量: 0x101、0x102、0xFF1、0xFF04,0xFF003、0xFFFFFFFF ARM指令集——第2个操作数 Rm——寄存器方式(可以实现复杂的立即数(非法)) 在寄存器方式下,操作数即为寄存器中内容的数值。 例如: SUB R1,R1,R2 ;R1-- R2?R1 MOV PC,R0 ;PC=R0,程序跳转到指定地址 LDR R0,[R1],-R2 ;读取R1地址上的存储器单元内容 ;并存入R0,且R1=R1-R2 ARM指令集——第2个操作数 Rm,shift——寄存器移位方式 将寄存器的移位结果作为操作数,但Rm值保持不变,移位方法如下: 带扩展的循环右移1位 RRX 算术左移n位(与LSL同义) ASL #n 循环右移n位(1≤n≤31) ROR #n 逻辑右移n位(1≤n≤32) LSR #n 算术右移n位(1≤n≤32) ASR #n 逻辑左移n位(1≤n≤31) LSL #n 说明 操作码 说明 操作码 ARM指令集——第2个操作数 0 LSR移位操作:

文档评论(0)

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

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

1亿VIP精品文档

相关文档