跳转至

第二章 测验题

本章精选 66 道真题,涵盖ARM处理器与指令系统的核心考点。

处理器分类与特点

1. 以下关于ARM处理器内核说法正确的是?

  • A)经典ARM处理器包括Cortex-M、Cortex-R和Cortex-A三大类
  • B)Cortex-A系列为应用Cortex处理器,主要面向高端应用设计
  • C)Cortex-M系列为面向控制领域的实时嵌入式处理器
  • D)ARM11性能优于Cortex-A5,但低于Cortex-A15
答案解析

答:B 经典ARM处理器是ARM7/9/11,不包括Cortex系列(A错);Cortex-M面向微控制器而非"实时嵌入式"(C不准确,那是Cortex-R);ARM11性能低于Cortex-A5(D错)。B正确。


2. 以下关于ARM处理器的叙述中,错误的是?

  • A)ARM7~ARM11为经典ARM处理器
  • B)Cortex-A系列为应用Cortex处理器,主要面向高端应用
  • C)Cortex-M系列为面向移动计算领域的嵌入式处理器
  • D)Cortex-R系列应用于实时应用的场合
答案解析

答:C Cortex-M系列针对成本和功耗敏感的微控制器和终端应用,而非移动计算领域。


3. 不属于ARM内核主要特点的是?

  • A)功耗低
  • B)功能强大
  • C)采用RISC结构
  • D)全部采用哈佛结构
答案解析

答:D 早期ARM7采用冯诺依曼结构,不是全部采用哈佛结构。


4. 关于ARM处理器的特点,以下说法错误的是?

  • A)采用指令流水线技术
  • B)采用加载/存储指令访问内存
  • C)性能强,功耗大
  • D)单周期操作
答案解析

答:C ARM处理器的主要特点之一就是低功耗,"性能强,功耗大"说法错误。


5. 关于ARM处理器的命名,以下说法错误的是?

  • A)ARM11之前的命名中TDMI中的T的含义是Thumb,即支持高密度16位Thumb指令集
  • B)ARM11之后,采用ARM Cortex来命名
  • C)ARM Cortex-R为高端应用型Cortex处理器
  • D)ARM Cortex-M系列处理器内部没有MMU部件
答案解析

答:C Cortex-R面向实时应用,Cortex-A才是面向高端应用的处理器。


6. 对于ARM系列,最适合高端应用的嵌入式处理器是?

  • A)ARM9
  • B)ARM Cortex-M
  • C)ARM Cortex-A
  • D)ARM Cortex-R
答案解析

答:C Cortex-A系列面向尖端的基于虚拟内存的操作系统和用户应用,是高端应用处理器。


7. 关于ARM处理器的指令集说法错误的是?

  • A)Thumb指令集是ARM指令集的一个子集
  • B)ARM指令集指令宽度为32位,而Thumb指令集指令宽度为16位
  • C)Thumb-2指令集既有16位指令宽度又有32位指令宽度
  • D)所有ARM处理器均具有Thumb-2指令集
答案解析

答:D Thumb-2指令集是ARMv6/v7版本才具有的,早期的ARM7/9并不支持Thumb-2。


8. 下图是数字信号处理器(DSP)的典型应用方式,其中传感器采集信号后依次经过的①、②和③分别是?

  • A)A/D转换器、DSP、D/A转换器
  • B)D/A转换器、DSP、A/D转换器
  • C)DSP、A/D转换器、D/A转换器
  • D)A/D转换器、D/A转换器、DSP
答案解析

答:A 传感器采集模拟信号,先经A/D转换为数字信号,由DSP处理后,再经D/A转换为模拟信号输出。


9. 【填空题】ARM公司把ARM11之后的ARM处理器以ARM Cortex为特征命名,主要用于高端应用的命名为ARM Cortex-_,主要用于实时应用的命名为ARM Cortex-_。

答案

答:A;R Cortex-A面向高端应用,Cortex-R面向实时应用,Cortex-M面向微控制器。


10. 【填空题】在存储结构方面,ARM7采用_结构,而ARM9~ARM11均采用_结构。

答案

答:冯诺依曼(von Neumann);哈佛(Harvard) 早期ARM7采用冯诺依曼结构,ARM9之后均采用哈佛结构,数据总线和指令总线分开。


