嵌入式Linux应用程序开发标准教程习题 下载本文

1.1、简述ARM处理器的发展历史

1.2、简述RISC处理器的结构特点

1.3、概述ARM和Thumb指令集的的优缺点。

2.1、 CISC与RISC分别指什么?说明它们各自有什么特点?

2.2、ARM处理器工作模式有几种?各种工作模式分别有什么特点?

2.3、ARM处理器总共有多少个寄存器,这些寄存器按其在用户编程模式中的功能是如何划

2.4、试述ARM处理器对异常中断的响应过程

2.5、简述CPSR各状态位的作用,并说明如何对其进行操作,以改变各状态位。

2.6、试比较ARM和Thumb指令集的异同。

2.7、Thumb中通用寄存器和ARM中有何不同?

2.8、ARM指令系统中对字节、半字、字的存取是如何实现的?

2.9、ARM系统中大端小端指的是什么?

3.1、用哪一种寻址方式的指令执行速度最快?

3.2、立即数寻址方式在操作码字段和其他寻址方式有什么区别? 3.3、为什么说在第二操作数中如使用立即数必须是8位位图在32位字中被循环移位偶数位后的值?

3.4、请划存储器框图说明下面指令的区别

3.5、在相对寻址中,位移量指的是什么?什么指令最常用相对寻址?

3.6、在变址寻址中,前索引方式和后索引方式有什么区别?前索引方式中,在指令中加“!”和不加“!”有什么区别?现有R1=0x100,[0x100]=0x0FF,[0x104]=0x0EE,分别执行每条指令,指出R0中存放的结果:

LDR R0,[R1,#4] LDR R0,[R1,#4]! LDR R0,[R1],#4

3.7、指出下面两条指令的功能及R0,R1寄存器如何变化?

3.8、写出下列指令的寻址方式

ADD R0,R1,R2 () ADD R3,R3,#1 () ADD R3,R2,R1,LSL #3 () LDR R0,[R1] () LDR R0,[R1,#4]! () LDMIA R1,{R0,R2,R5} () STMFD SP! {R1-R7,LR} () LDMIA R0!,{R2-R9} () BL SUBR ()

4.1、判断下列ARM指令正确与否,并指出错误之处

MOV R0,#0x100000 () LDR R1,[R15] () LDR R0,[R0,4]! () UMULL R0,R1,R9,R9 () LDRD R14,[R1] () STRH R1,[R2,0xFFB] ()

4.2、分析下列指令执行后寄存器的内容。

MOV R0,#0x40 () MOV R1,#0x10 () LDR R0,[R1] () ADDS R2,R1,#1 () SUBNES R2,R1,#0x20 ()

4.3、下列指令执行后指令中目的寄存器的内容。设R0=0x100,R2=0x200,R3=0x300,

R5=0x111,R6=2,R10=0xF0C0 AND R9,R2,#0xFF00 () ORREQ R2,R0,R5 () EORS R0,R0,R3,ROR R6 () BICNES R8,R10,R0,RRX ()

5.1、编写程序段实现将R2的高8位数据传送到R3的低8位。

5.2、编写一段64位减法运算的程序,要求满足:[R1: R0]—[R3: R2],结果存入[R1: R0]中

5.3、试解释下列程序完成的功能 AREA block CODE, READONLY num EQU n entry start: LDR R0, =SRC

LDR R1, =DST MOV R2, #num copy: LDR R3, [R0], #4 STR R3, [R1], #4 SUBS R2, R2, #1 BNE copy AREA blockdata, DATA, READWRITE SRC DCD ….. DST DCD ….. END

5.4、子程序调用及返回的程序结构是怎样的?

5.5、解释下列程序的功能。 CMP R0, #maxindex LDRLO PC, [PC, R0, LSL, #2] B indexoutofrange DCD handler0 DCD handler1 DCD handler2 DCD handler3 ……

5.6、试编写一个简单的字符串比较子程序,假设两个字符串的首地址分别存放于寄存器R0和R1中,串的长度都为R4,若R0串大于R1串则返回R2=1,等于则返回R2=0,否则R2=--1。

5.7、编写程序将地址1000H~1030H数据全部搬迁到2000H~2030H中,并将源数据区清零。

6.1、BX指令执行时,状态切换与否是由什么决定的?跳转指令中B和BL有什么区别?

6.2、为了使C函数能够交互工作,必须怎样做?

6.3、汇编函数间进行交互工作需要注意什么?

6.4、ARM v5T版本的BLX指令有何优点?

6.5、判断下面说法的对错

(1)Thumb指令没有有条件指令

(2)Thumb指令集是16位的,而ARM指令集是32位的,Thumb有更高的代码密度

6.6、试分析下面的代码段 ADR R0, thumb+1 BX R0

CODE 16 thumb MOV R2, #2 MOV R3, #3 ADD R2, R2, R3 ADR R0, arm BX R0 CODE 32 arm MOV R4, #4 MOV R5, #5 ADD R4, R4, R5

6.7、程序填空,要求完成ARM和Thumb的切换

CODE32 ADR R0,INTO_Thumb+1 ( ) R0 ( ) ADR R5,BACK_ARM+1 ( ) R5 CODE32 BACK_ARM

9.1、 Embest IDE的主要特点是什么?

9.2、一个工程的基本设置包括哪些方面?

9.3、一个工程被编译后是什么格式文件?下载到flash中需做什么转换?

9.4、在调试设置Download中,程序执行起始点(Execute programme from)调置Download address,设为0x2000000,表示什么意思? 。

9.5、链接脚本文件的功能是什么?如果要使用自己的链接脚本,如何在编译器中设置?

9.6、在链接设置中,Image Entry Option中,指定了Image entry point为init.o表明了什么?

9.7、用thumb指令编写的程序编译下载后,在反汇编窗口如何看到的是什么,如何才能看到正确形式的指令?