网站大量收购闲置独家精品文档,联系QQ:2885784924

[教育学]第三章 ARM指令系统.ppt

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

* ③BX指令——目标为Thumb代码或ARM代码 格式: BX Rm 编码结构: 其中:Rm装有目的地址的ARM寄存器。Rm的位[0]不用于地址部分。 若Rm的位[0]清零,则: — 位[1]也必须清零; — 指令清零CPSR中的标志T,目的地址的代码被解释为ARM代码。 若Rm的位[0]置1,则: —目标地址的代码仍为Thumb代码。 15 0 0 1 0 0 0 1 1 1 8 0 0 0 3 Rm 5 2 6 7 0 H ④BLX指令 格式1:BLX Label ——目标为ARM代码 15 11 0 1 1 1 1 10 10位偏移量 12 H 0 1 格式2:BLX Rm——目标为ARM代码或Thumb代码 BLX指令执行时: 拷贝下一条指令的地址到LR寄存器。 引起处理器转移到label或Rm存储的地址。 如果Rm的位[0]清0,或使用格式1,则指令集切换到ARM状态。 (五)堆栈指令 功能:低寄存器和可选的LR进栈。低寄存器和可选的PC出栈。 格式: POP { Reglist { , PC}} PUSH { Reglist { , LR}} 其中:Reglist 低寄存器范围的、用逗号隔开的列表。 注释: 1.Thumb堆栈是满递减堆栈,向下增长,且SP指向堆栈的最后入口。 2.寄存器以数字顺序存储在堆栈中。最低数字的寄存器其地址最低。 3.POP{reglist,PC}这条指令引起处理器转移到从堆栈弹出给PC的地址。这通常是从子程序返回,其中LR在子程序开头压进堆栈。 4.指令采用基址回写,因此基址寄存器不应出现在 寄存器列表中。 条件码标志 这些指令不影响条件码标志 例: PUSH {R0,R4-R7} ;R0、R4~R7进栈 PUSH {R0,LR} POP {R2,R5} POP {R0-R7,PC} ;出栈并从子程序返回 (六)寄存器读取和存储指令 单寄存器读取和存储 Thumb单寄存器传送类指令是ARM单寄存器传送类指令的一个子集,和ARM有相同的指令格式。 多寄存器读取和存储指令 Thumb多寄存器传送类指令和ARM有相同的指令格式。 (七)移位和循环移位操作 ASR、LSL、LSR和ROR运算 功能:移位和循环移位操作。这些指令可使用寄存器中的值或立即数来表示偏移量。 格式1:操作码 Rd , Rn , #immed 操作码: ASR、LSL、LSR Rd: 立即数移位的目的寄存器。Rd必须在R0~R7范围内。 Rn: 立即数移位的源寄存器。Rn必须在R0~R7范围内。 #immed:立即数移位量。它是一个取值为整数的表达式。整数的范围如下: — 操作码若是LSL,则为0~31; — 其它则为1~32。 格式2:操作码 Rd , Rs 编码结构: 15 0 0 1 0 0 0 0 Rd 3 Rs 5 2 6 9 Op 10 其中: 操作码:ASR、LSL、LSR 、ROR。 Rd: 目的寄存器,它也是第1操作数寄存器。Rd必须在 R0~R7范围内。 Rs: 在寄存器控制移位中包含移位量的寄存器。Rs必须 在R0~R7范围内,只有Rs的最低有效字节可用作偏 移量。 条件标志位: 对于除ROR以外的所有指令,若移位量为32,则Rd清0,最后移出的位保留在标志C中,并根据结果影响N、Z标志位。若移位量大于32,则Rd和标志C均被清0,并根据结果影响N、Z标志位。 对于ROR指令,若移位量为32,则Rd不变且不影响标志位;若移位量大于或小于32时,则最后移出的位将存入到C中,并根据结果影响N、Z标志位。 任何情况都不影响标志V。 例: ASR R3,R5 LSR R0,R2,#6 LSR R5,R5,zyb LSL R0,R4,#0 ROR R2,R3 ;将R3中的值算术右移R5次后再放入R3。 ;将R2中的值逻辑右移6次后放入R0。 ;zyb必须取值为1~32的整数。 ;将R4的内容放到R0中,除不影响标志位C和V外,同MOV R0,R4 ;R2中的值循环右移R3次后放入R2中。 (八)数据处理指令 除移位操作之外的数

文档评论(0)

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

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

1亿VIP精品文档

相关文档