ARM体系结构

11. 以下关于ARM处理器工作状态说法错误的是?

  • A)工作状态包括ARM状态、Thumb及Thumb-2状态和调试状态三种
  • B)ARM状态既支持16位指令宽度也支持32位指令宽度
  • C)Thumb状态或Thumb-2状态下代码密度大于ARM状态,占用存储空间较小
  • D)ARM处理器复位后总处于ARM状态
答案解析

答:B ARM状态只支持32位指令,16位指令是Thumb状态的特点。


12. 关于ARM嵌入式处理器的工作状态,以下说法错误的是?

  • A)ARM状态仅支持32位指令编码
  • B)Thumb状态仅支持16位指令编码
  • C)Thumb-2状态仅支持32位指令编码
  • D)ARM状态和Thumb状态是可以相互切换的
答案解析

答:C Thumb-2状态兼容16位和32位指令编码,而非仅支持32位。


13. 以下ARM处理器,只有Thumb-2状态和调试状态的是?

  • A)ARM7
  • B)ARM9
  • C)ARM11
  • D)ARM Cortex-M3
答案解析

答:D Cortex-M3只有Thumb-2状态和调试状态,没有传统的ARM状态。


14. 关于ARM处理器的工作模式,以下说法错误的是?

  • A)用户模式是程序正常执行的模式
  • B)快速中断模式处理高速中断,用于高速数据传输或通道处理
  • C)管理模式用于操作系统的保护模式,处理软中断
  • D)系统模式用于处理未定义的指令陷阱
答案解析

答:D 系统模式用于运行具有特权的操作系统任务;处理未定义指令的是未定义指令终止模式(UND)。


15. 关于ARM处理器的工作模式,以下说法错误的是?

  • A)用户模式是程序正常执行的工作模式
  • B)管理模式负责处理存储器故障,实现虚拟存储器和存储器的保护
  • C)系统模式运行特权级的操作系统任务
  • D)当处理器处于用户模式时,如果没有异常发生是不能改变工作模式的
答案解析

答:B 管理模式(SVC)是操作系统的保护模式,处理软中断。负责处理存储器故障的是数据访问中止模式(ABT)。


16. 如果要选择ARM处理器工作在外部中断模式,允许外部中断IRQ,禁止快速中断FIQ,使用Thumb工作状态,则需要设置的寄存器是?

  • A)PSP
  • B)MSP
  • C)CPSR
  • D)SPSR
答案解析

答:C CPSR(当前程序状态寄存器)包含条件标志位、中断禁止位、当前处理器模式标志以及工作状态位,用于控制这些设置。


17. 以下关于ARM程序状态寄存器CPSR说法错误的是?

  • A)CPSR记录了ARM运行过程中的标志状态
  • B)CPSR决定是否切换到Thumb状态
  • C)CPSR决定是否允许快速中断FIQ
  • D)CPSR决定堆栈深度
答案解析

答:D CPSR包含条件码标志、中断禁止位和处理器模式位等,但不决定堆栈深度。


18. 以下关于ARM状态寄存器CPSR的说法正确的是?

  • A)CPSR决定存储器的数据类型和存储模式
  • B)CPSR中I为快速中断禁止控制位
  • C)CPSR中的T为陷阱标志
  • D)CPSR决定ARM处理器工作模式
答案解析

答:D CPSR低5位决定工作模式。I是外部中断IRQ禁止位(B错),F才是FIQ禁止位;T是ARM/Thumb状态切换位(C错)。


19. 以下关于ARM处理器寄存器说法错误的是?

  • A)R0~R7在任何模式下均作为通用寄存器使用
  • B)R0~R15寄存器的位数为32位
  • C)作为链接寄存器LR的是R14
  • D)堆栈指针SP使用的寄存器是R15
答案解析

答:D 堆栈指针SP使用的是R13,R15是程序计数器PC。


20. ARM处理器当前运算操作所产生的标志位记录在以下哪个寄存器中?

  • A)PSP
  • B)MSP
  • C)SPSR
  • D)CPSR
答案解析

答:D CPSR(当前程序状态寄存器)用于存储条件码标志,包括N(负数)、Z(零)、C(进位)、V(溢出)。


