嵌入式系统开发与应用教程 第三讲.ppt_第1页
嵌入式系统开发与应用教程 第三讲.ppt_第2页
嵌入式系统开发与应用教程 第三讲.ppt_第3页
嵌入式系统开发与应用教程 第三讲.ppt_第4页
嵌入式系统开发与应用教程 第三讲.ppt_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三讲 ARM指令集 1.ARM指令集概述; 2.ARM寻址方式; 3.数据处理指令、Load/Store指令; 4.寄存器传送指令、转移指令、异常中断 产生指令; 5.ARM系统初始化 6.Embest IDE集成开发环境、实验系统介 绍; 7.基于ARM的嵌入式软件开发基础:ARM汇 编指令实验及C语言程序实验。 指令长度 n指令集可以是以下任一种 n32 bits 长 (ARM状态) n16 bits 长 (Thumb 状态) nARM7TDMI 支持3种数据类型 n字节 (8-bit) n半字 (16-bit) n字 (32-bit) n字必须被排成4个字节边界对齐,半字 必须被排列成2个字节边界对齐 一、 ARM指令集概述 nARM指令集是32位的,ARM汇编程序 的启动都是从ARM指令集开始。所有 的ARM指令集都可以是有条件执行的 。本节从以下三个方面介绍: n 指令分类及指令格式 n 指令集编码 n 条件执行 指令分类及指令格式 F ARM指令集可以分为六大类,分别为数据处 理指令、Load/Store指令、跳转指令、程序状态 寄存器处理指令、协处理器指令和异常产生指 令。 F ARM指令使用的基本格式如下: opcodecond S Rd,Rn,operand2 ARM指令集编码 FARM指令集是以32位二进制编码的方式 给出的,大部分的指令编码中定义了第一 操作数、第二操作数、目的操作数、条件 标志影响位以及每条指令所对应的不同功 能实现的二进制位。 F每条32位ARM指令都具有不同的二进制 编码方式,和不同的指令功能相对应 。 F编码表如下: 指令集编码表 条件执行 FARM指令根据CPSR中的条件位自动判 断是否执行指令,在条件满足时,指令 执行,否则指令被忽略。 F在ARM的指令编码表中,统一占用编 码的最高四位31:28来表示“条件码”( 即“cond”)。 (P100页) 条件域表1 条件码后缀标 志含 义 0000EQZ置位相等 0001NEZ清零不相等 0010CSC置位无符号数大于或等于 0011CCC清零无符号数小于 0100MIN置位负数 0101PLN清零正数或零 0110VSV置位溢出 0111VCV清零未溢出 1000 HIC置位Z清零无符号数高于 条件域表2 条件码后缀标 志含 义 1001LSC清零Z置位无符号数小于或等于 1010GEN等于V带符号数大于或等于 1011LTN不等于V带符号数小于 1100GTZ清零且(N等 于V) 带符号数大于 1101LEZ置位或(N不 等于V) 带符号数小于或等于 1110AL总是无条件执行 二、 ARM寻址方式 ARM指令系统支持如下几种常见的寻址方式 : F立即寻址 F寄存器寻址 F寄存器间接寻址 F基址加偏址寻址 F堆栈寻址 F块拷贝寻址 F相对寻址 立即寻址 F立即寻址也叫立即数寻址,这是一种特殊的寻址方 式,操作数本身就在指令中给出,只要取出指令也 就取到了操作数,这个操作数被称为立即数,对应 的寻址方式也就叫做立即寻址。例如以下指令: ADDR0,R0,1/*R0R01*/ ANDR0,R0,0x3f /*R0R0 AND 0x3f*/ F 在以上两条指令中,第二个源操作数即为立即数 ,要求以“”为前缀,对于以十六进制表示的立 即数,还要求在“”后加上“0x”。 注:有效立即数问题 在32位指令编码中存放32位立即数的方法是: 在ARM数据处理指令中,当参与操作的第二操作数 为立即数型时,每个立即数都是采用一个8位的常数 循环右移偶数位而间接得到。其中循环右移的位数由 一个4位二进制的两倍表示,如果立即数记作 ,8位常数记作immed_8,4位的循环右移 值记作rotate_imm,有效的立即数是由一个8位的立 即数循环右移偶数位得到。 因此有效立即数immediate可以表示成: =immed_8循环右移(2rotate_imm) 例: MOV R0, #0x0000F200 MOV R0, #0x00012800 MOV R0, #0x00041400 MOV R0, #0x00041800 MOV R0, #0xF000000F 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数 ,这种寻址方式是各类微处理器经常采用的一种 方式,也是一种执行效率较高的寻址方式。以下 指令: ADDR0,R1,R2/*R0R1R2*/ 该指令的执行效果是将寄存器R1和R2的内容相加 ,其结果存放在寄存器R0中。 寄存器寻址 F第二操作数为寄存器型的移位操作 在ARM指令的数据处理指令中参与操作的第二操作 数为寄存器型时,在执行寄存器寻址操作时,可以选 择是否对第二操作数进行移位,即Rm,其 中Rm称为第二操作数寄存器,用来指定移位类 型(LSL,LSR,ASL,ASR,ROR或RRX)和移位位数。 移位位数可以是5位立即数(#)或寄存器( Rs)。在指令执行时将移位后的内容作为第二操作数 参与运算。例如指令: nADD R3,R2,R1,LSR #2 ;R3 S Rd, Rn, # n S Rd, Rn, Rm, 数据处理指令指令表 n数据处理指令的详细列表如下: 操作码24:21 助记符意义效果 0000AND逻辑位与Rd = Rn AND Op2 0001EOR逻辑位异或Rd = Rn EOR Op2 0010SUB减Rd = Rn - Op2 0011RSB反向减Rd = Op2 Rn 0100ADD加Rd = Rn + Op2 0101ADC带进位加Rd = Rn + Op2 + C 0110SBC带进位减Rd = Rn - Op2 + C -1 0111RSC反向带进位减Rd = Op2 - Rn + C -1 1000TST测试根据Rn AND Op2设置条件码 1001TEQ测试相等根据Rn EOR Op2设置条件 1010CMP比较根据Rn - Op2设置条件码 1011CMN负数比较根据Rn + Op2设置条件码 1100ORR逻辑位或Rd = Rn OR Op2 1101MOV传送Rd = Op2 1110BIC位清零Rd = Rn AND NOT Op2 1111MVN求反Rd = NOT Op2 算术运算指令: nADD nADC nSUB nSBC nRSB nRSC 加法:Rd=Rn+Op2 ADDR0, R1, R2 ADDR0, R1, #256 ADDR0, R2, R3, LSL #1 ADDSR4, R1, R2 ADC指令在形式上和功能上都有与ADD类 似,只是相加时还要包括进位标志C的内容 : Rd=Rn+Op2+C ADCR5, R1, R3 减法:Rd=Rn-Op2 SUB R0, R1, R2 SUB R0, R1, #256 SUB R0, R1, R2, LSL #1 SUBSR3, R6, R9 带借位减:Rd=Rn-Op2+C-1 SBCSR4, R7, R10 SBCR5, R8, R11 反减:Rd=Op2-Rn RSBR0, R1, R2 RSBR0, R1, #256 RSBR0, R2, R3, LSL #1 反向带借位减: Rd=Op2-Rn+C-1 RSCR0, R1, R2 例: ADDR2, R1, R3 SUBSR8, R6, #240 RSBR4, R4, #0x1280 ADCHIR11, R0, R3 RSCLESR0, R5, R0, LSL R4 逻辑运算指令: AND ORR EOR BIC: Rd=Rn AND NOT Op2 例: ANDR9, R2, #0xFF00 ORREQR2, R0, R5 EORR0, R0, R3, ROR R6 BICNESR0, R5, R0, LSL R4 数据传送指令: MOV:Rd=Op2 MVN:Rd=NOT Op2 MOV R9, R2 MVNNER0, #0xFF00 MOVSR0, R0, ROR R6 比较指令: CMP:根据Rn-Op2设置条件码 CMN:根据Rn+Op2设置条件码 CMPGTR3, R7, LSL #2 CMNR0, #0x6400 测试指令: TST:根据Rn AND Op2设置条件码 TEQ:根据Rn EOR Op2设置条件码 TSTR0, #0x3F8 TEQEQR10, R9 TSTNER1, R5, ASR R1 注: FRSB是反减,即用第二操作数减去源操作数。由 于第二操作数可选的范围宽,所以这条指令很有 用。 FRSC是带进位标志的反减。若进位标志为零,则 结果减1。 FBIC用于将源操作数的各位与第二操作数中相应 位的反码进行“与”操作。BIC可用于将寄存器中某 些位的值设置为0。 FMVN是“取反传送”,它是把第二操作数的每一 位取反,将得到的值置入结果寄存器。 FCMN表示“取反比较”,将目的操作数和源操作 数相加,根据结果更新条件码标志。 数据处理指令二进制编码 n数据处理指令的二进制编码如下: 第二操作数 为立即数 以寄存器表 示移位位数 以立即数表 示移位位数 *乘法指令 ARM乘法指令完成两个寄存器中数据的乘法。 按产生结果的位宽一般分为两类:一类是两个 32位二进制数相乘的结果是64位,另一类是两 个32位二进制数相乘,仅保留最低有效32位。 这两种类型都有“乘法累加”的变形,如下表 所示: 操作码 23:21 助记符意义效果 000MUL乘(32位结果) RdS Rd, Rm, Rs nMULAS Rd, Rm, Rs, Rn F产生64位乘积的指令: S RdHi, RdLo, Rm, Rs n在此是64位乘法类型(UMULL、UMLAL 、SMULL、SMLAL)。 、Load/Store指令 FARM处理器是Load/store型的,即它对数据的操 作是通过将数据从存储器加载到片内寄存器中进 行处理,处理完成后的结果经过寄存器存回到存 储器中,以加快对片外存储器进行数据处理的执 行速度。 FARM的数据存取指令Load/Store是唯一用于寄存 器和存储器之间进行数据传送的指令。 FARM指令集中有三种基本的数据存取指令: n单寄存器的存取指令(LDR,STR) n多寄存器存取指令(LDM,STM) n单寄存器交换指令(SWP) 单寄存器的存取指令 单个寄存器存取指令又可以针对以下几类数据: n 单字 n 无符号半字、有符号半字 n 无符号字节、有符号字节 单字: nLDR从内存中取32位字数据放入寄存器, STR将寄存器中的32位字数据保存到内存中 。 字节: nLDR从内存中取8位字节数据放入寄存器,STR 将寄存器中的8位字节数据保存到内存中。 无符号字节:用“0”将8位的操作数扩展到 32位 有符号字节:用符号位将8位的操作数扩展到 32位 半字: nLDR从内存中取半字数据放入寄存器,STR将 寄存器中的半字数据保存到内存中。 无符号半字:用“0”将16位的操作数扩展到 32位 有符号半字:用符号位将16位的操作数扩展到 32位 汇编格式 n这一类数据传送指令的汇编格式如下 n 前变址格式 LDR|STR B|SB|H|SH Rd, Rn, ! n 后变址格式 LDR|STR B|SB|H|SH T Rd, Rn, n 相对PC的形式 LDR|STR B Rd, LABEL 式中是#或#Rm; 例: LDRR8, R10 LDRNER1, R5, #0x960! STRR2, R9, #4 STRB R0,R3, -R8, ASR #2 LDRR1, localdata LDRR0, R1, R2, LSL #2 LDRBR0, R2, #3 LDRR1, R0, -R2, LSL #2 STRR0, R7, #-8 例: LDREQSH R11, R6 LDRHR1, R0,#20 STRHR4,R3,R2! LDRSBR0, constf LDRHR6, R2, #2 LDRSHR1, R9 STRHR0, R1,R2, LSL #2 STRNEHR0, R2, #960! 例如 COPY:ADR r1, TABLE1; r1 points to TABLE1 ADR r2, TABLE2; r2 points to TABLE2 LOOP:LDR r0, r1 STR r0, r2 ADD r1, r1, #4 ADD r2, r2, #4 . TABLE1: . TABLE2:. COPY:ADR r1, TABLE1; r1 points to TABLE1 ADR r2, TABLE2; r2 points to TABLE2 LOOP:LDR r0, r1, #4 STR r0, r2, #4 . TABLE1: . TABLE2:. 二进制编码格式 n这一类数据传送格式的二进制编码如下: 多寄存器存取指令 n多寄存器传送指令可以用一条指令将16个可见 寄存器(R0-R15)的任意子集合(或全部)存储 到存储器或从存储器中读取数据到该寄存器集合 中。与单寄存器存取指令相比,多寄存器数据存 取可用的寻址模式更加有限。 汇编格式 n多寄存器存取指令的汇编格式如下: nLDM/STM Rn!, LDMDBR1!,R0, R2, R5 STMIAR1!, R3-R6, R11, R12 LDMIAR10!, R0-R7, LR 多寄存器传送寻址模式 r5 r1 r9 r0r9 STMIA r9!, r0,r1,r5 100016 100c16 101816 r1 r5r9 STMDA r9!, r0,r1,r5 r0 r9 100016 100c16 101816 r5 r9 STMDB r9!, r0,r1,r5 r1 r0r9 100016 100c16 101816 r5 r1 r0 r9 r9 STMIB r9!, r0,r1,r5 100016 100c16 101816 n块拷贝 n数据被存 贮在基本寄存器的 上面地址或下面地 址 n地址增加 或减少是在存贮第 一个值之前或之后 开始的 LDMIA r1, r0, r2, r5 r0 := mem32r1 r2 := mem32r1 + 4 r5 := mem32r1 + 8 Note: 寄存器的部分或全部都可以用单指令传送 Note: 在表中的寄存器顺序并不重要 Note: 在表中包括 r15 i将造成控制流的改变 多寄存器数据传传送 Increment After 习题 假设R0中内容为0x8000,R1和R2中内容 分别为0x01和0x10,存储器内容为空,执 行下述指令后,寄存器和存储器内容如何 变化? STMIBR0!,R1, R2 LDMIAR0!,R1, R2 单寄存器交换指令(SWP) n交换指令把字或无符号字节的读取和存 入组合在一条指令中。通常都把这两种传 送结合成为一个不能被外部存储器的访问 (例如来自DMA控制器的访问)分隔开的 基本的存储器操作,因此本指令一般用于 处理器之间或处理器与DMA控制器之间共 享的信号量、数据结构进行互斥的访问。 二进制编码及汇编格式 F其二进制编码格式如下: F其汇编格式如下: nSWP B Rd,Rm,Rn SWPBR1, R1, R0 SWPR1, R2, R3 3、转移指令 F 跳转指令用于实现程序流程的跳转,在ARM程 序中有两种方法可以实现程序流程的跳转: F 使用专门的跳转指令。 F 直接向程序计数器PC写入跳转地址值。 F ARM的转移指令可以从当前指令向前或向后的 32MB的地址空间跳转,根据完成的功能它可以分 为以下4种 : n B 转移指令 n BL 带链接的转移指令 n BX 带状态切换的转移指令 n BLX 带链接和状态切换的转移指令 转移和转移链接指令(B,BL) n转移指令B在程序中完成简单的跳转指令 ,可以跳转到指令中指定的目的地址。 nBL是转移链接指令,它完全象转移指令 一样地执行转移,但同时把转移后面紧接 的一条指令的地址保存到链接寄存器LR( r14)。 二进制编码及汇编格式 n二进制编码如下: n汇编格式如下: nBL 无条件转移:B MOVR0,#10 LOOP SUBSR0, #1 BNELOOP 转移连接指令:BL CMPR0 , #5 BLLTSUB1 BLGESUB2 SUB1 MOVPC, R14 注:只有SUB1不改变条件码,本例才能正常工 作 当存在多级嵌套子程序时: BLSUB1 SUB1STMFD R13!, R0-R2, R14 BLSUB2 SUB2 转移交换和转移链接交换(BX, BLX) n这些指令用于支持Thumb(16位)指令集的ARM 芯片,程序可以通过这些指令完成处理器从ARM 状态到Thumb状态的切换。类似的Thumb指令可以 使处理器切换回32位ARM指令。 二进制编码 F二进制编码如下: F说明: 在第一种格式中,寄存器Rm的值是转移目标,Rm的第0位 拷贝到CPSR中的T位(它决定了是切换到Thumb指令还是继 续执行ARM指令),31:1位移入PC; n如果Rm0是1,处理器切换执行Thumb指令,并在Rm中的 地址处开始执行,但需将最低位清零,使之以半字的边界 定位; n如果Rm0是0,处理器继续执行ARM指令,并在Rm中的地 址处开始执行,但需将Rm1清零,使之以字的边界定位。 汇编格式 n汇编格式如下: n1: BLX Rm n2: BLX n“ ”一般是汇编代码中的 一个标号,表示目标地址; 伪操作、宏指令及伪指令 n伪操作是ARM汇编语言程序里的一些特殊指令助 记符,主要是为完成汇编程序做各种准备工作,在 源程序进行汇编时由汇编程序处理,而不是在处理 器运行期间由机器执行。 n宏指令是一段独立的程序代码,它通过伪操作来 定义。通过宏名来调用宏,并可以设置相应的参数 。宏定义本身不会产生代码,只是在调用它时把宏 体插入到源程序中。 n伪指令也是ARM汇编语言程序里的特殊指令助记 符,也不在处理器运行期间由机器执行,它们在汇 编时将被合适的机器指令代替成ARM或Thumb指令从 而实现真正指令操作。 ARM汇编语言的伪操作 1、常量编译控制: .byte .hword/.short .word/.long/.int 2、字符编译控制: .equ/.set .global .extern 3、汇编程序代码控制: .text .data ARM汇编语言的伪指令 伪指令语法格式作 用 ADRADR cond register, expr 将基于PC或基于寄存器的地址值读取到寄存器中 。小范围的地址读取。 ADRLADRL cond register ,expr 将基于PC或基于寄存器的地址值读取到寄存器中 。中等范围的地址读取。 LDRLDR cond register ,=expr | label-expr 将一个32位的立即数或者一个地址值读取到寄存 器中。大范围的地址读取。 NOPNOP在汇编时将被替换成ARM中的空操作。 ARM中伪指令不是真正的ARM指令或Thumb指令, 它们在编译器对源程序进行汇编处理时被替换成相 应的ARM或Thumb指令序列。 equ x,88 equ y,76 equ z,96 equ stack_top,0x1000 global_start text start: movr0,#0xAB loop: movr0,r0,ASR #1 movr1,#y addr2,r0,r1,LSL #1 movsp,#0x1000 strr2,sp movr0,#z andr0,r0,#0xff movr1,#y addr2,r0,r1,LSR #1 ldrr0,sp 程序实例 movr1,#0x01 orrr0,r0,r1 movr1,r2 addr2,r0,r1,LSR #1 stop: bstop end 五、ARM系统初始化过程简 介 包括: n中断向量表 n初始化存储器系统 n初始化堆栈 n初始化有特殊要求的端口、设备 n初始化应用程序执行环境 n改变处理器模式 nCALL 主应用程序 启动代码说明启动代码说明 启动代码是用来初始化电路以及用来为高级语言写的软件 做好运行前准备的一小段汇编语言,是任何处理器上电复位 时的程序运行入口点 n 功能 电路初始化 为高级语言编写的软件运行做准备 n 特征 汇编语言 程序复位运行入口点 5.1、中断向量表 FIQ 0x1C外部快速中断 IRQ 0x18一般外部中断 (Reserved) 0x14保留 Data Abort 0x10数据异常 Frefetch Abort 0x0C预取指异常 Software int 0x08软件中断 Undef 0x04 未定义指令中断 Reset 0x00复位中断 初始化中断向量表 n ENTRY: n b ResetHandler/* for debug */ n b HandlerUndef /* handlerUndef */ n b HandlerSWI /* SWI interrupt handler*/ n b HandlerPabort /* handlerPAbort */ n b HandlerDabort /* handlerDAbort */ n b . /* handlerReserved */ n b HandlerIRQ n b HandlerFIQ 其中关键字ENTRY是指定编译器保留这段代码,因为编译器可 能会认为这是一段亢余代码而加以优化。链接的时候要确保这段 代码被链接在0地址处,并且作为整个程序的入口。 2、初始化存储器系统 n存储器的类型和时序配置 n存储器的地址分布 初 始 化 看 门 狗 、 时 钟 n#* n#*START * n#* nResetHandler: n ldr r0,=WTCON /* watch dog disable*/ n ldr r1,=0x0 n str r1,r0 n ldr r0,=INTMSK n ldr r1,=0x07ffffff /* all interrupt disable */ n str r1,r0 n #* n #*Set clock control registers * n #* n ldrr0,=LOCKTIME n ldrr1,=0xfff n strr1,r0 初 始 化 存 储 器 系 统 n ldr r0,=CLKCON n ldr r1,=0x7ff8 /* All unit block CLK enable */ n str r1,r0 n #* n #* change BDMACON reset value for BDMA * n #* n ldr r0,=BDIDES0 n ldr r1,=0x40000000 /* BDIDESn reset value should be 0x40000000 */ n str r1,r0 n ldr r0,=BDIDES1 n ldr r1,=0x40000000 /* BDIDESn reset value should be 0x40000000 */ n str r1,r0 n #* n #*Set memory control registers* n #* n ldr r0,=SMRDATA n ldmia r0,r1-r13 n ldr r0,=0x01c80000 /* BWSCON Address */ n stmia r0,r1-r13 n #;* n #;*Initialize stacks* n #;* n ldr sp, =SVCStack n bl InitStacks n #;* n #;*Setup IRQ handler* n #;* n ldr r0,=HandleIRQ n ldr r1,=IsrIRQ n str r1,r0 3、初始化堆栈 nARM有7种执行状态(工作模式) ,每一种状态堆栈指针寄存器(SP )都是独立的; n对每一种模式都要定义SP寄存器 的堆栈地址; 初 始 化 堆 栈 n#;* n#;*The function for initializing stack * n#;* nInitStacks: n mrs r0,cpsr n bic r0,r0,#MODEMASK n orr r1,r0,#UNDEFMODE n msr cpsr_cxsf,r1/* UndefMode */ n ldr sp,=UndefStack n orr r1,r0,#ABORTMODE|NOINT n msr cpsr_cxsf,r1 /* AbortMode */ n ldr sp,=AbortStack n orr r1,r0,#IRQMODE|FIQ_MODE n msr cpsr_cxsf,r1 /* IRQMode */ n ldr sp,=IRQStack n orr r1,r0,#FIQMODE|IRQ_MODE n msr cpsr_cxsf,r1 /* FIQMode */ n ldr sp,=FIQStack n bic r0,r0,#MODEMASK n orr r1,r0,#SVCMODE n msr cpsr_cxsf,r1 /* SVCMode */ n ldr sp,=SVCStack n#USER mode is not initialized. n mov pc,lr /* The LR register may be not valid for the mode changes. */ 4、初始化有特殊要求的端口、 设备 n如驱动指示系统运行状态的一 些简单的输出设备,如LED,蜂 鸣器等 n一般外设初始化可以系统初始 化之后进行 ROM地址的重映射 (remap)0x0200 (boot code) 0x0100 (Reset_handler) B Reset_Handler0x0000 Flash (remap) 0x0204 (boot code) 0x0200 (Reset_handler) B Reset_Handler0x0000 RAM 5、初始化应用程序执行环境 n完成必要的从ROM到RAM的数据 传输 6、改变处理器模式 管理员模式多种特权模式用户运行模式 复位后缺省模式堆栈初始化阶段用户选择 7、呼叫主应用程序 n系统初始化工作完成后,程序 流程转入主应用程序执行 n可以直接从启动代码跳到应用 程序的主函数入口 初 始 化 应 用 程 序 执 行 环 境 n #* n #*Copy and paste RW data/zero initialized data * n #* n LDR r0, =Image_RO_Limit/* Get pointer to ROM data */ n LDR r1, =Image_RW_Base/* and RAM copy*/ n LDR r3, =Image_ZI_Base n/* Zero init base = top of initialised data */ n n CMP r0, r1 /* Check that they are different */ n BEQ F1 nF0: n CMP r1, r3/* Copy init data */ n LDRCC r2, r0, #4 /* LDRCC r2, r0 + ADD r0, r0, #4 */ n STRCC r2, r1, #4 /* STRCC r2, r1 + ADD r1, r1, #4 */ n BCC F0 nF1: n LDR r1, =Image_ZI_Limit/* Top of zero init segment */ n MOV r2, #0 nF2: n CMP r3, r1 /* Zero init */ n STRCC r2, r3, #4 n BCC F2 nMRSr0, CPSR nBICr0, r0, #NOINT /* enable interrupt */ nMSRCPSR_cxsf, r0 n/* jump to main() */ n BLMain n B . 测验2 n写一条ARM指令,分别完成下列操作 a)r0=16 c)r1=r2*3 b)r0=r1/16(带符号的数字) d)r0=-r0 n下面哪些立即数是数据处理指令中有效的数据 a)0x00AB0000b)0x0000FFFFc)0xF000000F d)0x08000012e)0x00001f80f)0xFFFFFFFF nBIC指令做什么用? nARM指令的寻址方式有几种?分别举例说明 nARM指令系统中对字节、半字、字的存取是如何实现的 ? 六、六、 基于基于ARMARM核的嵌入式核的嵌入式 软件开发环境与技术介绍软件开发环境与技术介绍 主要内容 (一)、开发环境 (二)、开发流程 (三)、工程的建立与配置 (四)、编写软件源文件 (五)、软件工程的编译链接 (六)、软件调试 (七)、可执行文件固化 (一)、开发环境 Embest IDE ARM 开发板 Embest 仿真器 Embest IDE 开发环境 开发环境的组成 PC 开发环境的连接 Embest IDE界面 工程管理区 代码编辑区 寄存器窗口 信息提示区 存储器区 变量窗口 数据观察区 函数栈窗口 Embest IDE Embest

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论