ARM指令的寻址方式.ppt

ARM指令的寻址方式.ppt

ID:48786475

大小:124.00 KB

页数:12页

时间:2020-01-27

ARM指令的寻址方式.ppt_第1页
ARM指令的寻址方式.ppt_第2页
ARM指令的寻址方式.ppt_第3页
ARM指令的寻址方式.ppt_第4页
ARM指令的寻址方式.ppt_第5页
资源描述:

《ARM指令的寻址方式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ARM指令的寻址方式寄存器寻址立即寻址寄存器移位寻址寄存器间接寻址变址寻址多寄存器寻址堆栈寻址块复制寻址相对寻址寻址方式是处理器根据指令中给出的地址码字段信息来寻找真实操作数物理地址的方式。目前ARM处理器支持9种基本的寻址方式。寄存器寻址寄存器中的数值作为操作数,指令中地址码字段给出的是寄存器编号,指令执行时直接取出寄存器值操作。ADDR0,R1,R2;R0R1+R2该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在R0寄存器中。MOVR1,R2;R1R2该指令的执行效果是将寄存器R2的内容传送到寄存器R1中。立即寻址ADDR3,R3,#1;R3

2、R3+1ANDR8,R7,#0xff;R8R7[7:0]SUBR0,R0,#1;R0R0-1第2个源操作数为一个立即数,以“#”为前缀,十六进制值以在“#”后加“0x”表示。立即寻址是一种特殊的寻址方式,指令中在操作码字段后面的地址码不是通常意义上的操作数地址,而是操作数本身。这样的数称为操作数。寄存器移位寻址可以采取的移位操作如有:LSL:逻辑左移(LogicalShiftLeft)。寄存器中字的低端空出的位补0。0LSR:逻辑右移(LogicalShiftRight)。寄存器中字的高端空出的位补0。0这种寻址方式是ARM指令集特有的,第2个寄存器操作数在与

3、第1个操作数结合之前,先选择进行移位操作,再结合。ADDR3,R2,R1,LSL#3;R3R2+8×R1MOVR0,R2,LSL,#3;R08×R2寄存器移位寻址ASR:算术右移(ArithmeticShiftRight)。算术移位的对象是带符号数,若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。RRX:扩展的循环右移(RotateRightExtendedby1place)。向右移位,只移一位,左侧空位由状态寄存器C位填充,右侧移出的位移进状态位C中。ROR:循环右移(RotateRight)。从字的最低端移出的位填入字的

4、高端空出的位。C寄存器间接寻址寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。ADDR3,R2,[R1];R3R2+[R1]LDRR0,[R1];R0[R1]STRR0,[R1];[R1]R0基址变址寻址基址变址寻址就是将寄存器(该寄存器一般为基址寄存器)的内容与指令中给出的地址偏移量相加,形成操作数的有效地址。基址变址寻址用于访问基址附近的存储单元,常用于查表、数组操作。基址加偏移寻址基址加索引寻址前索引寻址方式:基址需加(或减)偏移来计算访问的地址。例如:LDRR0,[R1,#4];

5、R0[R1+4]后索引寻址方式:基址不带偏移作为传送的地址,传送后自动索引。例如:LDRR0,[R1],#4;R0[R1];R1R1+4指令指定一个基址寄存器,再指定另一个寄存器(索引),其值作为位移加到基址上形成存储器地址。例如:LDRR0,[R1,R2];R0[R1+R2]多寄存器寻址LDMIAR1,{R0,R2,R5};R0[R1];R2[R1+4];R5[R1+8]该指令的后缀IA表示在每次执行完加载/存储操作后,R1按字长度增加,指令可将连续存储单元的值送到R0,R2,R5寄存器中。多寄存器寻址方式就是用一条指令完成多个寄存器值的传送,允许

6、一条指令完成传送最多16个通用寄存器的值。STMIAR1,{R0,R2,R5};[R1]R0;[R1+4]R2;[R1+8]R5该指令的后缀IA表示在每次执行完加载/存储操作后,R1按字长度增加,指令可将R0,R2,R5寄存器的值送到连续存储单元中。使用多寄存器寻址指令时,寄存器子集的顺序由小到大的顺序排列,连续的寄存器可用“-”连接,或用“,”分隔书写。堆栈寻址堆栈是一种数据结构,操作顺序分为“先进后出”(FILO)和“后进先出”(LIFO),使用一个成为堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。根据增长方向,堆栈可分为:向上生长:即向

7、高地址方向生长,称为递增堆栈(AscendingStack)。向下生长:即向低地址方向生长,称为递减堆栈(DescendingStack)。根据栈指针的指向位置,堆栈可分为:满堆栈:堆栈指针指向最后压入堆栈的有效数据项空堆栈:堆栈指针指向下一个数据项放入的空位置满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生产。空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。堆栈寻址这样就有4种类型的堆

8、栈工作方式

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。