21. 关于ARM处理器的异常,以下说法错误的是?

  • A)复位异常级别最高
  • B)FIQ是外部中断异常
  • C)每个异常中断向量占据4个字节
  • D)不同类型的异常中断其中断服务程序入口地址不同
答案解析

答:B FIQ是快速中断请求异常,IRQ才是外部中断异常。FIQ主要用于高速数据传输或通道处理。


22. 关于ARM处理器异常中断响应过程中,以下说法正确的是?

  • A)SPSR的值保存到CPSR中
  • B)设置当前状态寄存器CPSR的相应位
  • C)断点地址会自动保存在R13中
  • D)自动把异常向量地址写入R14中
答案解析

答:B 响应过程:CPSR保存到SPSR(A反了);设置CPSR相应位(B对);断点地址保存在R14/LR中(C错);PC强制赋值为向量地址(D错)。


23. 以下关于ARM处理器从异常中断返回的说法错误的是?

  • A)恢复原来被保护的用户寄存器
  • B)将SPSR寄存器的值复制到CPSR
  • C)将异常向量地址写入PC中
  • D)清除I和F标志,允许IRQ和FIQ中断
答案解析

答:C 异常返回时应将断点地址(而非异常向量地址)恢复到PC中,以继续执行原来的程序。


24. 已知内存0x80000000=0x33,0x80000001=0x31,0x80000002=0x30,0x80000003=0x32,则ARM在大端模式下地址0x80000000所指示的一个字为?

  • A)0x33303132
  • B)0x32303133
  • C)0x32303331
  • D)0x33313032
答案解析

答:D 大端模式下最低地址存最高字节。字 = 0x33(最高)| 0x31 | 0x30 | 0x32(最低)= 0x33313032。


25. 已知在小端模式下,内存0x98001204存放0x35,0x98001205存放0x36,0x98001206存放0x37,0x98001207存放0x38,R1=0x98001200,执行LDR R0,[R1,#4]后,R0的值为?

  • A)0x35363738
  • B)0x36353837
  • C)0x38373635
  • D)0x37383536
答案解析

答:C 小端模式下高位数据存高地址。有效地址为R1+4=0x98001204,读取的字为0x38373635。


26. 已知R1=0x20000000,R0=0x55667788,在大端模式下执行ARM指令STR R0,[R1]之后,0x20000003中的值为?

  • A)0x55
  • B)0x66
  • C)0x77
  • D)0x88
答案解析

答:D 大端模式下高字节存低地址。0x55存0x20000000,0x66存0x20000001,0x77存0x20000002,0x88存0x20000003。


27. 【填空题】经典ARM处理器有7种异常,主要包括复位RESET、未定义指令UND、软件中断SWI、指令预取中止PABT、数据访问中止DABT、外部中断请求IRQ及_,其中优先级最高的异常是_。

答案

答:快速中断FIQ;复位RESET 7种异常中,复位的优先级最高。


28. 【填空题】ARM Cortex嵌入式处理器包括主要应用于控制领域的_系列和面向实时应用领域的_系列。

答案

答:Cortex-M;Cortex-R Cortex-M面向微控制器,Cortex-R面向实时应用。


29. 【填空题】在ARM处理器中,R0~R15是通用寄存器,其中作为堆栈指针SP使用的寄存器是_,作为程序链接寄存器LR使用的是_。

答案

答:R13;R14 R13=SP(堆栈指针),R14=LR(链接寄存器),R15=PC(程序计数器)。


30. 【填空题】ARM状态下指令代码长度的位数为_位、Thumb状态下指令代码长度的位数为_位。

答案

答:32;16 ARM状态全部32位指令,Thumb状态全部16位指令。


31. 【填空题】CPSR寄存器中的I和F分别为中断和快速中断禁止控制位,当I=_将禁止外部中断IRQ,当F=_时允许快速中断FIQ。

答案

答:1;0 I=1禁止IRQ,I=0允许IRQ;F=1禁止FIQ,F=0允许FIQ。


32. 【填空题】三星公司基于ARM9内核的S3C2410嵌入式处理器芯片的电源管理模块共有_种工作模式。_模式下不使用PLL时钟,由外部晶体或外部时钟直接提供给其它组件使用。

答案

