您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > ARM课后习题及答案
《ARM嵌入式系统基础教程》第二版周立功北航出版社第二章ARM7体系结构1、基础知识(1)ARM7TDMI中的TDMI为何含义?这四个字母分别代表ARM7的一个特点,T:高密度16位Thumb指令集扩展,D:支持片上调试,M:64位乘法指令,I:带嵌入式ICE硬件仿真功能模块(2)ARM7TDMI采用几级流水线?使用何种存储器编址方式?ARM7为三级流水线(ARM9为五级),注意PC指向的是正在取指的指令,而非执行的指令。是(3)ARM处理器模式和ARM处理器状态有何区别?模式指指令集,即出于ARM模式还是Thumb模式;状态指七种状态,即用户、管理、中断、快速中断、中止、未定义、系统等。(4)分别列举ARM的处理器模式和状态见(3)(5)PC和LR分别使用哪个寄存器?PC:R15LR:R14SP:R13(6)R13寄存器的通用功能是什么?堆栈指针(7)CPSR寄存器中哪些位用来定义处理器状态?低5位。CPSR寄存器详细格式如下:31302928...76543210NZCV保留IFTM4M3M2M1M0(8)如何禁止IRQ和FIQ中断?将CPSR寄存器的I位和F位置1。2、存储器格式定义R0=0x12345678,使用存储指令将R0的值存放在0x4000单元。若存储器格式为大端格式,将0x4000单元的值取到R2中,会是多少呢?若小端格式呢?先说小端模式,小端指低字节在低地址,是顺着的。小端模式时,数据存储如下:地址:0x40030x40020x40010x4000数据:0x120x340x560x78大端模式时,地址:0x40030x40020x40010x4000数据:0x780x560x340x12而无论数据如何存储,将0x4000单元的值取到R2中,都是顺序读的。所以小端模式时,R2中的值为0x78563412,大端模式时是0x12345678。3、处理器异常请描述一下ARM7TDMI产生异常的条件。各种异常会使处理器进入哪种模式?进入异常时内核有何操作?各种异常的返回指令又是什么?第三章、ARM7TDMI指令系统1.(1)ARM7TDMI有几种寻址方式?LDRR1,[R0,#0x08]属于哪种?共有7种寻址方式,略述如下:寄存器寻址:MOVR1,R2立即寻址:MOVR1,#0x0707寄存器移位寻址:MOVR1,R2,LSL#2寄存器间接寻址:LDRR1,[R2]基址寻址:LDRR1,[R2,#0x03]多寄存器寻址:LDMIAR1,{R2-R7,R12}堆栈寻址:STMFDSP,{R1-R7,LR}相对寻址:即跳转故,题中提问的寻址方式为基址寻址(2)ARM指令的条件码有多少个?默认条件码是什么?条件码共有16个,分别为相等、不等、无符号数大于或等于、无符号数大于、无符号数小于、无符号数小于或等于、有符号数大于或等于、有符号数小于、有符号数大于、有符号数小于或等于、负数、正数或零、溢出、未溢出、无条件执行、从不执行。默认条件码为无条件执行(AL)(3)ARM指令中,第二个操作数有哪几种形式?列举5个8位图立即数。有三种形式:常数表达式(必须为8位图立即数)MOVR0,#1寄存器方式MOVPC,R0寄存器移位方式ADDR1,R1,R1,LSL#3;R1=R1*9所谓8位图立即数,是指由一个8位数循环移动偶数位得到的。之所以做这样的限制,详细解释见随意举例:0x0120x0230x03190x04300x0518(4)LDR/STR指令的偏移形式有哪4种?LDRB指令和LDRSB指令有何不同?零偏移LDRRd,[Rn]前索引偏移LDRRd,[Rn,#3]LDRRd,[Rn,#3]!后索引偏移LDRRd,[Rn],#3程序相对偏移LDRRd,labelLDRB和LDRSB的区别在于,前者为无符号字节加载,高24位清零;后者为有符号字节加载,高24位用符号位扩展(5)请写出MOV指令和LDR加载指令的区别及用途。MOV指令进行的是寄存器与寄存器之间的数据传递,LDR指令进行的是寄存器与存储器之间的数据传递(6)CMP指令是如何执行的?写一程序,判断R1是否大于0x30,是则将R1减0x30CMPR1,#0x30SUBHIR1,R1,#0x30(7)调用子程序是用B指令还是用BL指令?请写出返回子程序的指令。B指令跳转到指定的地址去执行程序,如B0x1234;BL指令为带链接的分支好自恋,它是先将下一条指令的地址复制到LR中,然后再跳转。故调用子程序应使用BL。BLLabel...MOVPC,LR(8)请指出LDR伪指令的用法。指令格式与LDR加载指令的区别是什么?LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。LDR{cond}register,=expr/label-expr例如,LDRR0,=0x12345678与加载指令LDR相比,伪指令的LDR的参数有“=”(9)ARM状态与Thumb状态的切换指令是什么?举例说明。通过BX指令来切换状态。;从ARM切换到ThumbCODE32;下面的指令为ARM指令LDRR0,=Lable+1;R0的bit0=1,BX自动将CPSR中的T置1BXR0;切换到Thumb状态,并跳转到Lable处执行CODE16;下面的指令为Thumb指令LableMOVR1,#12;从Thumb切换到ARMCODE16;下面的指令为Thumb指令LDRR0,=Lable;R0的bit0=0,BX自动将CPSR中的T置0BxR0;切换到ARM状态,并跳转到Lable处执行CODE32;下面的指令为ARM指令LableMOVR1,#10(10)Thumb状态与ARM状态的寄存器有区别么?Thumb指令对哪些寄存器的访问受限制?
本文标题:ARM课后习题及答案
链接地址:https://www.777doc.com/doc-5665858 .html