ARM-考试总结
一、单项选择
1、 ARM920T处理器执行下面两条汇编指令后:
MOV R1,#0x1000
LDR R0, [R1], #14
寄存器R1的值是( B )。
A、0x1000 B、 0x100E C、 0x0FFC D、 0x4
2、 ARM的汇编指令 LDR R1,[R0,#0x04] 中的寻址方式属于( D )。
A、寄存器寻址 B、 立即寻址 C、寄存器间接寻址 D、变址寻址
3. 为了节省存储空间,位图(bmp)文件使用了调色板技术,只有不超过( A )种颜色的bmp彩色图片才使用调色板来显示。
A、256 B、512 C、1024 D、4096
4. 在一个完整的ARM汇编程序中不能缺少的伪指令是(B) 。
A、NOP B、ENTRY C、IMPORT D、EXPORT
5.链接寄存器LR使用的是ARM处理器中的( C )。
A、R0寄存器 B、R13寄存器 C、R14寄存器 D、R15寄存器 因为: 堆栈指针SP使用R13寄存器; 链接寄存器LR使用R14寄存器;
程序计数器PC使用R15寄存器。
6. ARM处理器不支持的数据类型是( B )。
A、Word (字) B、Doubleword (双字) C、Halfword (半字) D、Byte (字节)
7、在ARM的所有处理器模式下,都可以访问同一个物理寄存器的ARM寄存器是( B )。 A、SPSR B、CPSR C、R13 D、R14 解:其他3个寄存器都和ARM处理器的具体运行模式有关。详见教材P30的图2-4.
8、某STN型的LCD显示器被设置成12bpp的单扫描彩色显示模式,则能够显示的颜色共有( C )种。
A、1024 B、256 C、4096 D、512
1
9. 下面指令执行后,改变了R1寄存器内容的指令是( D )。
A、TST R1,#2 B、ORR R1,R1,R1
C、CMP R1,#2 D、EOR R1,R1,R1
10. 设寄存器R0的值为0x1000FFFF,执行ARM指令STMDA R0! {R1,R2,R3}后,R0的值变为( B )。
A、 0x1000FFF4 B、 0x1000FFF3 C、 0x1000FFFC D、 0x1000FFF8 解答:这条指令含义是:将寄存器R1、R2和R3的内容按照地址递减的方式送到R0指向的(即地址)连续存储单元(内存)中;DA的含义是每次数据传送后地址递减;符号! :表示最后的地址要写回到基址寄存器R0 中
注意:R0的值每次按字长度(即4个字节)递减 。
11.设寄存器R0的值为0x1000AAA0,执行ARM指令STMIB R0! {R1,R2,R3}后,R0的值变为( )。
A、0x1000AAA4 B、0x1000AAA8 C、0x1000AAAC D、0x1000AAAF 解答:这条指令将寄存器R1、R2和R3的内容按照地址递增的方式送到R0指向的(即地址)连续存储单元(内存)中。IB的含义是每次传送数据之前将地址递增 。 符号! :表示最后的地址写回到基址寄存器R0中
注意:R1的值每次按字长度(4字节)递增
12、S3C2440A的GPIO口中只能作为输出使用的是(B)
A 、GPB口 B、GPA口 C、 GPF口 D、GPG口
13、设S3C2440A处理器的 PCLK的频率f pclk =40MHz,经过1/100预分频和1/4分频后,送给定时器的计数时钟周期(f TCLK)的输出周期是 (C) μs 。
A 、100 B、1 C、10 D 、0.1
解答:见教材P161的公式
14. 在S3C2440A的内部可编程模块中,可以通过( B )来测量电池电压。
A、Timer B、ADC C 、GPIO D 、 UART
15、存储一个 32位数 0xf6734c8d到地址为 2000H~2003H四个字节的单元中,
若某型号的ARM920T处理器以小端模式存储,则地址为2001H的存储单元中存储的内容是(C)。
A、0x8d B、0x73 C、0x4c D、0xf6
答案:C 解答:参考教材P22页,小端的数据存放格式:字数据的最低字节 2
存储在低地址中;最高字节则存放在高地址中。
提示:大端的数据存放格式也应掌握!!
二、 填空题
1 .ARM微处理器共有( 37 )个寄存器,其中( 31 )个为通用寄存器,(6)个为状态寄存器。
2.ARM存储器可用两种方法存储字数据,分别为(大端)格式和(小端)格式。
3、ADS1.2 集成开发环境中的图形用户接口GUI由两部分组成:编译链接ARM汇编程序和C/C++语言程序的(Code Warrior),对运行的可执行代码进行调试操作的(AXD)。
4.ARM处理器有两种工作状态,即(32)位的ARM态和(16 )位Thumb态。
5. 黑白LCD每像素4位相当于(16)级灰度;彩色液晶屏LCD每像素8位相当于(256)级颜色。
6. S3C2440A处理器内部有3个时钟,分别是( FCLK ),(HCLK )和(PCLK)。
7. S3C2440A共有 (130)个GPIO口,可分为 ( 9 )组。
8.ARM处理器有两种工作状态,即32位的(ARM)状态和16位(Thumb)状态。
9、使用S3C2440A处理器的定时器timer1来产生频率为10KHz、占空比为30%的方波。 已知定时器timer1的时钟的输出频率f TCLK是1 MHz,则定时器timer1的计数初值寄存器TCNTB1的数值应设定为(100),比较寄存器TCMPB1数值应设定为(30)。
解答:TCNTB1的数值=输出频率f TCLK/方波的频率=1 MHz/10KHz=100
PWM输出方波的信号占空比 = TCMPB1 TCNTB1
所以:TCMPB1=100*30% =30
10、某STN型的LCD显示器被设置成4bpp的单扫描灰度显示模式,则可以显示的灰度级别共有( 16 )级 。
11、LCD彩色显示模式采用( 8 )bpp及以下的称为伪彩色,并使用调色板技术 ;采用(12)bpp及以上的LCD彩色显示模式称为真彩色,不再使用调色板技术。
12、I2C 总线只需要2条线路传输数据:一条是(SDA ),另一条是( SCL)。 3
13、S3C2440A的摄像头接口存储像素数据的格式是从( LSB最低位) 到(MSB最高位)存储。
14、S3C2440A的摄像头接口具有两个独立的DMA通道:一个是存储用于视频显示的RGB图像数据的( P )通道,另一个是存储用于编解码的YCbCr图像数据的( C )通道,如果要把OV9650摄像头采集到的视频信息实时显示在LCD上,应该使用S3C2440A的摄像头接口的( P )通道 。
15、S3C2440A的UART接口的主要功能是将数据以字符为单位,按照(先低位后高位) 顺序传输。它可以在(中断)或(DMA)方式下工作。S3C2440A的摄像头接口只能在(DMA)方式下工作。
16、I2C 总线上发送到串行数据线SDA上的每个字节首先传输的是(最高位或MSB)。
17、 I2C总线上发送到串行数据线SDA线上的第一个字节的前7 位是(从设备的地址), 最低位是(数据的传输方向)。
三、简答题 :
1、 简述ARM9处理器的7种运行模式。
答:用户模式(usr)、系统模式(sys)、外部中断模式(irq)、快速中断模式(fiq)、管理模式(svc)、数据访问终止模式(abt)、未定义指令终止模式(und)。
2.指出下列指令的寻址方式
ADD R0,R1,R2 ;寄存器寻址
ADD R3,R3,#1 ;立即寻址
ADD R3,R2,R1,LSL #3 ;寄存器移位寻址
LDR R0,[R1] ;寄存器间接寻址
LDR R0, [R1,#4] ;变址寻址
LDMIA R1,{R1,R2,R5} ;多寄存器寻址
STMFD SP!, {R1-R7,,LR} ;堆栈寻址
BL SUBR ;相对寻址
3.ARM汇编语言与C语言混合编程通常有哪几种方式 ?
答:(参考教材的P80--81)
4
(1)在C语言代码中嵌入ARM的汇编指令; (2)在ARM汇编程序中访问C程序变量; (3)在C语言程序中调用ARM汇编的函数; (4)在ARM汇编程序中调用C的函数。 4、简述ARM的CPU响应中断的必要条件? (1) CPSR的I位(或F 位)是0
(2)中断源未决寄存器SRCPND的对应位是1 (3)中断屏蔽寄存器 INTMSK的对应位是0 (4)中断未决寄存器 INTPND的对应位是1
四、编程题
1、求1+2+?+100的累加运算结果。(注意:必须用ARM处理器的汇编语言)
AREA Example1,CODE,READONLY
ENTRY
;声明代码段Example1
;标识程序入口
CODE32 ;声明是32位的ARM指令
START MOV R0,#0 ;累加和的初值;
MOV R1, #0x64 ;十进制的100;
LOOP ADD R0,R1,R0 ;将累加结果保存到R0寄存器;
SUBS R1, R1, #1 ;每累加1次将R1减1,同时更新CPSR条件码标志位; BNE LOOP ;若CPSR的标志位Z=0,表示R1不为0,继续累加; END
2、求两个自然数a和b的最大公约数 (注意:必须用ARM处理器的汇编语言)
AREA Example2,CODE,READONLY
ENTRY
;声明代码段Example2 ;标识程序入口 ;声明是32位的ARM指令
CODE32
START MOV R0, #a MOV R1, #b LOOP CMP R0, R1 SUBGT R0, R0, R1
5
SUBLT R1, R1, R0
CMP R0, R1
BNE LOOP
END
算法的思想是:先对自然数a(R0)和b(R1)比较大小,然后根据比较结
果,用大数减小数的结果来替换原来的大数(记为新大数),再用这个新大数和原来的小数比较,再用大数减小数的结果来替换这个新大数,如此循环…..,直到两者相等,就是a和b的最大公约数 。
3、将存储器中起始地址为0x30000000的200字节的数据,传送到地址从
0x10000000开始的另外一个存储区域。(必须用ARM处理器的汇编语言)
AREA Example4,CODE,READONLY
ENTRY ;声明代码段Example4 ;标识程序入口 ;声明是32位的ARM指令 CODE32
START MOV R0,#0x30000000 ; 数据的原起始地址
MOV R1,#0x10000000 ; 数据的目的起始地址 MOV R2,#0x300000C8 ; 数据的原终止地址
LOOP LDRB R3, [R0], #1 ; 把原始数据送到寄存器R3中,同时 ;把数据的地址值加1(1个字节)
STRB R3, [R1], #1 ;把寄存器R3中的数据送到地址从 0x10000000
开始的另外一个存储区域中,同时把目的地址加1
CMP R0, R2 ;判断是否到达数据的原终止地址 BNE
END
4、程序分析题:如图所示,通过S3C2440A的GPF3,GPF4,GPF5,GPF6口的4
个引脚的输出电平来实现对发光二极管亮灭的控制。当 GPF3GPF6 输出低电平时,发光二极管点亮;当GPF3--GPF6 输出高电平时,发光二极管熄灭)。 LOOP ;没有到达数据的原终止地址,则继续传送
6
VCC
S3C2440A
C语言程序是:
#define GPFCON (*(volatile unsigned *)0x56000050) #define GPFDAT (*(volatile unsigned *)0x56000054) #define GPFUP (*(volatile unsigned *)0x56000058) void Delay(unsigned int);
int Ledlamp( )
{ unsigned char ledtab[]={0xf7,0xef,0xdf,0xbf}; 划线语句① int i; GPFUP&=0x87; 划线语句② GPFCON&=0xC03f; 划线语句③ GPFCON|=0x1540; 划线语句④
while(1)
{
for(i=0;i
{ GPFDAT=ledtab[i]; 划线语句⑤
Delay(100); //延时
}
}
return(0);
}
void Delay(unsigned int x ) //延时程序
{ unsigned int i,j,k;
for(i=0;i
for (j=0;j
for(k=0;k
}
7
其中S3C2440A的GPF口的配置寄存器GPFDAT、GPFUP和GPFCON的格式和功能分别参见附表1、附表2和附表3 。(详见教材的P110--111)
附表1 GPFDAT寄存器的格式
附表2 GPFUP寄存器的格式
附表3 GPFCON寄存器的格式
分析上面C语言程序中的划线语句,回答下列问题:
问题1、 分析划线语句①和划线语句⑤,该段程序实现的是流水灯还是走马灯? 答:实现的是走马灯(LED1先点亮,LED1熄灭后,LED2再点亮,? ) 解题思路(不必写出):例如:给 GPFDAT 寄存器的 bit3 赋值为低电平 0(其他bit赋值为高电平 1),即让GPFDAT=11110111=0xf7 ,实际上是给 GPF3 写 0,即让 GPF3输出低电平,那么跟 GPF3 连接的发光二极管LED 1 就点亮了。 备注:如果将划线语句①修改为:
8
unsigned char ledtab[]={0xf7,0xe7,0xc7,0x87; 划线语句①
那么程序实现的就是流水灯(LED1先点亮,LED1不熄灭,LED2再点亮,? ) 分析方法同上 。也要掌握流水灯的分析思路!!!
问题2、 划线语句②的作用是什么?
答:让端口GPF3、 GPF4、 GPF5和GPF6的上拉电阻使能
解题思路(不必写出):让端口GPF3、 GPF4、 GPF5和GPF6的上拉电阻使能,必须配置寄存器GPFUP的位 bit[6:3]是 0(其他bit不用管)。
于是程序是: GPFUP&=0x87;
//GPFUP和0x87(即1000 0111)按位“与”后给GPFUP,
结果是:GPFUP= ? 000 0??? (?表示不确定)
寄存器GPFUP的位 bit[6:3]是 0(其他bit不用管),
达到了使能上拉GPF3-GPF6引脚的目的。
问题3、 划线语句③和划线语句④的共同作用是什么?
答:将S3C2440A的GPF3,GPF4,GPF5,GPF6口的4个引脚设为输出口 。
问题4、划线语句⑤的作用是什么?
答:点亮发光二极管LED[i] (i=0,1,2,3)
备注:该题详见教材P124的例题5.2.4 I/O应用实例
9