答:4;慢速 S3C2410的电源管理有正常模式、慢速模式、休眠模式和掉电模式共4种。慢速模式关闭PLL,直接使用外部时钟。


ARM指令系统

33. ARM处理器在指令LDR R2,[R5,#2]!执行后,R5中的值为?

  • A)R5不变
  • B)R5=R5+2
  • C)R5=R2+2
  • D)R5=2
答案解析

答:B [R5,#2]!是前索引带回写。先用地址(R5+2)读数据到R2,然后R5自动更新为R5+2。


34. 将ARM处理器R0中的一个字节的数据,存入由R1+4指示的内存区域,且地址自动更新,则使用的ARM指令是?

  • A)STR R0,[R1,#4]
  • B)STRH R0,[R1,#4]!
  • C)STRH R0,[R1,#4]
  • D)STRB R0,[R1,#4]!
答案解析

答:D 字节存储用STRB(B=Byte),地址自动更新用!后缀。


35. ARM处理器将R0中一个字的数据存入由R1指示的内存区域,使用的指令是?

  • A)STR R0,[R1]
  • B)LDR R0,[R1]
  • C)STRH R0,[R1]
  • D)STRB R0,[R1]
答案解析

答:A STR是字存储指令,STRH是半字存储,STRB是字节存储,LDR是加载而非存储。


36. 在以下ARM处理器的指令操作码中可让寄存器R1中的指定位"置位"的指令操作码是?

  • A)MOV
  • B)AND
  • C)ADD
  • D)ORR
答案解析

答:D ORR是逻辑或运算,任意位OR 1 = 1(置位)。AND与0可清零,ORR与1可置位。


37. 在以下ARM处理器指令中可让寄存器R1中指定位"清零"的指令操作码为?

  • A)MOV
  • B)AND
  • C)ADD
  • D)ORR
答案解析

答:B 使用AND指令和0进行按位相与,可以实现指定位清零(0 AND x = 0)。


38. 以下ARM指令中属于寄存器间接寻址的指令是?

  • A)TST R1,#0xFE
  • B)LDRB R1,[R2]
  • C)MOV R1,R0,LSL#3
  • D)BIC R0,R0,#0x0B
答案解析

答:B 寄存器间接寻址以寄存器的值作为操作数地址,用[]括起来表示。B中[R2]即为间接寻址。


39. 如果R1=0x00000080,则指令MOV R0,R1,LSL#2执行后,R0的值为?

  • A)0x00000200
  • B)0x00000320
  • C)0x00000020
  • D)0x00000040
答案解析

答:A R1=0x80=128,左移2位相当于乘以4,128×4=512=0x200。


40. 以下不能完成将R2中数值的两倍写入R1中的ARM指令是?

  • A)ADD R1,R2,R2
  • B)ORR R1,R2,R2
  • C)MOV R1,R2,LSL#1
  • D)MUL R1,R2,#2
答案解析

答:B ORR R1,R2,R2 的结果是R2与自身做或运算,结果仍是R2本身,不是两倍。A是自加,C是左移1位(×2),D是乘法。


41. 某ARM指令完成的功能是"如果相等,则进行带进位的加法",该指令是?

  • A)ADCNE R1,R2,R3
  • B)ADDEQ R1,R2,R3
  • C)ANDEQ R1,R2,R3
  • D)ADCEQ R1,R2,R3
答案解析

答:D ADC是带进位加法,EQ表示相等条件,合起来就是ADCEQ。ADDEQ是不带进位的加法(B错)。


42. 需要ARM指令完成的功能是:如果不相等,则进行减法,正确的指令是?

  • A)SUBVS R1,R2,R3
  • B)SUBEQ R1,R2,R3
  • C)SUBLS R1,R2,R3
  • D)SUBNE R1,R2,R3
答案解析

答:D NE表示不相等,SUB表示减法,故SUBNE是"不相等时进行减法"。


43. 关于ARM指令中的条件域,以下表述错误的是?

  • A)EQ为相等
  • B)CS为无符号数大于或等于
  • C)VS为未溢出
  • D)LS为无符号数小于或等于
答案解析

答:C VS表示溢出(oVerflow Set),VC才表示未溢出。


