对于ARM7三级流水线,当一条指令被译码时,上一条指令正被(④)p24 ①取指 ②译码 ③PC值递增 ④执行
对于ARM7三级流水线,当一条指令被译码时,下一条指令正被(① )p24 ①取指 ②译码 ③PC值递增 ④执行
ARM7TDMI采用三级流水线?采用冯.诺依曼体系结构。
ARM7有(两种)处理器状态 ,分别是(ARM)状态和(Thumb) 状态。P30
ARM7有(7种)处理器模式,分别是(用户)、(快中断)、(中断)、(管理)、(中止)、(未定义)、(系统模式),其中5种异常模式是(快中断)、(中断)、(管理)、(中止)、(未定义)模式。P42~p44
(用户模式)是正常程序工作模式,特点是不能(直接)切换到其它模式。 (管理模式)是“操作系统保护代码”,复位和软中断响应时进入此模式。
系统模式用于支持操作系统的(特权)任务等,与用户模式类似,但可以(直接)切换到其它模式。
在ARM7 (37)个用户可见寄存器中,有(6)个状态寄存器,(31)个通用寄存器。程序计数器PC是(R15),程序状态寄存器是(CPSR),链接寄存器LR是(R14),堆栈指针SP是(R13)。P47~p49
CPSR有若干控制位和若干条件代码标志构成:T为0 表示处理器工作在(ARM状态). p80~p87
CPSR有若干控制位和若干条件代码标志构成:N为1表示前次运算结果(为负)。 CPSR有若干控制位和若干条件代码标志构成:Z为1表示前次运算结果(为零)。
CPSR有若干控制位和若干条件代码标志构成:C为1表示前次运算产生了(进位/借位)。 CPSR有若干控制位和若干条件代码标志构成:V为1表示前次运算(溢出)。 若前次运算结果为负数,则CPSR的( ①)为1 ①N ②Z ③C ④V
若前次运算结果为零,则CPSR的( ②)为1 ①N ②Z ③C ④V
若前次运算产生了进位/借位,则CPSR的(③ )为1 ①N ②Z ③C ④V
若前次运算溢出,则CPSR的( ④)为1 ①N ②Z ③C ④V
欲使处理器禁止快中断,则应该使(①) ① CPSR的F位为1 ②CPSR的F位为0 ③CPSR的I位为1 ④CPSR的I位为0 欲使处理器禁止中断,则应该使(③ )
CPSR的F位为1 ②CPSR的F位为0 ③CPSR的I位为1 ④CPSR的I位为0
异常复习 p3~p12
子程序的最后一条指令必须是( ①)P3
①MOV PC,R14 ②MOV PC,R14_und ③SUBS PC,R14_fig,#4 ④SUBS PC,R14_irg,#4 中断服务程序的最后一条指令必须是( ④)P3
①MOV PC,R14 ②MOV PC,R14_und ③SUBS PC,R14_fig,#4 ④SUBS PC,R14_irg,#4 快中断服务程序的最后一条指令必须是( ③)
①MOV PC,R14 ②MOV PC,R14_und ③SUBS PC,R14_fig,#4 ④SUBS PC,R14_irg,#4 P3 ARM7处理器响应中断时,处理器硬件修改PC为(③ )p22 ①0x00000000 ②0x00000000 ③0x00000018 ④0x0000001C ARM7处理器响应快中断时,处理器硬件修改PC为( ④) ①0x00000000 ②0x00000000 ③0x00000018 ④0x0000001C 外部设备向处理器发出中断请求,处理器进入( ②)异常。 ①快中断 ②中断 ③未定义指令 ④预取中止
ARM7处理器收到快中断请求,则进入(① )异常。 ①快中断 ②中断 ③未定义指令 ④预取中止
第四章 ARM7的寻址方式有( ④)种。P6 ① 6 ②7 ③8 ④9
条件码复习 p35~p36
使用指令条件码可实现高效的逻辑操作,提高代码效率。指令条件码表如表4.1所列。 指令条件码表 操作码 0000 0001 1000 1001 条件码助记符 EQ NE HI LS 标志 Z=1 Z=0 C=1,Z=0 C=0,Z=1 含义 相等 不相等 无符号数大于 无符号数小于或等于 ARM指令的条件码的作用是满足了(条件)则执行指令。
P39~p41
处理器从存储器读数据的指令(加载指令)的助记符是(①) ①LDR ②STR ③SWP ④SWPB
处理器往存储器写数据的指令(存储指令)的助记符是(①) ①LDR ②STR ③SWP ④SWPB
将R0+0x12地址处的数据读出,保存到R1中
LDR R1,[R0,#0x12] 将R1中数据保存到R0+0x12地址处
STR R1,[R0,#0x12]
将R0-0x12地址处的数据读出,保存到R1中
LDR R1,[R0,-#0x12] 将R1中的数据保存到R0-0x12地址处
STR R1,[R0,-#0x12]
将R0+R2地址处的数据读出,保存到R1中
LDR R1,[R1,R2]
将R1中数据保存到R0+R2地址处
STR R1,[R1,R2]
将R0-R2地址处的数据读出,保存到R1中
LDR R1,[R0,-R2]
将R1中的数据保存到R0-R2地址处
STR R1,[R0,-R2]
P60~p62
数据传送指令的助记符是(①)。 ① MOV ②SBC ③ADD ④SUB 代进位加法指令的助记符是(① ) ①ADC ②SBC ③ADD ④SUB 代借位减法指令的助记符是(② ) ①ADC ②SBC ③ADD ④SUB 求R1+R2,和放在R1中
ADD R1,R1,R2 求R1-R2,差放在R1中
SUB R1,R1,R2
求R4R3-R2R1,差放在R6R5中 SUBS R5,R3,R1 SBC R6,R4,R2
求R4R3+R2R1,和放在R6R5中 ADDS R5,R3,R1 ADC R6,R4,R2 求R4R3-1,差放在R6R5中 SUBS R5,R3,#1 SBC R6,R4,#0
求R4R3+1,和放在R6R5中 ADDS R5,R3,#1 ADC R6,R4,#0
P69
将R0最第4位数据保留,并影响标志位 ANDS R0,R0,#0x0F 将R0的1,3,5位置1 ORR R0,R0,#0x2A 将R0的1,3,5位置0 BIC R0,R0,0x2A
P75,p76
R1与99比较,设置相关标志位 CMP R1,#99 R1与R2比较,设置相关标志位
CMP R1,R2 P96
跳转到标号waiter处 B waiter
前次运算结果为正,转到标号play处 BHI play
前次运算结果为非正,转到标号play处 BLS play 调用子程序whiet BL whiet
前次运算结果为0,调用子程序ply BLEQ ply
前次运算结果为非0,调用子程序ply BLNE ply
调用子程序是用(BL)指令?子程序返回指令是(MOV PC,R14)
编程题:
写一个程序,判断R1的值是否大于0x30,是则将R1减去0x30。
CMP R1,0x30
SUBHI R1,R1,0x30
编写实现两个寄存器R0,R1相加的子程序。 ADD_SUB
ADDS R0,R0,R1 ;R0=R0+R1 MOV PC,LR ;子程序返回 END ;文件结束
P119~p122
将CPSR状态寄存器读取,保存到R1中
MRS R1,CPSR
将SPSR状态寄存器读出,保存到R2中
MRS R2,SPSR
程序清单4.3 使能IRQ中断 ENABLE-IRQ
MRS R0,CPSR BIC R0,R0,#0X80 MSR CPSR_C,R0 MOV PC,LR 程序清单4.4 禁能IRQ中断 DISABLE_IRQ