《ARM嵌入式系统结构与编程》习题答1.docx
- 文档编号:6685773
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:9
- 大小:23.56KB
《ARM嵌入式系统结构与编程》习题答1.docx
《《ARM嵌入式系统结构与编程》习题答1.docx》由会员分享,可在线阅读,更多相关《《ARM嵌入式系统结构与编程》习题答1.docx(9页珍藏版)》请在冰豆网上搜索。
《ARM嵌入式系统结构与编程》习题答1
1《ARM嵌入式系统结构与编程》习题答案
第1章?
?
1.?
?
?
?
?
?
?
?
?
?
“?
?
?
?
?
”?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
“?
?
?
?
”?
?
?
?
?
?
?
?
?
2.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
20?
?
70?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
30?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Intel?
?
1971?
?
?
?
?
?
?
?
?
4?
?
?
?
?
?
?
?
?
?
4004,?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
80?
?
?
?
8051?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
20?
?
80?
?
?
?
?
?
?
?
?
?
?
“?
?
?
?
?
?
?
?
”,?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
20?
?
90?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
21?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
MCU?
?
?
?
?
?
?
?
?
?
?
?
?
?
ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
3.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
Linux?
?
?
?
?
?
?
?
?
?
uC/OS-II?
?
?
Linux?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Linux?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
uC/OS?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
4.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
“?
?
?
?
”?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
5.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
:
1.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
2.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
3.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
4.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
5.?
?
?
?
?
?
?
?
?
?
?
?
?
?
2?
ARM?
?
?
ARM?
?
?
?
1.?
?
ARM?
?
?
?
?
?
?
?
?
?
?
?
:
ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
ETM(EmbeddedTraceMacro),?
?
ARM?
?
?
?
?
?
?
?
?
?
?
?
ARM?
?
?
?
?
?
?
?
JTAG(JointTestActionGroup?
?
?
12?
?
?
?
?
)?
?
?
?
?
?
?
?
?
?
?
?
?
?
EmbeddedICE?
?
?
ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
CPU?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
CPU?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
ETM?
?
?
?
?
?
?
?
?
?
CPU?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
TAP(TestAccessPort)?
?
?
?
?
?
?
?
?
?
?
?
?
?
(?
?
?
?
?
?
),?
?
?
?
?
?
ARM?
ETM,?
?
?
ICE?
?
?
?
2.?
?
ARM7TDMI-S?
?
?
?
?
?
?
?
?
?
?
:
ARM7TDMI–S?
ARM?
AdvancedRISCMachines?
?
?
7?
?
?
?
;T:
?
?
?
?
?
16?
?
Thumb?
?
?
;D:
?
?
JTAG?
?
?
?
;M:
?
?
?
?
?
?
?
?
?
(64?
?
?
)ARM?
?
?
?
?
?
?
?
?
;;I:
?
?
?
?
?
?
?
?
?
?
ETM,?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;S:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
EDA?
?
?
?
?
?
?
?
3.ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
ARM?
?
?
?
?
?
?
ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
1.?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
2.FIQ?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
(fast)?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
3.IRQ?
?
:
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
(normal)?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
IRQ?
?
?
?
?
?
?
4.SVC?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
23?
5.?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
6.?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
7.?
?
?
?
:
?
?
?
User?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
7?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
6?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
6?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
5?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
4.?
?
?
?
?
?
?
?
?
(PSR)?
?
?
?
?
?
?
?
?
?
C,Z,N,V?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
:
?
N=1-?
?
?
?
0-?
?
?
?
?
0?
Z=1-?
?
?
0,0-?
?
?
?
0?
C=1-?
?
0-?
?
?
V=1-?
?
?
?
0?
?
?
?
?
?
Q?
:
?
?
ARM5TE/J?
?
?
?
?
?
?
?
?
?
DSP?
?
?
?
?
?
?
?
?
?
?
?
:
?
I=1:
?
?
IRQ.?
F=1:
?
?
FIQ.?
TBit?
?
ARMxT?
?
?
?
?
T=0:
?
?
?
?
?
ARM?
?
?
T=1:
?
?
?
?
?
Thumb?
?
?
Mode?
(?
?
?
?
?
?
):
?
0b10000User?
0b10001FIQ?
0b10010IRQ?
0b10011Supervisor34?
0b10111?
0b11011?
0b11111AbortUndefinedSystem
5.?
?
ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
ARM7TDMI?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
BLSWIMOVPC,R14SVCUNDABTFIQIRQABTSVC66534210x000000080x000000040x0000000C0x0000001C0x000000180x000000100x00000000MOVSPC,R14_svc?
?
?
?
?
?
MOVSPC,R14_und?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
SUBSPC,R14_abt,#4SUBSPC,R14_fiq,#4SUBSPC,R14_irq,#4SUBSPC,R14_abt,#8?
?
?
?
?
?
?
ARM7TDMI?
?
?
?
?
?
?
?
:
1.?
?
?
?
LR?
?
?
?
?
?
?
?
?
?
?
2.?
CPSR?
?
?
?
?
?
SPSR?
;3.?
CPSR?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;4.?
?
PC?
?
?
?
?
?
?
?
?
?
?
?
ARM7TDMI?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
Thumb?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
PC?
?
?
?
?
?
?
ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
1.?
LR?
?
?
?
?
?
?
?
?
?
?
PC,?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;2.?
SPSR?
?
?
?
?
CPSR;3.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
CPSR?
?
?
?
?
T?
F?
I?
?
?
?
?
?
?
?
?
?
?
?
?
?
6.ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
ARM7TDMI?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
(Big-endian)45?
?
?
?
?
?
(Little-endian)?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
0?
?
?
?
?
?
7~0?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
0?
?
?
?
?
?
31~24?
7.?
?
?
?
?
?
?
?
?
?
?
(LDR)?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
LDR?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
LDR?
?
?
?
?
?
?
LDR?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
(?
?
?
3?
?
?
)?
?
?
?
MOV?
?
?
?
?
?
?
?
?
8.?
?
ARM9?
5?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
ARM920?
?
?
?
?
?
?
?
5?
?
?
?
.?
?
:
?
?
?
Cache?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
ALU?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
ALU?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
(?
?
?
?
Cache)?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
9.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
56?
?
?
?
?
ORR?
?
?
?
?
?
?
?
?
LDR?
?
?
?
?
?
R4?
?
?
?
?
?
?
?
ORR?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
3?
ARM?
?
?
?
?
?
?
1.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
4?
?
?
?
15?
?
?
?
?
?
0000000100100011010001010110011110001001101010111100110111101111?
?
?
?
?
?
?
EQNECS/HSCC/LOMIPLVSVCHILSGELTGTLEALNVZ=1Z=0C=1C=0N=1N=0V=1V=0C=1,Z=0C=0,Z=1N=VN!
=VZ=0,N=VZ=1,N!
=V?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
(?
?
?
?
?
?
)?
?
?
?
(?
?
?
?
)
2.?
?
?
?
?
?
V?
?
?
?
?
?
?
?
?
?
?
?
?
1?
?
:
V—?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
V=1?
?
?
?
67?
?
?
?
?
?
?
?
?
?
?
?
V?
?
3.?
ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
(?
?
?
8?
?
?
?
4?
?
?
?
)0x54300x1080x3040x5010xfb100000x3340000x3FC0000x1FE00000x55800000x7F8000x39C0000x1FE80000?
:
?
?
?
?
?
?
1?
8?
?
?
?
?
?
?
?
32?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
4?
?
?
?
?
?
?
?
?
?
?
?
?
8?
?
?
?
?
?
?
?
?
?
2*rotate_4?
(?
0,2,4,?
?
?
30)?
?
0X54300000,0000,0000,0000,0101,0100,0011,0000?
?
?
?
?
0X1080000,0000,0000,0000,0000,0001,0000,10000x42?
?
?
?
30?
(rotate_4=0xF)0X3040000,0000,0000,0000,0000,0011,0000,01000xC1?
?
?
?
30?
(rotate_4=0xF)0x5010000,0000,0000,0000,0000,0101,0000,0001?
?
?
?
?
0xfb100000000,1111,1011,0001,0000,0000,0000,0000?
?
?
?
?
0x3340000000,0000,0011,0011,0100,0000,0000,00000Xcd?
?
?
?
18?
(rotate_4=0x9)0x3FC0000000,0000,0011,1111,1100,0000,0000,00000XFF?
?
?
?
18?
(rotate_4=0x9)0x1FE00000000,0001,1111,1110,0000,0000,0000,0000?
?
?
?
?
0x55800000000,0101,0101,1000,0000,0000,0000,0000?
?
?
?
?
0x7F8000000,0000,0000,0111,1111,1000,0000,0000?
?
?
?
?
0x39C0000000,0000,0011,1001,1100,0000,0000,00000XE7?
?
?
?
18?
(rotate_4=0x9)0x1FE800000001,1111,1110,1000,0000,0000,0000,0000?
?
?
?
?
4.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
LSL?
?
?
?
:
3100LSR?
?
?
?
:
3100ASR?
?
?
?
:
78310ROR?
?
?
?
:
310RRX?
?
?
?
?
?
?
?
:
31C0
5.ARM?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
PC?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
5?
?
?
:
1)?
?
?
?
?
?
?
?
?
2)?
?
?
?
?
?
?
?
?
3)?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
5?
?
?
?
4)?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
5)?
?
?
?
?
?
?
?
?
?
?
RRX?
?
?
?
?
?
?
PC(R15)?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
6.?
Load/Store?
?
?
?
?
?
?
?
?
?
?
?
Load/Store?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
Load/Store?
?
?
?
?
?
?
?
?
?
?
?
Load/Store?
?
?
?
?
?
?
?
?
3?
?
?
?
?
?
?
?
?
:
1)Addressing_mode?
?
?
?
?
?
?
?
?
2)Addressing_mode?
?
?
?
?
?
?
?
?
?
?
3)Addressing_mode?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Load/Store?
?
?
?
?
?
?
?
?
2?
?
?
?
?
?
?
?
?
:
1)Addressing_mode?
?
?
?
?
?
?
?
?
2)Addressing_mode?
?
?
?
?
?
?
?
?
?
?
7.?
?
?
Load/Store?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
Load/Store?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
4?
?
?
:
?
?
?
IA(IncrementAfter):
?
?
?
?
?
?
?
?
?
?
4;?
?
?
IB(IncrementBefore):
?
?
?
?
?
?
?
?
?
?
4;?
?
?
DA(DecrementAfter):
?
?
?
?
?
?
?
?
?
?
4;?
?
?
DB(DecrementBefore):
?
?
?
?
?
?
?
?
?
?
4;
8.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Load/Store?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
4?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
FA:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
FD:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
EA:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
89?
?
?
?
?
ED:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
9.?
?
?
?
?
?
?
?
/?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
/?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
LDR/STR?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Addressing_mode?
?
?
?
?
?
8?
?
?
?
?
?
?
?
?
?
?
?
?
?
3?
:
•?
?
?
?
?
?
?
?
:
[
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Rn?
?
?
/?
?
imm_offset8?
4?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
4,?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
•?
?
?
?
?
?
?
:
[
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Rn?
?
?
/?
?
imm_offset8?
4?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
4,?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
寄存器。
•后变址回写形式:
[
最后将Rn值加上/减去imm_offset8的4倍写回到基址寄存器Rn(更新基地址寄存器)。
10.写出下列指令的机器码,并分析指令操作功能。
MOVR0,R1MOVR1,,0X198ADDEQSR1,R2,,0xABCMPR2,#0XabLDRR0,[R1,#4]STRR0,[R1,R1,LSL#2]!
LDRHR0,[R1,#4]LDRSBR0,[R2,#-2]!
STRBR1,[R2,#0Xa0]910LDMIAR0,{R1,R2,R8}STMDBR0!
{R1-R5,R10,R11}STMEDSP!
{R0-R3,LR}答:
机器码部分略。
MOVR0,R1;R0《-----R1MOVR1,,0X198;R0《----0X198ADDEQSR1,R2,,0xAB;当Z=1时,R1《---R2+0xAB并影响标志位CMPR2,#0Xab;R2-0xAB,并影响标志位LDRR0,[R1,#4];R0《---【R1+4】STRR0,[R1,R1,LSL#2]!
;【R1+R1*4】《---R0,R1=R1+R1*4LDRHR0,[R1,#4];R0《---【R1+4】半字,R0的高16位清零LDRSBR0,[R2,#-2]!
;R0《---【R2-2】字节,R0有符号扩展为32位,R2=R2-2STRBR1,[R2,#0Xa0];【R2+0Xa0】《----R1低8位,LDMIAR0,{R1,R2,R8};将内存单元【R0】~【R+11】以字为单位读取到R1,R2,R8中STMDBR0!
{R1-R5,R10,R11}将寄存器R1~R5,R10,R11的值以字为单位依次写入【R0】中,每写一个字之前R0=R0-4STMEDSP!
{R0-R3,LR}将寄存器R0~R3,LR的的值以字为单位依次写入【SP】中,每写一个字之后SP=SP-4
第4章ARM指令集系统
1.ARM指令可分为哪几类?
说出哪几条指令是无条件执行的。
答:
ARM微处理器的指令集可以分为:
数据处理指令,分支指令,加载/存储指令,批量加载/存储指令,交换指令,程序状态寄存器(PSR)处理指令,协处理器操作指令和异常产生指令八大类。
几乎所有的ARM指令都是可以有条件执行的。
带链接和状态切换的跳转指令BLX,当目标地址由程序标号给出时,即:
BLX
2.如何实现两个64位数的加法操作,如何实现两个64位数的减法操作,如何求一个64位数的负数?
答:
1)使用ADC实现64位加法,结果存于R1、R0中:
ADDSR0,R0,R2;R0等于低32位相加,并影响标志位ADCR1,R1,R3;R1等于高32位相加,并加上低位进位2)使用SBC实现64位减法,结果存于R1、R0中:
SUBSR0,R0,R2;低32位相减,并影响标志位SBCR1,R1,R3;高32位相减,并减去低位借位3)使用RSC指令实现求64位数值的负数:
RSBSR2,R0,#0RSCR3,R1,#0
3.写出LDRB指令与LDRSB指令的二进制编码格式,并指出它们之间的区别。
答:
LDRB指令的二进制编码格式:
1011LDRSB?
?
?
?
?
?
?
?
?
?
:
LDRB?
?
?
?
?
?
?
?
?
?
?
8?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
8?
?
?
?
?
?
?
24?
?
?
?
?
?
LDRSB?
?
?
?
?
?
?
?
?
?
?
8?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
8?
?
?
?
?
?
?
24?
?
?
?
?
?
?
?
4.?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM嵌入式系统结构与编程 ARM 嵌入式 系统 结构 编程 习题