资源描述:
《嵌入式系统第三讲arm指令系统ppt培训课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三讲ARM指令系统电信学院崔寅鸣Email:ymcui@scut.edu.cn本讲主要内容ARM指令系统寻址方式指令简介汇编实例本讲目的概要介绍ARM、Thumb指令集,能够达到通过查找工具书可以编写简单汇编程序的目的。ARM处理器指令集概述(-)ARM处理器指令集为加载/存储型ARM处理器指令集分为ARM指令集(32位编码长度)和Thumb指令集(16位编码长度)。Thumb指令集是ARM指令集的一个子集,即所有的Thumb指令均有相对应的ARM指令。ARM指令集包括:跳转指令数据处理指令程序状态寄存器处理指令ARM处理器指令集概述(二)加
2、载/存储指令协处理器指令异常产生指令Thumb指令集包括:跳转指令数据处理指令加载/存储指令异常产生指令指令语法格式指令助记符,如ADD{}指令执行的条件{S}决定指令的操作是否影响CPSR目标寄存器包含第一个操作数的寄存器第二个操作数{}{S},,ARM指令编码格式指令的条件执行条件执行几乎所有的ARM指令都是有条件执行,不仅包括常规的跳转指令,也包括所有其他的指令。普通类型的指令集不同,
3、一般情况下,只有跳转指令才会有条件执行。条件是否满足要根据CPSR和指令的条件域来确定;大多数的Thumb指令均为无条件执行。指令的条件码(一)指令的条件码ARM处理器指令的条件域为4位,ARM状态指令的条件域一般为指令编码的高4位。条件码共有16种,每种条件码用2个字符表示,2个字符的条件码可以添加在指令助记符的后面,和指令同时使用。例如,BEQ,表示“相等则跳转”。指令的条件码(二)基本寻址方式(一)寄存器寻址例:ADDR0,R1,R2;R1+R2R0立即数寻址例:ADDR3,R3,#2;R3+2R3寄存器间接寻址例:LDRR0,[R3
4、];[R3]R0寄存器移位寻址ADDR3,R2,R1,LSL#3;R1*8+R2R3基本寻址方式(二)寄存器变址寻址,前索引偏移:基址寄存器的内容加(或减)偏移量形成存储器地址立即数偏移:LDRR0,[R1,#4];[R1+4]R0LDRR0,[R1,#4]!;[R1+4]R0,R1+4R1!表明数据传送后更新基址寄存器寄存器偏移:LDRR0,[R1,-R2];[R1-R2]R0移位寄存器偏移:LDRR0,[R1,R2,LSL#2];[R2*4+R1]R0基本寻址方式(三)寄存器变址寻址,后索引立即数偏移:LDRR0,[R1],#
5、4;[R1]R0,R1+4R1寄存器偏移:LDRR0,[R3],-R8;[R3]R0,R3-R8R3移位寄存器偏移:LDRR0,[R3],R2,LSL#2;[R3]R0,[R2*4+R3]R3基本寻址方式(四)相对寻址例:BLabel;(PC)+LabelPC多寄存器寻址,一条指令传递多个寄存器值,例STMIAR1,{R2,R3,R4};R2[R1];R3[R1+4];R4[R1+8]基本寻址方式(五)堆栈寻址堆栈是一种按特定顺序进行存取的存储区,即“后进先出”,堆栈指针指向栈顶。递增堆栈(Ascending):向高地址方向
6、生长的堆栈;递减堆栈(Descending):向低地址方向生长的堆栈;空堆栈(Empty):栈指针指向下一个数据项放入的空位置;满堆栈(Full):栈指针指向上一个压入堆栈的有效数据项。基本寻址方式(五)ARM共支持4种类型的堆栈:FA(FullAscending):满递增堆栈;FD(FullDescending):满递减堆栈;EA(EmptyAscending):空递增堆栈;ED(EmptyDescending):空递减堆栈;例如(详解见后面):STMFDR13,{R0-R12,LR};LR[R13-4];R12[R13-8];……LDM
7、FDR13,{R0-R12,PC};[R13]R0;[R13+4]R1;……基本寻址方式(六)块寻址类似于堆栈寻址,但堆栈寻址要配合堆栈进行,而块拷贝则应用于普通数据传送指令。ARM的块拷贝寻址支持4种方式:IB(IncrementBefore):向上前变址IA(IncrementAfter):向上后变址DB(DecrementBefore):向下前变址DA(DecrementAfter):向下后变址跳转指令(一)跳转指令主要有以下几种形式:格式1:B/BL{cond}label格式2:BX/BLXRm格式3:BLXlabel符号含义:B:
8、branch(分支)L:link(链接,保存R14)X:exchange(ARM/Thumb状态切换)跳转指令(二)AREApt1,CODE,READ