44. 以下ARM指令中源操作数属于立即寻址的指令是?

  • A)SUBCC R1,R2,R3
  • B)LDRB R0,[R1]
  • C)AND R1,R2,R3
  • D)MOV R1,#0x0B
答案解析

答:D 立即寻址即操作数以#开头直接给出。A和C为寄存器寻址,B为寄存器间接寻址。


45. 将R1寄存器中的指定位bit0和bit3清零,以下ARM汇编指令正确的是?

  • A)AND R1,R1,#0xFFFFFFF6
  • B)BIC R1,R1,#0xFFFFFFF6
  • C)EOR R1,R1,#0xFFFFFFF6
  • D)ORR R1,R1,#0xFFFFFFF6
答案解析

答:A bit0和bit3对应0x09,清零这两位需要与其反码0xFFFFFFF6做AND运算。和0相与清零,和1相与保持不变。


46. 将寄存器R1中指定的bit7和bit3位清除、其它位保持不变的ARM指令是?

  • A)ORR R1,R1,#0x00000088
  • B)AND R1,R1,#0x00000088
  • C)BIC R1,R1,#0x00000088
  • D)TST R1,R1,#0x00000088
答案解析

答:C BIC是位清除指令,BIC R1,R1,#0x88会将R1中bit7和bit3清零,其他位不变。


47. 设R1中为一正整数,将其数值的一半存入R2的ARM指令正确的是?

  • A)SUB R2,R1,LSR #1
  • B)MOV R2,R1,LSL#1
  • C)UDIV R2,R1,#1
  • D)MOV R2,R1,LSR#1
答案解析

答:D 数值减半相当于除以2,通过逻辑右移1位(LSR#1)实现。LSL#1是左移即乘2(B错)。


48. 以下ARM指令中不属于数据处理类指令的是?

  • A)ADC R1,R2,R3
  • B)LDR R1,[R2]
  • C)MOV R1,R2,LSL#4
  • D)ORR R1,R2,R3
答案解析

答:B LDR属于加载/存储类指令,不是数据处理类。ADC、MOV、ORR都属于数据处理类。


49. 对于ARM处理器以下不属于逻辑运算指令助记符的是?

  • A)AND
  • B)BIC
  • C)EOR
  • D)SBC
答案解析

答:D SBC是带借位减法指令,属于算术运算指令。AND(与)、BIC(位清除)、EOR(异或)均为逻辑运算指令。


50. 如果条件为负数,将R1指向的内存单元中8位数据加载到R0寄存器中,正确的ARM指令为?

  • A)LDRPL R0,[R1]
  • B)LDRMI R0,[R0]
  • C)LDRHMI R1,[R0]
  • D)LDRBMI R0,[R1]
答案解析

答:D MI表示负数条件,LDRB是字节加载,数据从[R1]加载到R0。


51. 以下对伪指令的解释错误的是?

  • A)DCD 0x12;在内存区域分配一个32位字的内存空间并初始化为0x00000012
  • B)CODE16;伪指令通知编译器,其后的指令序列为16位的Thumb指令
  • C)Test EQU 50;定义一个常量Test值为50,不能定义32位常数
  • D)IMPORT Main;该伪指令通知编译器当前文件要引用标号Main,但Main在其他源文件中定义
答案解析

答:C EQU伪指令可以定义32位范围内的常量,并非不能定义32位常数。


52. ARM处理器在比较指令之后,如果要依据是否相等转移到指定地址L1,则以下指令错误的是?

  • A)BEQ L1
  • B)BNE L1
  • C)BXEQ L1
  • D)BLAL L1
答案解析

答:D BLAL不是有效的ARM指令。BEQ(相等跳转)、BNE(不等跳转)、BXEQ(相等时带状态切换跳转)均为有效指令。


53. 【填空题】ARM指令集中,写16位数据到存储器的指令助记符为_,从外部设备读取一字节数据的助记符为_。

答案

答:STRH;LDRB STRH存储半字(16位),LDRB加载字节(8位)。


54. 【填空题】已知R1=0x12345678,R2=0xFF008899,执行AND R0,R1,R2后,R0=_,R1=_。

答案

答:0x12000018;0x12345678 AND按位与运算,R0=R1 AND R2=0x12000018;R1作为源操作数不变。


