资源描述:
《嵌入式系统ppt电子课件教案第3章arm7tdmi(s)指令系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章ARM7TDMI(-S)指令系统1.ARM程序的文件类型:C程序:ARM开发中大部分程序使用C语言编写,文件类型为“*.C”;汇编程序:涉及到硬件底层操作的代码有时必须使用汇编语言编写,文件类型为“*.S”。2.为什么学习ARM指令系统:操作系统移植编写启动代码方便程序调试前言1.ARM处理器的寻址方式;2.ARM指令的特点;3.ARM指令的种类,它能完成哪些功能。本章学习重点目录1.ARM处理器寻址方式2.指令集介绍ARM指令集Thumb指令集目录1.ARM处理器寻址方式2.指令集介绍ARM指令集Thumb指令集第3章ARM7TDMI(-S)指令系统简介ARM处理器是基
2、于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。第3章ARM7TDMI(-S)指令系统ARM指令集与Thumb指令集的关系Thumb指令集具有灵活、小巧的特点ARM指令集支持ARM核所有的特性,具有
3、高效、快速的特点3.1ARM处理器寻址方式寻址方式分类寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有8种基本寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.相对寻址。操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下:MOVR1,R2;将R2的值存入R1SUBR0,R1,R2;将R1的值减去R2的值,结果保存到R00xAA0x55R2R13.1ARM处理器寻址方式寻址方式分类——寄存器寻址MOV
4、R1,R20xAA立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下:SUBSR0,R0,#1;R0减1,结果放入R0,并且影响标志位MOVR0,#0xFF000;将立即数0xFF000装入R0寄存器0x55R0MOVR0,#0xFF00程序存储3.1ARM处理器寻址方式寻址方式分类——立即寻址MOVR0,#0xFF000xFF00从代码中获得数据寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数
5、结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOVR0,R2,LSL#3;R2的值左移3位,结果放入R0,;即是R0=R2×8ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相;“与”操作,结果放入R10x55R0R20x013.1ARM处理器寻址方式寻址方式分类——寄存器移位寻址MOVR0,R2,LSL#30x080x08逻辑左移3位寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:LDRR1,[R2];将R2指向的存储单元的数据读出;
6、保存在R1中SWPR1,R1,[R2];将寄存器R1的值和R2指定的存储;单元的内容交换0x55R0R20x400000000xAA0x400000003.1ARM处理器寻址方式寻址方式分类——寄存器间接寻址LDRR0,[R2]0xAA基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下:LDRR2,[R3,#0x0C];读取R3+0x0C地址上的存储单元;的内容,放入R2STRR1,[R0,#-4]!;先R0=R0-4,然后把R1的值寄存;到保存到R0
7、指定的存储单元3.1ARM处理器寻址方式寻址方式分类——基址寻址0x55R2R30x400000000xAA0x4000000CLDRR2,[R3,#0x0C]0xAA将R3+0x0C作为地址装载数据多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:LDMIAR1!,{R2-R7,R12};将R1指向的单元中的数据读出到;R2~R7、R12中(R1自动加1)STMIAR0!,{R2-R7,R12};将寄存器R2~R7、R12的值