欢迎来到天天文库
浏览记录
ID:49222076
大小:892.50 KB
页数:99页
时间:2020-02-02
《嵌入式系统(第3-2章_ARM寻址方式与指令系统_).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、机器指令、伪指令和宏指令机器指令:能被处理器直接执行,而伪指令宏和宏指令不能。机器指令包括ARM指令集和Thumb指令集;伪指令:在源程序汇编期间,由汇编编译器处理。其作用是为汇编程序完成准备工作;宏指令:在程序中用于调用宏,宏是一段独立的程序代码;在程序汇编时,对宏调用进行展开,用宏体代替宏指令。ARM指令的编码格式实际指令语法格式为:ADDEQSR0,R1,R2;该指令的编码格式为:31~2827~2524~212019~1615~1211~~~~~~~~~~0condopcodeSRnRdop200000010100100
2、010000000000000010ARM指令的助记符ARM指令在汇编程序中用助记符表示,一般ARM指令的助记符格式为:{}{S},,其中:操作码,如ADD表示算术加操作指令;{}决定指令执行的条件域;{S}决定指令执行是否影响CPSR寄存器的值;目的寄存器;第一个操作数,为寄存器;第二个操作数。例如,指令ADDEQSR1,R2,#5条件域几乎所有的ARM指令都可以根据当前程序状态寄存器CPSR中标志位的值,有
3、条件地执行。ARM指令的条件域有16种类型。condCPSR中标志位含义EQZ置位相等NEZ清零不相等CSC置位无符号数大于或等于CCC清零无符号数小于MIN置位负数PLN清零正数或零VSV置位溢出VCV清零未溢出HIC置位Z清零无符号数大于LSC清零Z置位无符号数小于或等于GEN等于V带符号数大于或等于LTN不等于V带符号数小于GTZ清零且(N等于V)带符号数大于LEZ置位或(N不等于V)带符号数小于或等于AL忽略无条件执行0000000100100011010001010110011110001001101010
4、111100110111101111依版本不同,定义不同寻址方式9种:立即数寻址寄存器寻址寄存器移位寻址寄存器间接寻址基址变址寻址相对寻址多寄存器寻址块拷贝寻址堆栈寻址立即数寻址在立即数寻址中,操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。#后接0x或&表示十六进制数,0b表示二进制数,0d或缺省表示十进制数。例:ADDR0,R1,#5;R0=R1+5MOVR0,#0x55;R0=0x55其中:操作数5,0x55就是立即数,立即数在指令中要以“#”为前缀,后面跟实际数值。寄存器寻址在寄存器寻址方式
5、下,寄存器的值即为操作数。ARM指令普遍采用此种寻址方式。例:ADDR0,R1,R2;R0=R1+R2MOVR0,R1;R0=R1寄存器移位寻址寄存器移位寻址的操作数由寄存器的数值做相应移位而得到。移位的方式在指令中以助记符的形式给出,而移位的位数可用立即数或寄存器寻址方式表示。例:ADDR0,R1,R2,ROR#5;R0=R1+R2循环右移5位MOVR0,R1,LSLR3;R0=R1逻辑左移R3位移位操作在ARM指令集中不作为单独的指令使用,ARM指令集共有5种位移操作。ARM指令集的5种位移操作LSL逻辑左移:Rx,LSL<
6、op1>LSR逻辑右移:Rx,LSRASR算术右移:Rx,ASRROR循环右移:Rx,RORRRX带扩展的循环右移:Rx,RRX寄存器间接寻址寄存器中的值为操作数的物理地址,而实际的操作数存放在存储器中。例:STRR0,[R1];[R1]=R0LDRR0,[R1];R0=[R1]基址变址寻址将寄存器(称为基址寄存器)的值与指令中给出的偏移地址量相加,所得结果作为操作数的物理地址。例:LDRR0,[R1,#5];R0=[R1+5]LDRR0,[R1,R2];R0=[R1+R2]相对寻址相对寻址同基址变
7、址寻址相似,区别只是将程序计数器PC作为基址寄存器,指令中的标记作为地址偏移量。例:BEQprocess1……process1……多寄存器寻址在多寄存器寻址方式中,一条指令可实现一组寄存器值的传送。连续的寄存器间用“-”连接,否则用“,”分隔。例:LDMIAR0,{R1-R5};R1=[R0],R2=[R0+4],R3=[R0+8];R4=[R0+12],R5=[R0+16]指令中IA表示在执行完一次Load操作后,R0自增4。该指令将以R0为起始地址的5个字数据分别装入R1,R2,R3,R4,R5中。块拷贝寻址块拷贝寻址可实现
8、连续地址数据从存储器的某一位置拷贝到另一位置。例:LDMIAR0,{R1-R5};STMIAR1,{R1-R5};第一条指令从以R0的值为起始地址的存储单元中取出5个字的数据,第二条指令将取出的数据存入以R1的值为起始地址的存储单元中。实际上是多寄存器寻址的组合
此文档下载收益归作者所有