ARM题库
2015-09-25
一、填空题
1. 常见的ARM处理器内核有 ARM 7 、 ARM 9 和 ARM 11 等。
2. ARM处理器有两种状态,分别是 ARM 状态 和 Thumb 状态。
3. 按总线所传送的信息类型,总线分为 数据总线 、 地址总线 和 控制总线 。
4. ADS 是一套用来开发ARM 处理器应用系统的开发工具包,用户可以用ADS 编辑、编译和调试C、C++以及汇编程序。目前的版本为 ADSv1.2 。
5. 与逻辑运算规则:0 • 0= 0 ;0 • 1= 0 ; 1 • 0= 0 ; 1 • 1= 1
6. 或逻辑运算规则: 0 + 0= 0 ;0 +1= 1 ; 1 + 0= 1 ; 1 + 1= 1
将2进制转换为16进制:(10011100101101001000) B = 。
7.ARM 属于 RISC 架构。
8.ARM 指令集是 32 位宽,Thumb 指令集是 16 位宽。
9.ARM体系结构版本中V___4___版架构是目前应用最广的ARM体系架构,ARM7、___ ARM 9 ___都采用该架构。
10.ARM微处理器共有__37_个__32_ 位寄存器,其中_31___个为通用寄存器,____6__个为状态寄存器。
11.常用的嵌入式操作系统有 嵌入室Linux 、 VxWorks 等。
12.ARM嵌入式系统主要由 嵌入室硬件 、 嵌入室软件 和 开发工具 构成。
13.复位后,ARM处理器处于 SVC 工作模式, ARM 状态。
14.S3C2410采用的核心处理器是 ARM920T 。
15.S3C2410 支持两种引导方式,分别是 Nor-Flash 启动方式、 Nand-Flash 启动方式。
16.GPIO的中文全称是 通用输入输出端口 。
17.ARM处理器有两种状态,分别是 ARM 和 Thumb 。
18.计算机结构分为 哈佛体系 结构和 冯诺依曼体系 结构。
19.ARM处理器支持的数据类型中,字节为 8 位、半字为 16 位、字为 32 位。
20.将2进制转换为16进制:(11011010101101101110) B = ( ) H
21.ARM状态下,SP寄存器指的是 R13 、LR寄存器指的是 R14 、PC寄存器指的是 R15 。
22.一个嵌入式系统由3部分组成,分别是 嵌入式硬件 、 嵌入式软件 和 开发工具 。
二、选择题:
1.相对于ARM指令集,Thumb指令集的特点是___ 。
A、指令执行速度快
B、16位指令集,可以得到密度更高的代码,对于需要严格控制成本的设计非常有意义
C、Thumb模式有自己独立的寄存器
D、16位指令集,代码密度高,加密性能好
2.在ARM寄存器结构中,栈指针使用__B__寄存器。
A、R0 B、R13 C、R14 D、R15
3.在ARM体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor),应采用何种方法?
A、直接修改CPU状态寄存器(CPSR)对应的模式
B、先修改程序状态备份寄存器(SPSR)到对应的模式,再更新CPU状态
C、使用软件中断指令(SWI)
D、让处理器执行未定义指令
4.嵌入式系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。例如:对于S3C2410来说,Boot Loader会映射到______地址处。
A 0x0c000000 B 0x00000000 C 0x00000018 D 0x40000018
5.32位体系结构的ARM处理器有____种不同的处理器工作模式,和____个主要用来标识CPU工作状态和程序运行状态的状态寄存器。
A、7、7 B、7、6 C、6、6 D、6、7
6.CPSR中的低8位称为控制位,下列不属于控制位的是____。
A、N B、I C、F D、T
7.ARM7属于 结构,ARM9属于 结构。
A、 冯.诺依曼 B、 哈佛
8.ARM7是 级流水线,ARM9是 级流水线。
A、1 B、2 C、3 D、5
9.ARM中可以访问状态寄存器的指令是 ,能够访问内存的指令是 。
A、MOV B、ADD C、LDR D、MRS
10.在下列ARM处理器的各种模式中,只有_____模式不可以自由地改变处理器的工作模式。
A、用户模式(User)
B、系统模式(System)
C、终止模式(Abort)
D、中断模式(IRQ)
11.在ARM的汇编程序中,ADR、ADRL、 、 等被称为伪指令。
A、AREA B、SETA C、LDR D、NOP
12.下列条件码中表示不相等的是 。
A、EQ B、NE C、CS D、CC
13.CPSR中的低8位称为控制位,其中I位等于1表示 。
A、禁止IRQ中断 B、禁止FIQ中断 C、允许IRQ中断 D、允许FIQ中断
14.ARM微处理器支持7种工作模式。其中,除 之外的其余6种称为特权模式,在这6种之中,除 之外的其余5种又称为异常模式。
A、用户模式 B、管理模式 C、中止模式 D、系统模式
15. ATPCS规定中,栈是 。
A、满递增 B、满递减 C、空递增 D、空递减
16. 在用ARM汇编编程是,其寄存器有多个别名,通常PC是指R15,LR 是指 ,SP是指
A、R12 B、R13 C、R14 D、R15
17.下列条件码中表示无符号数小于的是____。
A、HI B、LS C、CS D、CC
18.下列ARM指令中,可用于满递增堆栈操作的是____。
A、STMDA B、STMIA C、STMDB D、STMIB
19.下列32位数中,不可作为立即数的是____。
A、0x81000007 B、0x04800000 C、0x00000012 D、0x8000007
20.ATPCS规定数据栈是____类型。
A、满递减 B、满递增 C、空递减 D、空递增
21.ARM伪指令中,可用于大范围地址读取的是____。
A、ADR B、ADRL C、LDR D、NOP
22.同CISC相比,下面哪一项不属于RISC处理器的特征。____
A、采用固定长度的指令格式,指令规整、简单、基本寻址方式有2~3种。
B、减少指令数和寻址方式,使控制部件简化,加快执行速度。
C、数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率,同时简化处理器的设计。
D、RISC处理器都采用哈佛结构
23.以下叙述中,不符合RISC指令系统特点的是 。
A、 指令长度固定,指令种类少
B、 寻址方式种类丰富,指令功能尽量增强
C、 设置大量通用寄存器,访问存储器指令简单
D、 选取使用频率较高的一些简单指令
24.下面关于ARM处理器的体系结构描述哪一个是错误的。____
A、三地址指令格式
B、所有的指令都是多周期执行
C、指令长度固定
D、Load-Store结构
25.在ARM寄存器结构中,栈指针使用____寄存器,
A、R0 B、R13 C、R14 D、R15
三、问答题:
1.ARM7TDMI采用了几级流水线工作方式,简要说明。
答:三级
2.ARM9采用了几级流水线工作方式,简要说明。
答:五级流水线工作方式,1.取指2.指令译码3.执行4.数据存储访问5.写寄存器
3.分别画出采用大端格式及小端格式存放01020304H的存储器示意图
答:
4.写出基于ARM920T核的处理器的异常优先级由高到低的排列次序
答:复位
5.简述ARM处理器从异常返回的步骤
答:
6.哈佛体系结构和冯诺依曼体系结构有何不同。
答:哈佛体系结构有两套地址总线和数据总线是分开的,冯诺依曼体系结构是复用的。
7.用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配。
假定低32位数存放在r0和r1里面,高32位数存放在r2和r3里面。
答:
8.写出四个s3c2410的中断异常处理模块中的主要寄存器,并简要说明其作用。
答:158页图7-8 ,倒数第一行
9.ARM920T体系结构支持哪两种方法存储字数据?
答:大端模式和小端模式,大端模式高地址存的是数据的低位,低地址存存的是数据的高位。小端模式高地址存的是数据的高位,
四、程序分析题:
1.指出下面各条指令的寻址方式。
SUB R0,R1,R2 ;寻址方式为: 寄存器寻址
SUBS R0,R0,#1 ;寻址方式为: 立即数寻址
MOV R0,R2,LSL #3 ;寻址方式为: 寄存器移位寻址
SWP R1,R1,[R2] ;寻址方式为:
LDR R2,[R3,#0x0C] ;寻址方式为:
2.分别写出语句a)与b)中LDR的作用
a) LDR r0,[r1,#6] 真正的ARM指令,取出r1+6为地址里面的存储内容送到r0里。
b) LDR r0,=0x999 伪指令,把0x999这个常数送到r0里。
3.假设R0的内容为0x104,寄存器R1、R2的内容分别为0x01与0x10,存储器所有单元初始内容为0。连续执行下述指令后,说明存储器及寄存器的内容如何变化?
STMIB R0!,{R1,R2} //寄存器R0的内容为0x10c, 存储器0x108的内容为0x01, 存储器0x10 c的内容为0x10,寄存器R1、R2的内容分别为0x01与0x10。
LDMIA R0!,{R1,R2}
答:寄存器R0的内容为0x114,寄存器R1的内容为0x10,寄存器R2的内容为0,存储器0x10c的内容为0 x10,存储器0x108的内容为0x01,存储器其余各处的内容都为0。
4.分析下面的程序,正确填写下面的空格。
; 功能: 通过累加可以计算出10的整数倍
AREA Example1, CODE ,READONLY ; 此语句是声明 代码段Example1
ENTRY ;此语句功能是 标识程序入口
CODE32 ; 声明32位ARM指令
START MOV R0,#0 ; R0 = 0
MOV R1,#10 ; R1 = 10
LOOP BL ADD_SUB ; 调用子程序 ADD_SUB
B LOOP ; 跳转到LOOP
ADD_SUB
ADDS R0,R0,R1 ; 此语句作用是完成 R0+R1再赋给R0,并且会影响CPSR中的C标志位
MOV PC, LR ; 子程序返回
END ; 此语句作用是声明 整个程序结束
五、编程题
1. 用汇编语言调用C语言实现n个数相加,n为C函数的参数,由汇编语言传递,结果存放在R5寄存器中。
答:C程序:
int allsum(int n)
{
int i;
int nsum = 0;
for(i=1;i<=n;i++)
{
nsum += i;
}
return nsum;
}
汇编程序:
AREA scaller, CODE,READONLY
IMPORT allsum //导入allsum
ENTRY //入口点
MOV R0,#20
BL allsum //“B”子函数调用命令“L”返回主函数
MOV R5,R0
HALT B HALT //死循环
END
2.利用S3C2410X的GPF4、GPF5、GPF6、GPF7四个I/O管脚控制4个LED发光二极管,编程使其实现所有LED全亮,间隔一段时间,所有LED全灭。
电路原理图如下:
答:
void main()
{
rGPFCON = 0x5500; //端口初始化 输出端口
rGPFUP = 0xff; //不启用上拉功能
int i;
rGPFDAT=0; //所有LED全亮
for(i=0;i<100000;i++);
rGPFDAT=0xF0; //所有LED全灭
for(i=0;i<100000;i++);
}
3.用汇编语言编写程序读取存储器0x40003100地址上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。
答:
COUNT EQU 0x40003100 ; 定义一个变量,地址为0x40003100
AREA Example2,CODE,READONLY ; 声明代码段Example2
ENTRY ; 标识程序入口
CODE32 ; 声明32位ARM指令
START LDR R1,=COUNT ; R1 <= COUNT
MOV R0,#0 ; R0 <= 0
STR R0,[R1] ; [R1] <= R0,即设置COUNT为0
LOOP LDR R1,=COUNT
LDR R0,[R1] ; R0 <= [R1]
ADD R0,R0,#1 ; R0 <= R0 + 1
CMP R0,#10 ; R0与10比较,影响条件码标志
MOVHS R0,#0 ; 若R0大于等于10,则此指令执行,R0 <= 0
STR R0,[R1] ; [R1] <= R0,即保存COUNT
B LOOP
END