1、一、选择题 1、ADD R0,R1,#3 属于()寻址方式。 A. 立即寻址 B. 多寄存器寻址 C. 寄存器直接寻址 D. 相对寻址 2、GET 伪指令的含义是() A. 包含一个外部文件 B. 定义程序的入口 C. 定义一个宏 D. 声明一个变量 3、存储一个 32 位数 0x876165 到 2000H2003H 四个字节单元中,若以小端模式存 储,则 2000H 存储单元的内容为( ) 。A、0x00 B、0x87 C、0x65 D、0x61 4、若 R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令 LDR R0,R1,8!后 R0 的值为( ) 。A.
2、 0x2000 B. 0x86 C. 0x2008 D. 0x39 5、寄存器 R13 除了可以做通用寄存器外,还可以做( ) 。 A、程序计数器 B、链接寄存器 C、栈指针寄存器 D、基址寄存器 6、FIQ 中断的入口地址是( ) 。 A、0x0000001C B、0x00000008 C、0x00000018 D、0x00000014 7、ARM 指令集和 Thumb 指令集分别是( )位的。 A. 8 位,16 位 B. 16 位,32 位 C. 16 位,16 位 D. 32 位,16 位 8、ARM 寄存器组有( )个寄存器。A、7 B、32 C、6 D、37 9、若 R1=2000
3、H,(2000H)=0x28,(2008H)=0x87,则执行指令 LDR R0,R1,8!后 R0 的值为( ) 。A. 0x2000 B. 0x28 C. 0x2008 10、 和 PC 机系统相比,下列哪个不是嵌入式系统独具的特点( ) A、系统内核小 B、专用性强 C、可执行多任务 D、系统精简 11.ARM 公司是专门从事( ) A、基于 RISC 技术芯片设计开发 B 、ARM 芯片生产 C、软件设计 D、ARM 芯片销售12.ARM9 系列微处理器是( ) A、三级流水线结构 B、四级流水线结构 C、五级流水线结构 D、六级流水线结构 13.所有工作模式下, ( )都指向同一个物
4、理寄存器,即各模式共享A、R0-R7 B、R0-R12 C 、R8-R12 D、 R13,R14 14当异常发生时,寄存器( )用于保存 CPSR 的当前值,从异常退出时则可由它来恢复 CPSR. A、SPSR B、R13 C、R14 D、R15 15.能实现把立即数 0X3FF5000 保存在 R0 中的指令是( ) A、LDR R0, = 0X3FF5000 B、LDR R0, 0X3FF5000 C、MOV R0, 0X3FF5000 D、MOV R0, =0X3FF5000 16.ARM 指令 LDMIA RO,R1, R2, R3,R4 实现的功能是( )A、R1R0,R2R0+4,
5、R3 R0+8 ,R4 R0+12 B、R1R0,R2R0-1,R3R0-2,R4R0-3 C、R1R0,R2 R0+1 ,R3R0+2,R4R0+3 D、R1R0,R2R0-4,R3R0-8,R4R0-12 17.( )伪指令用于定义一个代码段或数据段 A、RLIST B、DCB C 、MAP D、AREA 18.在 ARM 体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor) ,应采用( )方法。 A、直接修改 CPU 状态寄存器(CPSR)对应的模式 B、先修改程序状态备份寄存器( SPSR)到对应的模式,再更新 CPU 状态 C、使用软件中断指令(SWI
6、) D、让处理器执行未定义指令 3、简答 第一章:1、什么是嵌入式系统?与通用计算机系统相比,它有哪些特点? 答:定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 特点:“专用”的计算机系统;运行环境差异很大;比通用 PC 系统资源少得多;低功耗、体积小、集成度高、成本低;具有完整的系统测试和可靠性评估体系;具有较长的生命周期; 需要专用开发工具和方法进行设计;包含专用调试路;多科学知识集成系统 2、 嵌入式系统组成结构包括哪几部分?嵌入式系统组成结构的理解。 答:嵌入式系统由硬件和软件组成。嵌入式系统的硬件是以嵌入
7、式微处理器为中心,配置存储器、I/O 设备、通信模块以及电源等必要的辅助接口。嵌入式系统软件包括板级支持包层、实时操作系统层、应用程序接口层和应用程序层四层。 3、 简述嵌入式系统的硬件组成 答:嵌入式系统的硬件是以嵌入式微处理器为中心,配置存储器、I/O 设备、通信模块以及电源等必要的辅助接口。 4、试分析通用操作系统与嵌入式操作系统的异同点,并解释什么是嵌入式实时操作系统。嵌入式操作系统和嵌入式实时操作系统的概念有哪些不同? 答: 通用操作系统和嵌入式操作系统都对软、硬件资源进行分配和调度以及控制协调等,嵌入式操作系统与通用操作系统的不同之处在于它具有实时性高、可靠性好、可裁剪、体积小等特
8、性。 嵌入式实时操作系统(Real Time Embedded Operating System)是一种实时的、支持嵌入式系统应用的操作系统,是嵌入式系统的重要组成部分。 嵌入式操作系统只注重平均性能,对整个系统来说,所有任务的平均响应时间是关键,对单个任务的响应时间不关心。嵌入式实时操作系统最主要的特性是性能上的“实时性” ,也就是说系统的正确性不仅依赖于计算的逻辑结果,也依赖于结果产生的时间。是一个能够在指定的或者确定的时间内,完成系统功能以及对外部或内部、同步或异步事件作出响应的系统。 5、 嵌入式操作系统具有哪些基本管理功能? 多任务管理,存储管理,外围资源管理和中断管理。第二章: 6
9、、 试比较 CISC 体系结构和 RISC 体系结构的特点。 ARM 为何采用 RISC 结构? 答:比较:CISC 指令集设计的主要趋势是增加指令集的复杂度。而复杂指令集的高性能是以宝贵、有限的芯片面积为代价的。RISC 的中心思想是精简指令集的复杂度、简化指令实现的硬件设计,硬件只执行很有限的最常用的那部分指令,大部分复杂的操作则由简单指令合成。RISC 思想大幅度提高了计算机性能价格比。 采用 RISC 原因:(1)Load/store 体系结构(2)固定的 32 位指令 (3)地址指令格式 7、分别以 ARM7TDMI 和 ARM9TDMI 为例,介绍 3 级流水线和 5 级流水线的执
10、行过程,并进行相应的比较。 3 级流水线分为:取指,译码和执行。5 级流水线分为:取指、译码、执行、缓冲数据、回写。它们的区别在于 3 级流水执行级中的寄存器读在 5 级流水的译码级中处理。3 级流水执行级中的寄存器写在 5 级流水的回写级中处理。5 级流水中的第 4 级缓冲数据表示如果需要则访问数据存储器,否则只是简单地缓冲一个时钟周期。3 级流水采用冯诺依曼结构,不能同时访问指令存储器和数据存储器;5 级流水采用哈佛结构,指令存储器与数据存储器分开,可以同时访问。8、ARM 微处理器支持哪几种工作模式?各个工作模式有什么特点? 答:共支持 7 中工作模式:用户模式,系统模式,快速中断(FI
11、Q)模式,普通中断 (IRQ)模式,管理(SVC)模式,中止模式和未定义模式。 用户模式:ARM 处理器正常的程序执行状态。 快速中断模式(FIQ):用于高速数据传输或通道处理。 普通中断模式(IRQ):用于通用的中断处理。 管理模式(SVC):操作系统使用的保护模式。 中止模式:当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。 系统模式:运行具有特权的操作系统任务。 未定义模式:处理未定义的指令陷阱,支持硬件协处理器的软件仿真。9 ARM 处理器共有多少个寄存器?这些寄存器在用户编程中的功能是如何划分的?ARM 状态下的通用寄存器可分为哪几类? ARM 处理器共有 37 个寄存器
12、,其中 31 个为通用寄存器,其余 6 个为状态寄存器。通用寄存器可分为未分组寄存器 R0-R7,分组寄存器 R8-R14 和程序计数器R15。10 简述 ARM 状态下分组寄存器 R13,R14,R15 的特殊功能及 R15 的使用注意事项。 寄存器 R13 通常用做堆栈指针 SP;寄存器 R14 用作子程序链接寄存器 LR;寄存器 R15 被用作程序计数器 PC。R15 值的改变将引起程序执行顺序的变化,这有可能引起程序执行中出现一些不可预料的结果,因此,对 R15 的使用一定要慎重。ARM 处理器采用多级流水线技术,因此保存在 R15 的地址并不是当前指令的地址。11、简述 ARM 处理
13、对异常中断的相应过程。 (1)将 CPSR 的内容保存到将要执行的异常中断对应的 SPSR 中 ,实现对处理器当前状态、中断屏蔽位、各条件标志位的保存。 (2)设置当前状态寄存器 CPSR 中的相应位设置工作模式控制位,使处理器进入相应的执行模式 设置中断标志位,禁止 IRQ 中断 当进入 RESET 或 FIQ模式时,还要禁止 FIQ 中断 (3)将引起异常指令的下一条指令的地址保存到新的异常工作模式的 R14 ,使异常处理程序执行完后能正确返回原程序。 (4)给程序计数器(PC )强制赋值,根据中断向量地址跳转 去执行中断处理程序。 12.如果 FIQ、IRQ 和第 3 个异常(不是复位)
14、同时发生,ARM 应如何处理? 答:如果第 3 个异常是数据中止,处理器将在进入数据中止处理程序后立即进入 FIQ 处理程序。数据中止将“记”在返回路径中,当 FIQ 处理程序返回时进行处理。 如果第 3 个异常不是数据中止,将立即进入 FIQ 处理程序。当 FIQ 和 IRQ 两者都完成时,程序返回到产生第 3 个异常的指令并进行相应处理。14 什么是 ARM 异常中断向量表?它有何作用?存储在什么地方? 中断向量表中指定了各异常中断与其处理程序的对应关系。在 ARM 体系中,异常中断向量表大小为 32 字节,每个异常中断占据 4 个字节。ARM 异常向量表通常以存储器的低端 0x0 为起始
15、地址,大多数 ARM 处理器核也支持将异常向量表存放在以 0xFFFF0000 为起始地址的 32 字节空间中。每个异常中断对应的中断向量表的 4 个字节的空间中存放一个跳转指令或者一个向 PC 寄存器中赋值的数据访问指令 LDR。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。 15. 简述 ARM 的存储器层次。1) 寄存器组存储器层次的顶层,访问时间几个 ns 2) 片上 RAM具有和片上寄存器组同级的读/写速度 3) 片上 Cache访问时间 10ns,2 级片外 Cache 访问时间几十 ns 4)主存储器访问时间 50ns 5)硬盘访问时间几十 ms16.大端存储法与小端
16、存储法有什么不同?对存储数据有什么要求与影响? 小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址。 大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。第三章:17、 ARM 处理器如何进入和退出 Thumb 指令模式?用汇编语言实现 ARM 状态和 Thumb 状态互相的切换。 答:进入 Thumb 模式:有 2 种方法。一种是执行一条交换转移指令 BX,将指令中的目标地址寄存器的最低位置 1,并将其他位的值放入程序计数器PC,则可以进入 Thumb 指令。另一种方法是利用异常返回,也可把微处理器从 ARM 模式转换为 Thum
17、b 模式。 退出 Thumb 模式:也有 2 种方法。一种是执行 Thumb 指令中的交换转移 BX 指令可以显式地返回到 ARM 指令流。另一种是利用异常进入 ARM 指令流。 18.如何在汇编语言中定义和使用宏?答:定义: 宏名 MACRO 宏体 MEND 调用:宏调用的方式在源程序中需要复制宏体的地方写宏的名字。宏名单独占一行,当源程序被汇编时,汇编程序将对宏调用进行宏体复制,并取代宏名,这种复制操作称为宏展开。为了与源程序的其他部分相区分 19、简述 ARM 汇编语言中伪操作,宏指令和伪指令的含义,伪操作和伪指令都分为哪几类? 答:伪操作- 伪操作只是在汇编过程中起作用,汇编结束,伪操
18、作的使命也就结束。 宏指令- 是一段独立的程序代码,可插在源程序中,它通过伪操作来定义。 伪指令- 是 ARM 汇编语言程序里的特殊指令助记符,在汇编时将被合适的机器指令代替成 ARM 或 Thumb 指令,从而实现真正的指令操作。 伪操作分类:符号定义伪操作数据定义伪操作汇编控制伪操作 信息报告伪操作其他伪操作 伪指令分类:小范围的地址读取 ADR中等范围的地址读取 ADRL 大范围的地址读取 LDR空操作伪指令 NOP 20. ARM 寻址方式有几种?举例说明 ARM 如何进行不同方式的寻址。1).寄存器寻址;如 MOV R1, R2 2).立即寻址;如 MOV R0, #0xFF003)
19、.寄存器移位寻址;如 MOV R0, R2, LSL #34).寄存器间接寻址;如 LDR R1, R25).基址加偏址寻址;如 LDR R2, R3,#0x0C6).多寄存器寻址;如 LDMIA R1!, R2-R4,R67).堆栈寻址;如 STMFD SP!, R1-R7,LR8).相对寻址。如 BL SUBR1第四章:15、S3C44B0X 有多少个通用可编程多功能输入/输出引脚? 可分为几类端口? 答:71 个通用可编程多功能输入/输出引脚,可分为 7 类端口: (1)2 个 9 位输入 /输出端口(Port E 和 Port F) ; (2)2 个 8 位输入/ 输出端口(Port
20、D和 Port G) ; (3)1 个 16 位输入/输出端口(Port C) ; (4)1 个 10 位输出端口( Port A) ; (5)1 个 11 位的输出端口(PortB ) 四、编程: 1、两个矢量的标量积: MOV R11,#20 初始化循环次数MOV R10,#0 初始化总和LOOP LDR R0,R8,#4 读取第一个分量LDR R1,R9,#4 读取第二个分量MLA R10,R0,R1,R10 乘积累加 R10=R0*R1+R10SUBS R11,R11,#1 减循环计数 R11=R11-1BNE LOOP 2、10 个数求和: MOV R1,#1 MOV R0,#0 L
21、OOP ADD R1,R1,R0 ADD R0,R0,#1 CMP R0,#10 BNE LOOP 3. 把 0x1000 地址开始的五个字求和 结果存到 0x2000 的地址MOV R0,#0x1000MOV R11,#0x2000LDMIA R0,R1R5ADD R10,R1,R2ADDC R9,R3,R4ADDC R8,R10,R9ADDC R7,R8,R5STR R7,R114 把 0x1000 处开始的 8 个字存到 0x2000 开始的地址MOV R0 , #0x1000MOV R1 , #0x2000LDMIA R0,R1R8STMIA R11,R1R83、编写以字节为单位的字符
22、串拷贝子程序,要求从存储器某处拷贝到另一处。源字符串的起始地址放入 R1,长度(以字节为单位)放入 R2,目的字符串的起始地址放入 R3。 LOOP LDRB R0, R1, #1 STRB R0, R3, #1 SUBS R2, R2, #1 BNE LOOP MOV PC, LR 3.1 计算 X*28 + Y/22 + ZLDR R0,XLDR R1,yLDR R2,ZADD R3,R2,R1 ASR #2 R3=Z+Y/4ADD R4,R3,R0 ASL # 8 R4=R3+X*284、基于绝对地址的内存表举例。下面的伪操作序列定义一个基于绝对地址的内存表,其首地址为固定地址 8192
23、(0x2000) 。该内存表中包含 5 个作用域:consta 长度为 4 字节,constb 长度为 4 字节,x 长度为 8 字节,y 长度为 8 字节,string 长度为 16 字节。 MAP 8192 ;内存表的首地址为 8192(0x2000) consta FIELD 4 ;consta 长度为 4 字节,相对位置为 0 constb FIELD 4 ;constb 长度为 4 字节,相对位置为 4 x FIELD 8 ;x 长度为 8 字节,相对位置为 8 y FIELD 8 ;y 长度为 8 字节,相对位置为 16 string FIELD 16 ;string 长度为 16
24、 字节,相对位置为 24 在指令中可以这样引用内存中的数据域: LDR R0,consta ;将 consta 地址处对应的内容加载到 R0 5、.基于相对地址的内存表举例。下面的伪操作序列定义一个基于相对地址的内存表,其首地址为 0 与 R9 寄存器值的和,该内存表包含 5 个数据域(与例 11相同) 。 MAP 0,R9 ;内存表的首地址为 R9 寄存器的值 consta FIELD 4 ;consta 长度为 4 字节,相对位置为 0 constb FIELD 4 ;constb 长度为 4 字节,相对位置为 4x FIELD 8 ;x 长度为 8 字节,相对位置为 8y FIELD 8
25、 ;y 长度为 8 字节,相对位置为 16 string FIELD 16 ;string 长度为 16 字节,相对位置为 24 可以通过下面的指令访问地址范围超过 4KB 的数据: ADR R9,FIELD ;伪指令,将在后面介绍 LDR R5,constb ;相当于 LDR,R5,R9,#46、编写一段程序实现在 C 语言中调用汇编语言程序,实现将 1KB 大小的内存块以字的形式复制到另一内存地址 #include #define NUM 1024 int main() char strFromNUM = “hello world“ ; char strToNUM; _asm mov ec
26、x, NUM;lea esi, strFrom; lea edi, strTo;rep movsb; printf(“%sn“, strTo); 7. ARM 处理器如何进入和退出 Thumb 指令模式?用汇编语言实现 ARM 状态和 Thumb 状态互相的切换。进入 Thumb 模式:有 2 种方法。一种是执行一条交换转移指令 BX,将指令中的目标地址寄存器的最低位置 1,并将其他位的值放入程序计数器 PC,则可以进入 Thumb 指令。另一种方法是利用异常返回,也可把微处理器从 ARM 模式转换为 Thumb 模式。退出 Thumb 模式:也有 2 种方法。一种是执行 Thumb 指令中的
27、交换转移 BX 指令可以显式地返回到 ARM 指令流。另一种是利用异常进入 ARM 指令流。ARM 状态切换到 Thumb 状态:CODE32LDR R0, =Lable+1BX R0CODE16Lable MOV R1, #12Thumb 状态切换到 ARM 状态:CODE16LDR R0, =LableBX R0CODE32Lable MOV R1, #108. 请将下面 C 语言代码转换成汇编语言。 (1) If(a=0|b=1)c=d+e CMP R0, #0CMPNE R1, #1ADDEQ R2, R3, R4(2) if (a= = b)R1 76ADD R2, R0, R1,
28、LSL #1 ;R2 152MOV SP, #0x1000 ;SP 0x1000STR R2, SP ;mem320x1000 152MOV R0, #Z ;R0 96AND R0, R0, #0XFF ;R0 96MOV R1, #y ;R1 76ADD R2, R0, R1, LSR #1 ;R2 134LDR R0, SP ;R0 152MOV R1, #0x01 ;R1 1ORR R0, R0, R1 ;R0 153 (0x99) (0b10011001)MOV R1, R2 ;R1 134 (0x86) (0b10000110)ADD R2, R0, R1, LSR #1 ;R2 2
29、20 (0xDC) (0b11011100)11.请使用 MRS 和 MSR 指令,通过修改 CPSR 寄存器,写出将处理器工作模式变为管理模式的子程序。 (注意不能影响其它位,管理模式的二进制编码为 10011)MRS R0, CPSRAND R0, R0, #0b11100000ORR R0, R0, #0b00010011MSR CPSR_c, R0MOV PC, LR11. 用汇编语言的移位指令实现 (变量 A、B、C 分别存放在寄存器 R1、R2、R3 中)92AADD R1, R1, R1, LSL #3SUB R1, R1, R2, LSR R312. 用汇编语言实现 96 位整数加法(加数从高到低位存放在寄存器 R8、R7 、R6 中,被加数从高到低位存放在寄存器 R11、R10、R9 中,结果从高到低位存放在寄存器 R5、R4、R3 中)。ADDS R3, R9, R6ADCS R4, R10, R7ADC R5, R11, R8