第三章 习题【嵌入式系统结构】
- 前言
- 推荐
- 第三章 习题【嵌入式系统结构】
- 讨论
- 作业活动-多寄存器存取访问指令
- 作业活动-内存读取操作及结果
- 作业活动-汇编与C语言代码段编程
- 测试活动-寻址方式、指令判断与应用
- 最后
前言
2023-3-28 17:07:55
以下内容源自《【嵌入式系统结构】》
仅供学习交流使用
推荐
第二章 测验【嵌入式系统】
第三章 习题【嵌入式系统结构】
讨论
试说明MOV指令、LDR加载指令和LDR伪指令三者的区别,从指令含义,指令形式和使用的限制方面分析,举例说明其区别。
MOV指令是把立即数、寄存器或寄存器移位后的数送给目标寄存器,可能会影响 标志位。
LDR指令是将存储器中的数据按给定地址加载到寄存器中,数据来自存储器,目标也是寄存器,不影响标志位。
LDR伪指令(LDR 目标寄存器,=表达式)用于加载32位的立即数或一个地址值到指定寄存器,形式上与LDR指令有区别。
作业活动-多寄存器存取访问指令
如果ARM处理器中各寄存器及存储单元参数如下图所示,试写出执行下列指令后,各寄存器及存储单元中内容变化情况。
⑴ STMIA R13!, {R0-R3} ⑵LDMDB R13!, { R0-R3}
要求给出这两条指令分别执行后,存储器单元和对应寄存器单元的值,直观给出答案
(1)按照修改后的图重新完成该题目,根据图和要求完成题目;
(2)注意地址方向,通过画图软件直接填写对应存储器单元和寄存器单元变化情况;
(3)STMIA R13!,{R0-R3}题目仅仅给出地址变化,意思表达正确,但没有填写具体数值,给2分,地址变化错,0分;
(4) LDMDB R13! , { R0-R3} 题目仅仅给出地址变化,意思表达正确,但没有填写具体数值,给2分,地址变化错,0分;答:
作业活动-内存读取操作及结果
参照附件图,图中给出了内存数据区地址和数据,按图右侧方框要求填空并回答问题。
(1)R1-R4四个寄存器值分别是多少?
(2)存储单元0x40001000的值是多少?
答:
作业活动-汇编与C语言代码段编程
1、 分析下列两段程序片断的功能,试用类C语言写出其等价功能。
(1)程序片断1:
CMP R1, R2
ADDHI R1 , R1 , #1
ADDLS R2 , R2 , #1
(2)程序片断2:
CMP R0 , #20
CMPNE R1 , #30
ADDNE R0 , R0 , R1
2、 使用ARM汇编指令的条件执行功能,试用汇编语言实现下列两段C代码语句的功能。
⑴
if(x = = y)
a = b - c;
else
a = b + c;
⑵
if(x = = y) && ( a = = b)
c = c * 8;
答:
1、(1)
if (R0>R1)
R0++;
else
R1++;
1、(2)
if ((R0==20)&&(R1!=30))
R0 =R0+R1;
2、(1)
LDR R0,x
LDR R1,y
LDR R2,b
LDR R3, c
CMP R0,R1
ADDEQ R4,R2,R3
SUBNE R4,R2,R3
STR R4,a
2、(2)
LDR R0,x
LDR R1,y
LDR R2,a
LDR R3,b
LDR R4,c
CMP R0,R1
CMPEQ R2,R3
MULEQ R4,R4,#8
STR R4,c
测试活动-寻址方式、指令判断与应用
第3章 ARM7指令系统
1单选题
判断以下哪条指令是正确的?
A. MOVS R1, 101
B. STMDA R11!, {R2-R8}
C. ADD R3, [R3], R7
D. LDR R11, [R15,R8] !
正确答案: B
你的作答: B
解析
STMDA R11!, {R2-R8}指令为多寄存器存储指令
2单选题
判断指令正确与否?
MVN R1, #0x10F
A. 错误,操作数不对
B. 指令正确
正确答案: A
你的作答: A
解析
操作数不符合规范
3单选题
指令LDR R1, [R3], #0x04 寻址方式为:
A. 立即数寻址
B. 基址变址寻址
C. 寄存器间接寻址
D. 多寄存器寻址
正确答案: B
你的作答: B
解析
基址变址寻址
4单选题
指令MOV R1, R1, ROR #2寻址方式为:
A. 立即数寻址
B. 寄存器移位寻址
C. 寄存器寻址
D. 寄存器间接寻址
正确答案: B
你的作答: B
解析
寄存器移位寻址
5单选题
指令STR R2, [R4, #0x02]! 寻址方式为:
A. 基址变址寻址
B. 寄存器间接寻址
C. 寄存器寻址
D. 相对寻址
正确答案: A
你的作答: A
解析
基址变址寻址
6单选题
指令 LDMIA R0!, {R1-R5} 寻址方式为:
A. 寄存器寻址
B. 多寄存器寻址
C. 堆栈寻址
D. 立即数寻址
正确答案: B
你的作答: B
7单选题
指令MVN R0, #0x0F2寻址方式为:
A. 立即数寻址
B. 寄存器寻址
C. 寄存器间接寻址
D. 多寄存器寻址
正确答案: A
你的作答: A
解析
立即数寻址方式
8单选题
指令LDR R0, [R2] 寻址方式为:
A. 寄存器寻址
B. 寄存器间接寻址
C. 立即数寻址
D. 寄存器移位寻址
正确答案: B
你的作答: B
9单选题
指令SUB R0, R1, R2第2操作数的寻址方式为:
A. 寄存器寻址
B. 寄存器间接寻址
正确答案: A
你的作答: A
解析
寄存器寻址方式
10单选
判断指令以下指令,哪条指令是错误的?
A. AND R1,R2, #0x0F
B. MOV R1, #0xC000
C. MOV R1,#0x3F300
D. AND R1, R2, #0x3FC00
正确答案: C
你的作答: C
解析
MOV R1,#0x3F300指令中 常数不符合要求。
11多选题
ARM7中汇编指令组成形式如下,其中对第2操作数的说法哪些事正确的?( )<opcode> {<cond>} {S} <Rd> , <Rn> {,<operand2>}
A. #immed_8r——常数表达式,即是由一个8位的常数循环右移偶数位得到;
B. Rm——寄存器方式
C. Rm,shift——寄存器移位方式
D. 随意的一个32位立即数都可以做第2操作数
正确答案: ABC
你的作答: ABC
12单选题
以下对ARM指令集以及Thumb指令集特点的描述哪个是错误的?
A. ARM指令集效率高,但是代码密度低
B. Thumb指令集具有较高的代码密度,并保持ARM的大多数性能上的优势,它是ARM指令集的子集
C. ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。
D. ARM指令集效率低,但是代码密度高
正确答案: D
你的作答: D
解析
只有“ARM指令集效率低,但是代码密度高”描述是错误的
13单选题
ARM汇编程序,文件类型为 ,
A. “.S”
B. “.C”
正确答案: A
你的作答: A
解析
ARM汇编代码文件类型,“*.S”
14判断题
LDR R5 , [R6, #0x04]指令执行R5、R6寄存器单元的值都会发生改变。
正确答案: 错误
你的作答: 错误
15判断题
STMFD SP!,{R1~R7,LR} 该指令是入栈操作。
正确答案: 正确
你的作答: 正确
16判断题
在ARM系统中指令LDR R3 , [R0,#4]! 执行后R0的值不变。
正确答案: 错误
你的作答: 错误
17单选题
欲将存储器单元地址为0x40003000的字数据加载到R0寄存器中,以下语句正确的是________。
A. MOV R0, [0x40003000]
B. MOV R1,#0x40003000
C. LDR R0,=0x40003000
D. LDR R1, =0x40003000 LDR R0, [R1]
正确答案: D
你的作答: D
18单选题
若 R1=2000H, (2000H) =0x86, (2008H) =0x39, 则执行指令 LDR R0, [R1, # 8] ! 后 R0的值为
A. 0x2000
B. 0x86
C. 0x2008
D. 0x39
正确答案: D
你的作答: D
解析
后索引方式,存储器读取数据
19单选题
指令LDMIA R1!, {R2-R4,R6} 与
LDMIA R1, {R2-R4,R6} 完成功能哪个说法正确?
A. 这两条指令完成的功能完全相同
B. 这两条指令都能实现将R1指向的内存数据读取到R0-R4和R6寄存器中的功能,但有区别。
正确答案: B
你的作答: B
解析
存取器指令中指针带!与不带!有区别
20单选题
判断指令是否正确:
LDMIB R0!, { R5-R8, R2} ;
A. 正确
B. 错误
正确答案: B
你的作答: B
解析
多寄存器访问指令寄存器的序号方向:从小到大,不能乱序
21多选题
以下程序段对应实现特定功能,哪些对应说法是正确的?
A. 以下指令能实现打开IRQ中断的功能
MRS R0,CPSR ;
BIC R1,R0,#0x80 ;
MSR CPSR_c, R1 ;
B. 以下指令能实现打开FIQ中断的功能
MRS R0,CPSR ;
ORR R1,R0,#0x40 ;
MSR CPSR_c, R1 ;
C. 以下指令能实现禁止IRQ中断的功能
MRS R0,CPSR;
ORR R1,R0,#0x80 ;
MSR CPSR_c, R1 ;
D. 以下指令能实现禁止FIQ中断的功能
MRS R0,CPSR ;
BIC R1,R0,#0x40 ;
MSR CPSR_c, R1 ;
正确答案: AC
你的作答: AC
解析
寄存器状态读取指令对应I、F位的设置
22多选题
以下哪条指令及注释说明都正确?
A. MRS R1,CPSR ; 读取CPSR状态寄存器到R1
B. MSR CPSR_c,R0;将R0的内容写入CPSR寄存器的控制位域
C. MRS R1,CPSR ; 将R1的内容写入CPSR寄存器
D. MSR CPSR_c,R0;将R0的内容写入CPSR寄存器的四个字节
正确答案: AB
你的作答: AD
解析
这两条指令正确,注释说明也正确
MRS R1,CPSR ; 读取CPSR状态寄存器到R1
MSR CPSR_c,R0;将R0的内容写入CPSR寄存器的控制位域
23多选题
关于ARM程序中如何实现跳转,以下哪种说法是正确的:
A. 直接向PC寄存器赋值实现跳转,预先把PC值存放到R14,程序返回时可以这样操作 例: MOV PC,R14
B. 不管R1原来是什么值,随意给PC赋值就能实现跳转,例: MOV PC, R1
C. 使用分支指令直接跳转。通过B、BL、BX指令都可以实现程序的分支跳转
D. 通过B、BL、BX指令都不能实现程序的分支跳转
正确答案: AC
你的作答: AC
解析
在ARM中有两种方式可以实现程序的跳转:
1.直接向PC寄存器赋值实现跳转; 例: MOV PC,R14
2.使用分支指令直接跳转。
24单选题
判断哪条指令是正确的?
BXS R0 ;
BX R0 ;
A. BXS R0 指令正确
B. BX R0 指令正确
C. 这两条指令都正确
BXS R0 ;
BX R0 ;
D. 这两条指令都不正确
BXS R0 ;
BX R0 ;
正确答案: B
你的作答: B
解析
BXS R0 ;错误,切换状态不带S,BX R0 指令时正确的。
25多选题
判断下边指令是否正确,哪些说法是正确的?
ADD R0!, R2, #4 ;
LDR R4, [R5] ;
LDMFDS R0!, { R5-R8, R2} ;
ADD R3, [R3], R7 ;
A. LDR R4, [R5] ;该指令正确
B. 这两条指令都有问题
ADD R0!, R2, #4 ;
ADD R3, [R3], R7 ;
C. LDMFDS R0!, { R5-R8, R2} ;该指令正确
D. 四条指令都正确
正确答案: AB
你的作答: AB
解析
LDMFDS R0!, { R5-R8, R2} ;错带S指令无法识别,序号也有问题,应该从小到大排列;
ADD R0!, R2, #4 ; ADD R3, [R3], R7 ;这两条加法指令都有问题
26单选题
判断指令正确与否,哪个说法是正确的?
LDMIA R11!, {R2-R8}
A. 指令正确,完成多寄存器加载操作
B. 指令错误,应该取消!
C. 指令错误,!位置应放在{R2-R8}!
D. 把{R2-R8}多个寄存器的内容写入R11指向的位置
正确答案: A
你的作答: A
解析
指令正确,完成多寄存器加载操作。LDMIA R11!, {R2-R8},该指令完成R11指向的内存多个单元内容加载送给R2-R8寄存器的操作。
27单选题
判断指令正确与否?
STMDA R11, {R2-R8}!
A. 正确,多寄存器操作指令
B. 错误,!位置不对
正确答案: B
你的作答: B
解析
STMDA R11!, {R2-R8},或STMDA R11, {R2-R8}指令都是合法指令。
28单选题
判断指令对错:MVN R1, #0x10F
A. 正确
B. 错误
正确答案: B
你的作答: B
解析
立即数符合规定
最后
2023-3-28 17:23:03
祝大家逢考必过
点赞收藏关注哦