欢迎来到天天文库
浏览记录
ID:48825156
大小:1.02 MB
页数:59页
时间:2020-01-30
《第三章 ARM的指令系统ARM7 - 副本.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第三章ARM的指令系统一、ARM指令的寻址方式二、ARM指令概述三、ARM指令集四、ARM汇编指令实战五、本节附录一、ARM指令的寻址方式汇编指令由操作码字段和操作数字段两部分组成。操作码字段指示处理器所要执行的操作;操作数字段指出在指令执行操作的过程中所需要的操作数。指令的一般格式:操作码操作数······操作数操作码一般由指令助记符码、条件码等组成。操作数字段可以有两个或者三个,第一个操作数为目的操作数,后面的操作数为源操作数。寻址方式是指根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM
2、处理器具有6种基本寻址方式:①立即寻址;②寄存器寻址;③寄存器移位寻址;④寄存器间接寻址;⑤基址寻址;⑥多寄存器寻址。1.1立即寻址操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里。立即寻址方式经常用于给寄存器赋初值。例:立即寻址举例SUBR0,R0,#1;将R0减1,结果放入R0MOVR0,#0xFF;将立即数0xFF装入R0寄存器1.2寄存器寻址寄存器寻址是指:操作数的值在寄存器中,指令中的地址码字段指出的是寄存器的编号,指令执行时直接取出寄存器值来操作。例:寄存器寻址举例MO
3、VR1,R2;将R2的值存入R1中1.3寄存器移位寻址寄存器移位寻址是ARM指令集特有的寻址方式,只能对第2个操作数使用。ARM指令集共有5种移位操作:LSL逻辑左移(LogicalShiftLeft),寄存器中字的低端空出的位补0;LSR逻辑右移(LogicalShiftRight),寄存器中字的高端空出的位补0;ASR算术右移(ArithmeticShiftRight),移位过程中保持符号位不变;ROR循环右移(ROtateRight),由字的低端移出的位填入字的高端;RRX带扩展的循环右移(Rotat
4、eRighteXtendedby1place),操作数右移1位,高端空出的位用原C标志值填充,C标志值用移出的最低位填充。移位操作示意图例:寄存器移位寻址举例MOVR0,R1,LSL#3;R1的值左移3位,结果放入R0,即R0=R1×8ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相“与”操作,;结果放入R1中1.4寄存器间接寻址寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,寄存器为操作数的地址指针。例:寄存器间接寻址举例LDRR1,[R2];将R2指向的存储单元的数据读出
5、,保存在R1中,即[R2]→R1ADDR1,R2,[R3];将R3指向的存储单元的数据与R2相加,结果保存在R1中1.5基址寻址基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。例:基址寻址举例LDRR2,[R3,#0x0C];[R3+0x0C]→R2,地址基址是R3,偏移量0x0CSTRR1,[R0,#-4];[R0-4]→R1,地址基址是R0,偏移量减4基址寻址中得到的新地址值,总共有三种处理情况:①前索引基址寻址方式,基址寄存器的值不改变。指令执行时,先是基址和偏移量相加(
6、或相减),把结果作为地址再寻址,这种寻址方式称之为前索引基址寻址。地址基址仍然是指令执行前的值。例:前索引基址寻址,不改变基址寄存器的值LDRR2,[R3,#0x0C];[R3+0x0C]→R2,基址寄存器R3的值保持不变②前索引基址寻址方式,基址寄存器的值发生变化。指令执行时,先是基址和偏移量相加(或相减),把结果作为新地址再寻址。得到的新地址保存到基址寄存器中。(操作数后加必须一个后缀!)。例:前索引基址寻址,改变基址寄存器的值LDRR2,[R3,#0x0C]!;[R3+0x0C]→R2,基址寄存器R3
7、=R3+0x0C③后索引基址寻址,基址寄存器的值发生变化。指令执行时,先直接把基址寄存器的数值作为地址进行寻址,称为后索引基址寻址。指令执行后,再把基址和偏移量相加(或相减),得到的结果保存在基址寄存器中。(偏移量必须写在[]外面)。例:后索引基址寻址举例LDRR2,[R3],#0x0C;[R3]→R2,基址寄存器R3=R3+0x0C1.6多寄存器寻址一次对多个寄存器寻址称之为多寄存器寻址。使用多寄存器寻址指令时,寄存器名的顺序是由小到大排列,连续的寄存器可用“-”链接,否则用“,”分隔书写。例9、多寄存器
8、寻址举例LDMIAR1!,[R2-R7,R12];将R1指向的单元中的数据读出到R2-R7、R12中;(每读出一个数据,R1就自动加4,指向下一个数据的物理地址)二、ARM指令概述ARM7TDMI处理器有两套指令集:32位ARM指令集;16位Thumb指令集。ARM指令集可以划分为以下6组。①数据处理指令;②存储器访问指令;③分支跳转指令;④协处理器指令;⑤杂项指令;⑥ARM伪指令。1.1指令格式ARM指令的基本
此文档下载收益归作者所有