- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章ARM指令第一部分ARM的寻址方式
ARM处理器的寻址方式 寻址方式是根据指令中给出的地址码字段来实现寻找真是操作数地址的方式 ARM处理器有九种基本的寻址方式 寄存器寻址方式 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器的编号,指令执行时直接取出寄存器值操作。 寄存器寻址指令举例如下: MOV R1,R2 ;R2 - R1 SUB R0,R1,R2 ;R1 - R2 - R0 立即寻址 立即寻址指令中的操作码字段后面的地址码部分就是操作数本身,也就是说,数据 就包含在指令当中,取出指令也就取出了可以立即使用的操作数(立即数)。 立即寻址指令举例如下: SUBS R0,R0,#1 ;R0 – 1 - R0 MOV R0,#0xff00 ;0xff00 - R0 立即数要以“#”为前缀,表示 16进制数值时以“0x”表示。 寄存器偏移寻址 寄存器偏移寻址是ARM指令集特有的寻址方式,当第2操作数是寄存器偏移方式时, 第 2个寄存器操作数在与第 1个操作数结合之前,选择进行移位操作。 寄存器偏移寻址方式指令举例如下: MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入 R0,即R0 = R2 * 8 ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后 和R1 相与操作,结果放入R1 寄存器间接寻址 寄存器间接寻址指令中的地址码给出的是一个通用寄存器编号,所需要的操作数保 存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。 寄存器间接寻址指令举例如下: LDR R1,[R2] ;将 R2 中的数值作为地址,取出此地址 中的数据保存在R1 中 SWP R1,R1,[R2]; 将R2的数值作为地址,取出此地 址中的数值与R1 中的值交换 基址寻址 基址寻址是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址,基址寻址用于访问基址附近的存储单元,常用于查表,数组操作,功能部件寄存器 访问等。 基址寻址指令举例如下: LDR R2,[R3,#0x0C] ;将R3 中的数值加 0x0C 作为地址,取出此地址的数值保存在R2 中 STR R1,[R0,#-2] ;将R0 中的数值减 2 作为地址,把R1 中的内容保存到此地址位置 LDR R0,[R1] ,#4 ;R0=[R1],R1=R1+4 ;后索引基址寻址 ;ARM这种自动索引机制不消耗额外的时间 LDR R0,[R1,R2] ;R0=[R1+R2] ; 基址加索引寻址; 多寄存器寻址 多寄存器寻址就是一次可以传送几个寄存器值,允许一条指令传送 16个寄存器的任何子集或所有寄存器 多寄存器寻址指令举例如下: LDMIA R1!,{R2-R4,R6} ;将R1 单元中的数据读出到R2-R4,R6,R1 自动加1 STMIA R0!,{R3-R6,R10};将R3-R6,R10 中的数据保存到R0 指向的地址,R0 自动加 1 使用多寄存器寻址指令时,寄存器子集的顺序时由小到大的顺序排列,连续的寄存器可用“-”连接,否则,用“,”分隔书写。 堆栈寻址 堆栈是特定顺序进行存取的存储区,操作顺序分为“后进先出”和“先进后出”, 堆栈寻址时隐含的,它使用一个专门的寄存器 (堆栈指针)指向一块存储区域 (堆栈), 指针所指向的存储单元就是堆栈的栈顶。存储器堆栈可分为两种: 向上生长:向高地址方向生长,称为递增堆栈 向下生长:向低地址方向生长,称为递减堆栈 堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈 堆栈指针指向下一个要放入的空位置,称为空堆栈。 这样就有4 中类型的堆栈表示递增和递减的满堆栈和空堆栈 堆栈分为以下四种类型(FULL UP EMPTY DOWN) ①满向上生长型(FA):堆栈按高地址方向生长,当前堆栈
文档评论(0)