嵌入式期末复习题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章复习题目
1.存储一个32位数0x876165到2000H~2003H四个字节单元中,若以小端模式存
储,则2000H存储单元的内容为( C)。
A、0x00
B、0x87
C、0x65
D、0x61
2.存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为( D)。
A、0x21
B、0x68
C、0x65
D、0x02
3.若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令LDR R0,[R1,#8]!后R0的值为(D )。
A. 0x2000
B. 0x86
C. 0x2008
D. 0x39
R2,[R3,#128] 的寻址方式是( C )。
A. 寄存器寻址
B. 寄存器移位
C. 变址寻址
D. 间接寻址
5.若一条分支指令为 B next,next为偏移量,其值等于0x000080,该指令在存储器存储单元的地址若为0x00000018,那么该指令执行后,将转移到地址为______处接着执行。
6.ARM微处理器既可以访问字节,即一次读/写8位二进制数据,也可以访问字,即一次读写32位二进制数,下面可以作为字地址的是_________。
xxxx是无条件转移指令,无条件转移指令转移地址计算公式是:目标地址=指令地址+8+偏移量;所以目标地址=0X00000018+8+0x000080=0x000000A0。
6.一个字32位,占四个字节,如何保证字不错位,要求字地址是四的整倍数,该题只有0x是四的整倍数,那么要求字节与字都能访问,只有选择0x,顺便说一下,字节任何地址都可以
第三章指令类型复习题目
1、多寄存器存储指令STMFD SP![R0-R12,R14]完成了把存储器R0到R12,以及寄存器R14进行压栈保护功能。若带链接的分支指令在执行后转移到此STM指令处,那么若要返回分支处,用一条什么指令来实现为什么
2、ARM9微处理器的指令MOV R3,#ox81,ROR #31完成的是给R3寄存器赋予一个数值,经过这条指令的运算后R3寄存器的值是多少为什么
3、①写一条 ARM 指令,完成操作r1 = r2 * 3;②说明指令STMIA r12!,{r0-r11}的操作功能。
4.假设R0的内容为0x8000,寄存器R1,R2的内容分别为0x01与0x10,存储器内容为0.连续执行下述指令后,说明每条指令执行后PC如何变化存储器及寄存器的内容如何变化
STMIB R0!,{R1,R2}
LDMIA R0!,{R1,R2}
1、答:LDMFD SP![R0-R12,R15],(4分)子程序调用时(即带链接的分支指令BL执行时)STMFD、LDMFD是保存和恢复现场通用的指令,在压栈时,R14寄存器(即链接寄存器LR)的内容必须保存到堆栈中,(3分)出栈时把堆栈中对应的R14的内容,出栈到PC寄存器中,这样就可以保证子程序完成后的正确的返回。(3分)
2、答:R3的值为OX102,(4分)原始数据(二进制)00000000 00000000 00000000 右循环31位,等于左循环移1位,(4分)如右循环32位,原值不变,所以为:00000000 00000000 00000001 00000010 即:0x102。(2分)
3、答:①、ADD R1,R2,R2,LSL #1(4分);②将R0-R11十二个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,(4分)地址的操作方式是先操作、后增加,并更新地址。(2分)
4解:执行STMIB R0!,{R1,
R2}
PC=PC+4
[0x8004]=0x01
[0x8008]=0x10
R1,R2内容不变
R0=R0+8=8008
注意:黑色为指令执行前,蓝色
为指令执行后
备注(IB为传送前地址值加4);备注STM为将处理器内部寄存器的内容传至存储器中;具体描述将寄存器内容传至R0寄存器所指存储器地址单元内部。
执行LDMIA R0!,{R1,R2}
PC=PC+4
R1=[0x8008]=0x00000010
R2=[0x800C]=未知
R0=R0+8=0x8010
注意:蓝色为指令执行前,红色
为指令执行后
备注(IA为传送数据后地址加4);备注LDM为存储器出栈操作指令,将R0地址单元处所对应的数据传至寄存器R1中。
第7章
1.若一个采用S3C2440芯片为核心开发的嵌入式系统需要看门狗功能,监测系统程序的周期不大于40us,PCLK=50MHz。那么,我们需要使用下面一段程序来完成初始化看门狗:计算看门狗重启的时间计算
ldr r0,=WTDAT ;WTDAT寄存器对应的地址赋给R0
ldr r1,=0x7d ;计数器初始值
str r1,[r0]
ldr r0,=WTCON ;WTCON寄存器对应的地址赋给R0
ldr r1,=0x0021 ;使能看门狗及其复位功能,分割器值设为16
str r1,[r0]
解释:看门狗定时器计数值????
1)输入到计数器的时钟周期
t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor )
预分频器Prescaler及分频因子Division factor的值由用户在WTCON(看门狗时钟控制寄存器)中设置。PCLK为系统运行频率,如200MHZ。
2)看门狗的定时周期
T = WTCNT * t_watchdog