55. 【填空题】已知R1=0xFFFFFFF8,R2=0x7F,则执行指令EOR R0,R1,R2后,寄存器R0=_,R2=_。

答案

答:0xFFFFFF87;0x7F EOR是异或指令,按位比较不相等为1,相等为0。R2值不改变。


56. 【填空题】已知R0=0x10,R1=0x20,R2=0x08,R3=0xFFFFFFF3,则指令LSL R0,R0,R2执行后,R0=_,指令MVN R1,R3执行后R1=_。

答案

答:0x00001000;0x0000000C LSL是逻辑左移,R0=0x10左移8位=0x1000。MVN是数据取反传送,对R3取反得0x0C。


57. 【填空题】若R3=0,R4=0xF912341F,则指令BIC R3,R4,#0x80000001执行后,R3的值为_,R4的值为_。

答案

答:0x7912341E;0xF912341F BIC位清零指令将R4中bit31和bit0清零后存入R3。R4值不改变。


58. 【填空题】若R2=0xFF00000F,则指令ADDS R1,R2,#0x80000001执行后,寄存器R1=_,进位位C=_。

答案

答:0x7F000010;1 0xFF00000F + 0x80000001 = 0x17F000010,超过32位产生进位,R1取低32位为0x7F000010,C=1。


59. 【填空题】Thumb-2指令集提供了专门用于开、关中断的专用指令,关外部中断使用的指令为_,开外部中断的指令为_。

答案

答:CPSID I;CPSIE I CPSID I(Change Processor State, Interrupt Disable)关闭中断;CPSIE I(Interrupt Enable)开启中断。


60. 【填空题】某ARM汇编语言程序要调用子程序MySubroutine,调用指令为_,子程序返回调用程序的指令为_。

答案

答:BL MySubroutine;MOV PC,LR BL是带返回的转移指令,会将返回地址保存在LR中。返回时将LR值写回PC即可。


61. 【填空题】用ARM汇编语言,在内存空间定义一个字(32位)变量的伪指令为_,指示下面为16位代码的伪指令是_。

答案

答:DCD;CODE16 DCD用于分配一片连续的字存储单元并初始化;CODE16通知编译器后续为16位Thumb指令。


ARM汇编与C混合编程

62. 编写uC/OS-II的中断服务子程序主要使用哪种语言?

  • A)汇编语言或C语言
  • B)Java语言
  • C)PASCAL语言
  • D)C++语言
答案解析

答:A uC/OS-II的中断服务子程序主要用汇编语言编写。如果编译器支持内嵌汇编,也可以直接放在C语言程序文件中。


63. GCC是针对Linux操作系统环境下应用程序的编译工具,下面叙述中错误的是?

  • A)GCC将源文件生成可执行文件的过程是由:编译、汇编、连接等3个阶段组成
  • B)GCC能将C语言、C++语言、汇编语言编写的源程序生成执行文件
  • C)设计者若要对源程序进行调试,需要在GCC命令中加入-g参数来编译该源程序
  • D)用GCC把源文件仅编译成目标文件,那么C语言编写的应用程序中可以不要main函数
答案解析

答:A GCC从源文件生成可执行文件包含4个阶段:预处理、编译、汇编、连接,不是3个。


64. 下列程序中通常不属于板级支持包(BSP)内容的是?

  • A)初始化程序
  • B)设备驱动程序
  • C)引导加载程序
  • D)进程管理程序
答案解析

答:D BSP包括初始化程序、设备驱动程序、配置文件和引导加载程序等。进程管理属于操作系统内核功能,不属于BSP。


65. 【填空题】由于Bootloader的实现依赖于CPU的体系结构,大多数Bootloader都分为stage1和stage2两大部分。stage1使用_语言来实现,而stage2通常用C语言来实现,代码具有更好的可读性和_性。

答案

答:汇编;可移植 stage1用汇编语言实现底层硬件初始化,stage2用C语言实现复杂功能,提高可读性和可移植性。


66. 【填空题】GNU开发工具套件中的C语言编译器,其英文简称是_。针对ARM体系结构的目标机,该编译器的带前缀命令是_。

答案

答:GCC;arm-linux-gcc GCC是GNU C Compiler的简称,arm-linux-gcc是针对ARM体系结构交叉编译时使用的命令。