《ARM嵌入式系统结构与编程》习题答1Word文件下载.docx
《《ARM嵌入式系统结构与编程》习题答1Word文件下载.docx》由会员分享,可在线阅读,更多相关《《ARM嵌入式系统结构与编程》习题答1Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
3.?
Linux?
uC/OS-II?
uC/OS?
4.?
“?
5.?
1.?
3.?
5.?
2?
ARM?
ETM(EmbeddedTraceMacro),?
JTAG(JointTestActionGroup?
12?
)?
EmbeddedICE?
CPU?
ETM?
TAP(TestAccessPort)?
(?
),?
ETM,?
ICE?
2.?
ARM7TDMI-S?
ARM7TDMI–S?
AdvancedRISCMachines?
7?
;
T:
16?
Thumb?
D:
JTAG?
M:
(64?
)ARM?
;
I:
ETM,?
S:
EDA?
3.ARM?
1.?
2.FIQ?
(fast)?
3.IRQ?
:
(normal)?
IRQ?
4.SVC?
23?
5.?
6.?
7.?
User?
6?
5?
4.?
(PSR)?
C,Z,N,V?
N=1-?
0-?
0?
Z=1-?
0,0-?
C=1-?
V=1-?
0?
Q?
ARM5TE/J?
DSP?
I=1:
IRQ.?
F=1:
FIQ.?
TBit?
ARMxT?
T=0:
T=1:
Mode?
):
0b10000User?
0b10001FIQ?
0b10010IRQ?
0b10011Supervisor34?
0b10111?
0b11011?
0b11111AbortUndefinedSystem
5.?
ARM7TDMI?
BLSWIMOVPC,R14SVCUNDABTFIQIRQABTSVC66534210x000000080x000000040x0000000C0x0000001C0x000000180x000000100x00000000MOVSPC,R14_svc?
MOVSPC,R14_und?
SUBSPC,R14_abt,#4SUBSPC,R14_fiq,#4SUBSPC,R14_irq,#4SUBSPC,R14_abt,#8?
LR?
2.?
CPSR?
SPSR?
3.?
4.?
PC?
ARM7TDMI?
PC,?
CPSR;
3.?
T?
F?
I?
6.ARM?
ARM7TDMI?
(Big-endian)45?
(Little-endian)?
7~0?
31~24?
7.?
(LDR)?
LDR?
3?
)?
MOV?
8.?
ARM9?
ARM920?
.?
Cache?
ALU?
Cache)?
9.?
56?
ORR?
R4?
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?
8?
)0x54300x1080x3040x5010xfb100000x3340000x3FC0000x1FE00000x55800000x7F8000x39C0000x1FE80000?
1?
32?
2*rotate_4?
(?
0,2,4,?
30)?
0X54300000,0000,0000,0000,0101,0100,0011,0000?
0X1080000,0000,0000,0000,0000,0001,0000,10000x42?
(rotate_4=0xF)0X3040000,0000,0000,0000,0000,0011,0000,01000xC1?
(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?
(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?
(rotate_4=0x9)0x1FE800000001,1111,1110,1000,0000,0000,0000,0000?
LSL?
:
3100LSR?
3100ASR?
78310ROR?
310RRX?
31C0
5.ARM?
1)?
2)?
3)?
4)?
5)?
RRX?
PC(R15)?
6.?
Load/Store?
1)Addressing_mode?
2)Addressing_mode?
3)Addressing_mode?
7.?
IA(IncrementAfter):
4;
IB(IncrementBefore):
4;
DA(DecrementAfter):
DB(DecrementBefore):
8.?
FA:
FD:
EA:
89?
ED:
9.?
/?
LDR/STR?
Addressing_mode?
•?
[<
Rn>
#+/-<
imm_offset8>
*4]?
Rn?
imm_offset8?
4,?
[<
*4]!
寄存器。
•后变址回写形式:
],#+/-<
*4内存地址为基址寄存器Rn的值,当存储器操作完成后,将基地址寄存器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<
target_address>
由于指令码中是没有条件编码位的,所以指令是无条件执行的。
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?
24?
LDRSB?