ARM期末考点.docx
- 文档编号:24228948
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:19
- 大小:142.40KB
ARM期末考点.docx
《ARM期末考点.docx》由会员分享,可在线阅读,更多相关《ARM期末考点.docx(19页珍藏版)》请在冰豆网上搜索。
ARM期末考点
《ARM体系结构与编程》复习题
1、ARM920T支持7种运行模式,分别为_用户模式_,快速中断模式(FIQ),_普通中断模式(IRQ),数据访问中止模式,_管理模式_,_系统模式_,未定义指令模式
2、ARM处理器支持2种指令集,32位的ARM指令集和16位的Thumb集。
3、ARM920T内核支持___ARM__,__Thumb__指令集,分别为_32___,_16___位的指令系统。
4、ARM处理器共有37个寄存器,31个通用寄存器,6个状态寄存器,其中的(R0-R7)8个可以在任何模式下看到。
5、ARM920T体系结构所支持的最大寻址空间4GB。
6、当ARM处理器发生异常时,其优先级最高的异常是_复位异常_。
7、当处理器发生快速中断FIQ异常时,异常向量地址为0x0000001C,当处理器在复位后,异常向量地址为0x00000000,且处理器进入管理模式。
8、ARM920T中支持字节(8位),_半字(16位)_,_字(32位)3种数据类型。
9、ARM内核有__37__个寄存器,__用户和系统___模式使用寄存器最少。
10、ATPCS规定数据栈为_满递减(FD)_类型,并且对数据栈的操作是__8__字节对齐的。
11、局部变量的存储方式一般是_动态__存储,全局变量一般是__静态__存储。
12、ARM920T体系结构支持两种方法存储字数据,即_大端存储模式_,_小端存储模式_。
13、在复位后,ARM处理器处于___管理__模式__ARM__状态。
14、ARM920T体系结构支持两种方法存储字数据,即大端存储格式和小端存储格式,其中在小端存储格式中,字数据的高字节存放在高地址单元中,而字数据的低字节存放在低地址单元中。
15、CPSR中的低8位控制位中,当T=1时,处理器工作在Thumb状态,当T=_0_时,处理器工作在ARM状态。
16、ARM微处理器采用的是RISC(精简指令集)体系结构。
17、在ARM微处理器中,堆栈可分为两种堆栈,即满栈和空栈。
18、伪指令和位操作只在汇编过程中起作用。
19、ARM处理器有哪7种异常。
复位异常,未定义指令异常,软件中断异常,预取中止异常(取指令存储器中止异常),数据中止异常(数据访问存储器中止异常),IRQ(普通中断)异常,FIQ(快速中断)异常。
20、什么是C语言的预处理伪指令?
(宏定义,文件包含,条件编译)
C语言中以#开头的那部分指令
21、在ARM32位机中C语言常用的基本整型int在内存单元中占4个字节。
依据程序编译器的不同int定义的字节数不同。
常用的单片机编译器,51类单片机的C语言中,int代表2个byte(16位);如果是32位ARM处理器的C语言中,则int代表4个byte(32位)
22、在C语言的库函数中,求字符串长度的函数是什么(strlen()函数)。
23、指令ADDR0,R1,R1,LSL#1完成什么操作?
(加法操作R1+2R1-->R0。
把R1中的内容扩大3倍后送给R0。
)
24、指令MVNR0,#4执行的结果?
(0xFFFFFFFB)
25、指令LDRR0,[R1,#8]实现的功能?
(把基址R1的内容加上位移量8后所指的存储单元的内容送到寄存器R0中)
26、分析下列指令是否正确。
MOVR0,#0x8FFA0×(#0x8FFA0不合法的8位位图)
STRBR2,(R3,#8)×([R3,#8])
MULR1,R2,#8×(#8立即数不能作为乘法指令的任何操作数)
LDRR0,[R1],R2,LSL#2√
SWPR0,R1,R2×([R2])
27、判断合法立即数的方法。
(8位位图,即把一个8位的常数通过循环右移偶数位得到的8位常数)
28、LDRR0,[R1,#9]的源操作数(变/基址寻址)与目的操作数(寄存器寻址)的寻址方式。
29、ARM处理器的指令集(ARM指令集、Thumb指令集)有哪些6大类?
是否包含除法指令?
ARM处理器的ARM指令集有:
跳转指令,数据处理指令,程序状态寄存器访问指令,加载/存储型指令,协处理器指令,异常产生指令。
30、CPSR中如何修改T,MODE位?
在程序中的何处修改?
在何种模式下修改?
CPSR中的T控制位使用BX指令完成处理器状态的切换(BX指令属分支指令,它会打断流水线状态,实现处理器状态切换)。
MRS与MSR配合使用,实现CPSR寄存器的读-修改-写操作。
修改I,F,T,MODE位时先将CPSR中的内容通过MRS指令读到通用寄存器中,再将要修改的位所确定的立即数通过MSR指令写入状态寄存器CPSR中,只有在特权模式下才能修改。
通过MRS,MSR两条指令来获取和送回CPSR的值,修改CPSR的位[5:
0]的值。
异常出现时,可以改变控制位T,在特权模式下修改。
31、在内嵌的SWI和BL中,除了正常的操作数外,还必须增加3个可选的寄存器列表,这三个寄存器列表分别是什么?
(LR(子程序链接寄存器),CPSR(当前程序状态寄存器),SPSR(备份程序状态寄存器))
答:
第一个寄存器列表中的寄存器用来存放输入的数据;
第二个寄存器列表中的寄存器用来存放返回的数据;
第三个寄存器列表中的寄存器的内容,提供被调用的子程序来用。
32、当处理器发生异常后,ARM处理器执行的操作。
(异常出现后,强制从异常类型对应的固定存储器地址(异常向量)开始执行程序。
异常模式分组的R14和SPSR用于保存状态。
)
33、汇编程序与C程序的相互调用规则的寄存器规则。
(子程序之间通过寄存器r0-r3来传递参数,当多于4个参数时,使用堆栈来传递参数。
在子程序中使用r4-r11来保存局部变量。
寄存器r12用来保存堆栈指针IP。
寄存器r13用作堆栈指针SP。
寄存器r14用作链接寄存器LR。
寄存器r15作为程序计数器PC)
34、编写完整程序实现数据块拷贝操作,将源数据区Src中的8个字数(0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08),据拷贝到目的地址Dst中(要求利用块拷贝实现)。
AREAfz,CODE,READONLY
CODE32
ENTRY
START
MOVR0,#8
MOVR0,R0,ASR#2
LDRR1,=Src
LDRR2,=Dst
LLDMIAR1!
{R3-R6}//块拷贝
STMIAR2!
{R3-R6}//块拷贝
SUBSR0,R0,#1
BNEL
BSTART
SrcDCD0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
DstDCD0,0,0,0,0,0,0,0
END
35、写几条汇编指令,使能FIQ中断。
EnableMRSR0,CPSR
BICR0,R0,#0x00000040
MSRCPSR_c,R0
MOVPC,LR
使能IRQ中断如下:
EnableMRSR0,CPSR
BICR0,R0,#0x00000080
MSRCPSR_c,R0
MOVPC,LR
37、写汇编程序依次读出表DISP_TABLE中的半字数据(16位即2个字节)。
(DISP_TABLE中的半字数据为:
0xc0,0Xf9,0xd0,0x34,0x92,0xe8,0x25,0x65)
AREAdubiao,CODE,READONLY
CODE32
ENTRY
START
LDRR0,=DISP_TABLE
MOVR1,#8
LLDRHR2,[R0],#2
SUBSR1,R1,#1;循环次数减一
BNEL
BSTART
DISP_TABLEDCW0xAB,0xF8,0xC0,0x34,0x92,0xD6,0x25,0x65
END
39、采用汇编程序调用C语言方法完成1*2*3*4*…*n求积
汇编程序如下:
AREAjiecheng,CODE,READONLY
ENTRY
CODE32
IMPORTjc
START
MOVR0,#n;n是具体的值
BLjc
BSTART
END
C语言程序如下:
intjc(intn)
{
intji=1;
for(;n>0;n--)
{
ji*=n;
}
returnji;
}
40、采用C语言调用汇编完成1*2*3*4*…*n求积
汇编程序如下:
EXPORTcheng
AREAchengfa,CODE,READONLY
ENTRY
CODE32
IMPORTmain
cheng
MOVR2,R0
MOVR3,#0
SUBR0,R2,#1
LMOVR1,R3
UMULLR2,R3,R0,R2
MLAR3,R1,R0,R3
SUBSR0,R0,#1
BNEL
Bcheng
END
C语言程序如下:
externintcheng(intn);
intmain()
{
inta=n;//n是具体的值
cheng(a);
while
(1);
}
启动程序如下:
AREAStartup,CODE,READONLY
ENTRY
CODE32
START
MOVR13,#0x40000000
BLmain
END
41、LDR伪指令与LDR加载指令的功能和应用有何区别?
举例说明?
LDR伪指令:
用于将一个立即数读取到相应的寄存器中,需要用等号(=)来连接地址值。
如:
LDRR0,=0xFFF00000
LDR加载指令:
用于从内存中加载数据到寄存器中。
如:
LDRR1,[R0]
42、改错并指出程序功能
AREAJUMP,CODE,READONLY
NUMEQU2
ENTRY
STARTMOVR0,0(#0)
MOVR1,#3
MOVR2,#2
BLFUNC
FUNCCMPR0,#NUM
MOVCSPC,LR
ADRR3,JTABLE
LDRPC,[R3,R0,LSR#2]
JTABLEDCDDOADD
DCDDOSUB
DOADDADDR0,R1,R2
MOVPC,LR
DOSUBSUBR0,R1,R2
MOVPC,LR
END
通过跳转表指令实现两个数2+3的求和。
43、ARM处理器寄存器R0中的数据内容为0x11223344,将其存放到内存地址为0x10000开始的内存单元中,采用小端存储格式和大端存储格式存储,则以内存地址0x10000开始的内存单元中内容分别是多少。
AREAf,CODE,READONLY
ENTRY
CODE32
START
LDRR0,=0x11223344
LDRR1,=0x10000
STRR0,[R1]
BSTART
END
0x1000开始的内存单元中的小端存储格式:
0x44,0x33,0x22,0x11
0x1000开始的内存单元中的大端存储格式:
0x11,0x22,0x33,0x44
44、分析下面程序的执行情况
MOVR0,#0
MOVR1,#10
MOVR2,#1
LADDR0,R0,R2
ADDR2,R2,#1
SUBSR1,R1,#1
BNEL完成(1+2+3+4+5+6+7+8+9+10)
45、分析下面程序实现的功能
COUNTEQU0x40003100
AREAExample2,CODE,READONLY
ENTRY
CODE32
STARTLDRR1,=COUNT
MOVR0,#0
STRR0,[R1]
LOOPLDRR1,=COUNT
LDRR0,[R1]
ADDR0,R0,#1
CMPR0,#10
MOVHIR0,#0
STRR0,[R1]
BLOOP
END
使用LDR指令读取0x40003100上的数据,将数据加1,若结果大于10,则把0写回原地址;若结果小于等于10则使用STR指令把结果写回原地址……周而复此循环;
46、切换处理器方式有哪些方法?
可以通过程序状态寄存器(PSR)的控制位T位来切换。
其中T=0时,处理器工作在ARM态;T=1时,处理器工作在Thumb态。
根据操作数寄存器的状态位(位[0])来切换。
当位[0]为0时,执行BX指令使处理器工作在ARM态;位[0]为1时,执行BX指令使处理器工作在Thumb态。
当处理器发生异常时,进入异常模式进行切换。
把PC放入异常模式链接寄存器中,从异常向量地址开始执行也可以进入ARM状态。
47、下列指令完成的功能是什么?
MOVNESR3,R2,ASR#3;R3=R2/3
ADDSR0,R1,R1,LSL#1;R0=3R1
RSBR3,R4,#2;R3=2-R4
LDRR0,[R1,#6];[R1+6]->R0
LDRR0,[R1,#6]!
;[R1+6]->R0,R0=R0+6
LDRR0,[R1],#6;[R1]->R0,R1=R1+6
LDRR0,=expression;R0=expression(地址值)
SMULLSR0,R1,R2,R3;R2*R3->R0(底32位值),R2*R3->R1(高32位值)
MRSR0,CPSR;把CPSR(当前程序的内容)送到R0中
STMR0,{R1,R4,R2,R3};以R0位首地址向其中存入4个值
48、写出完成下列操作的指令:
1)R0=R1+R2*15/4-R3*5
RSBR2,R2,R2,LSL#4
ADDR0,R1,R2,LSR#2
ADDR3,R3,R3,LSL#2
SUBR0,R0,R3
2)判断bit5是否为0,如果为0则置1
MRSR5,CPSR
TSTR5,#bit5
ORREQR5,R5,#0x00000020;(BIC取反后相与)
MSRCPSR_c,R5
3)用汇编实现1*2*3…*100
AREAjiecheng,CODE,READONLY
CODE32
ENTRY
START
MOVR8,#100
MOVR9,#0
SUBR0,R8,#1
LMOVR1,R9
UMULLR8,R9,R0,R8
MLAR9,R1,R0,R9
SUBSR0,R0,#1
BNEL
BSTART
END
49、在内存单元0x00000030与0x00000034中有2个32位无符号数x,y,要求计算x+y并将结果存入0x00000028单元。
方法一:
AREAwb,CODE,READONLY
ENTRY
CODE32
START
MOVR0,#0x00000030
MOVR1,#0x00000028
LDMIAR0!
{R2,R3};
ADDR4,R2,R3
STRR4,[R1]
BSTART
END
方法二:
AREAwb,CODE,READONLY
ENTRY
CODE32
START
MOVR0,#00000034
LDMDAR0!
,{R1,R2,R3}
ADDR4,R1,R2
STRR4,[R0]
BSTART
END
50、在内存单元0x00000030与0x00000034中有2个32位无符号数x,y,要求若x>y,则0x00000038单元送1;若x≤y,则0x00000038单元送0。
AREAwb,CODE,READONLY
ENTRY
CODE32
START
MOVR0,#0x00000030
LDMIAR0!
{R1,R2};源操作数{R1,R2}为多寄存器寻址
CMPR1,R2
MOVHIR3,#1
MOVLSR3,#0
STRR3,[R0]
BSTART
END
51、在内存单元0x00000030与0x00000034中有2个32位无符号数x,y,要求将x的低8位与y的高24位组合成一个新的数送0x00000038单元中。
AREAwb,CODE,READONLY
ENTRY
CODE32
START
MOVR0,#0x00000030
LDMIAR0!
{R1,R2}
ANDR1,R1,#0x000000FF
BICR2,R2,#0x000000FF
ORRR3,R1,R2
STRR3,[R0]
BSTART
END
52、从内存0x00FF0000开始的区域内存有6个无符号数,将它们移动到0x00000030开始的区域。
AREAwb,CODE,READONLY
ENTRY
CODE32
START
MOVR0,#0x00FF0000
MOVR1,#0x00000030
LDMIAR0!
{R2-R7};源操作数{R2-R7}为块拷贝寻址
STMIAR1!
{R2-R7}
BSTART
END
53、从内存0x00FF0000开始的区域内存有6个无符号数,判断其中是否有数与R0的值相等,若有则将R0清零。
AREAwb,CODE,READONLY
ENTRY
CODE32
STRAT
MOVR1,#0x00FF0000
MOVR2,#6
LLDRR3,[R1],#4
CMPR3,R0
ANDEQR0,R0,#0
SUBSR2,R2,#1
BNEL
BSTART
END
54、编程判断(7*Y/4)>(9*X)的大小关系?
若大于则R5=R5&0xFFF00000,否则R5=R5|0x000000FF。
(设X,Y为无符号整数,X用R0表示,且初值为10,Y用R1表示,初值为20,R5初值为0x0000FF00)
AREAwb,CODE,READONLY
ENTRY
CODE32
START
MOVR0,#10
MOVR1,#20
MOVR5,#0x0000FF00
RSBR1,R1,R1,LSL#3
MOVR1,R1,LSR#2
ADDR0,R0,R0,LSL#3
CMPR1,R0
LDRHIR6,=0xFFFOOOOO
ANDHIR5,R5,R6
ORRR5,R5,#0x000000FF
BSTART
END
55、描述什么是嵌入式系统。
(以应用为中心,以计算机技术为基础,软硬件可裁剪,从而能够适应实际应用中对功能,可靠性,成本,体积,功耗等严格要求的专用计算机系统。
)
56、要求:
根据原理图,编写实现对LED1、LED2、LED3、LED4轮流闪烁(即:
LED1亮、LED2熄灭、LED3亮、LED4熄灭,周而复此),要求具有一定延时(提示:
S3C2410主频为200MHz)
#include"config.h"
//定义LED控制口(输出高电平时点亮LED)
#defineLED1_CON(1<<11)/*GPE11口*/
#defineLED2_CON(1<<12)/*GPE12口*/
#defineLED3_CON(1<<4)/*GPH4口*/
#defineLED4_CON(1<<6)/*GPH6口*/
voidDelayNS(uint32dly)
{
uint32i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
intmain(void)
{
rGPECON=0xFD7FFFFF;
rGPHCON=0x3FDDFF;
while
(1)
{
rGPEDAT=rGPEDAT|(0x01<<11);
DelayNS(5);
rGPEDAT=rGPEDAT&(~(0x01<<12));
DelayNS(5);
rGPHDAT=rGPHDAT|(0x01<<4);
DelayNS(5);
rGPHDAT=rGPHDAT&(~(0x01<<6));
DelayNS(5);
rGPEDAT=rGPEDAT&(~(0x03<<11));
rGPHDAT=rGPHDAT&(~(0x05<<4));
DelayNS(5);
}
return(0);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 期末 考点