ARM嵌入式系统结构与编程课后习题答案.doc_第1页
ARM嵌入式系统结构与编程课后习题答案.doc_第2页
ARM嵌入式系统结构与编程课后习题答案.doc_第3页
ARM嵌入式系统结构与编程课后习题答案.doc_第4页
ARM嵌入式系统结构与编程课后习题答案.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARM嵌入式系统结构与编程课后思考与练习题参考答案第一章 绪论思考与练习题答案:1、 答:见教材P2的1.1节内容。2、 答:见教材P1的1.1节内容。3、 答:见教材P4的1.2.1节的嵌入式Linux和嵌入式实时操作系统内核C/OS-。4、 答:见教材P6的1.3节的“工业控制领域”。5、 答:见教材P8的1.4节的嵌入式技术的发展趋势。第二章 ARM技术与ARM体系结构思考与练习题答案:1、 答:对教材P15的2.2节的图2-1进行描述。2、 答:参考教材P12的2.1.2节ARM内核版本命名规则说明。3、 答:见教材P18的2.3节的ARM处理器共有7种工作模式。4、 答:PSR具体的格式为:P21的图2-7,描述“标志域”和“控制域”各位的功能。C、Z、N、V进行置位和清零见P22的内容。5、 答:ARM在异常时会进行以下操作:P24最上面的(1)(2)(3)(4)。ARM在异常返回时:(1)从SPSR_恢复CPSR;(2)从LR_恢复PC。6、答:见教材P25的“数据存储格式”中的“小端存储格式”和“大端存储格式”。7、答:在ARM三级流水线下:见教材P27的“三级流水线运行情况分析”的(1)带有存储器访问指令的流水线。8、答:ARM9在指令操作上采用的5级流水线:(1) 取指令:从指令Cache中读取指令。(2) 译码:对指令进行译码,识别出是对哪个寄存器进行操作,并从通用寄存器中读取操作数。(3) 执行:进行ALU运算和移位操作,如果是对存储器操作的指令,则在ALU中计算出要访问的存储器地址。(4) 存储器访问:如果是对存储器访问的指令,用来实现数据缓冲功能(通过数据Cache);如果不是对存储器访问的指令,本级流水线为一个空的时钟周期。(5) 寄存器回写:将指令运算或操作结果写回到目标寄存器中。9、答:见教材P29的“5级流水线互锁分析”的内容。第三章 ARM指令集寻址方式思考与练习题答案:1、 答:见教材P32的3.1节中“2.指令条件码”的内容。2、 答:当指令的算术运算发生异常时,V标志位置1。例如:两个正数相加,其结果为一负数;或者两个负数相加,其结果为一正数,都会置V标志位。3、 答:每一个立即数是由一个8位的常数进行32位循环右移偶数位得到的,其中循环右移的位数是由一个4位二进制数的两倍表示的,即:=immed_8进行32位循环右移(2*rotate_4)位,符合这一条件的都为合法的立即数。(1)0x5430 0B 0101 0100 0011 0000 不合法(2)0x108 0B 0001 0000 1000 1111 01000010(3)0x304 0B 0011 0000 0100 1111 11000001(4)0x501 0B 0101 0000 0001 不合法(5)0xfb10000 0B 1111 1011 0001 0000 0000 0000 0000 不合法(6)0x334000 0B 0011 0011 0100 0000 0000 0000 1001 11001101(7)0x3FC000 0B 0011 1111 1100 0000 0000 0000 1001 01111111(8)0x1FE0000 0B 0001 1111 1110 0000 0000 0000 0000 不合法(9)0x5580000 0B 0101 0101 1000 0000 0000 0000 0000 不合法(10)0x7F800 0B 0111 1111 1000 0000 0000 不合法(11)0x39C000 0B 0011 1001 1100 0000 0000 0000 1001 11100111(12)0x1FE80000 0B 0001 1111 1110 1000 0000 0000 0000 0000 不合法4、 答:见教材P33的3.2节图3-1移位操作功能描述。5、 答:ARM数据处理指令具体的寻址方式有5种:见教材P33的“2.具体寻址类型”内容。如果程序计数器PC作为目标寄存器,会产生程序发生跳转。6、 答:在Load/Store指令寻址中,字、无符号字节的Load/Store指令寻址有三种,具体见教材P36的3.3.2节内容。在Load/Store指令寻址中,半字、有符号字节寻址有两种,具体见教材P40的3.3.3节内容。它们之间的差别:在半字、有符号字节寻址中,没有Addressing_mode中的偏移量通过寄存器移位得到的形式。7、 答:见教材P45的“2.内存操作”内容。8、 答:见教材P46的四种类型的堆栈工作方式。栈操作指令寻址和块拷贝Load/Store指令之间的对应关系见教材P46的表3-10。9、 答:见教材P46的3.5节的“1.协处理器加载/存储指令的寻址方式”的内容。10、 答:(1)MOV R0,R1Cond 00 I opcode S Rn(R0) Rd(R0) operand2(R1)1110 00 0 1101 0 0000 0000 000000000001(2)MOV R1,#0x198Cond 00 I opcode S Rn(R0) Rd(R0) operand21110 00 1 1101 0 0000 0000 1111 011001100x198:0001 1001 1000 1111 01100110(3)ADDEQS R1,R2,#0xAB Cond 00 I opcode S Rn(R2) Rd(R1) operand2 0000 00 1 0100 1 0010 0001 0000 10101011(4)CMP R2,#Oxab Cond 00 I opcode S Rn(R2) 0000 operand2 1110 00 1 1010 0 0010 0000 0000 10101011(5)LDR R0,R1,#4 Cond 01 I P U 0 W L Rn Rd addressing_mode 1110 01 0 1 1 0 0 1 0001 0000 0000 00000100(6)STR RO,R1,R1,LSL,#2! Cond 01 I P U 0 W L Rn Rd addressing_mode 1110 01 1 1 1 0 1 0 0001 0000 00010 00 0 0001(7)LDRH R0,R1,#4 Cond 000 P U I W L Rn Rd offset_H 1 S H 1 offset_L 1110 000 1 1 1 0 1 0001 0000 0000 1 0 1 1 0100(8)LDRSB R0,R2,#-2! Cond 000 P U I W L Rn Rd offset_H 1 S H 1 offset_L 1110 000 1 0 1 1 1 0010 0000 0000 1 1 0 1 0010(9)STRB R1,R2,#0xA0 Cond 01 I P U 1 W L Rn Rd addressing_mode 1110 01 0 1 1 1 0 0 0010 0001 0000 10100000(10)LDMIA R0,R1,R2,R8 Cond 100 P U 0 W L Rn register_list 1110 100 0 1 0 0 1 0000 0000000100000110(11)STMDB R0!,R1-R5,R10,R11 Cond 100 P U 0 W L Rn register_list 1110 100 1 0 0 1 0 0000 0000110000111110 (12)STMED SP!,R0-R3,LR Cond 100 P U 0 W L Rn register_list 1110 100 0 0 0 1 0 1101 0100000000001111第四章 ARM指令集系统思考与练习题答案:1、 答:ARM指令可以分为:数据处理指令、分支指令、加载/存储指令、批量加载/存储指令、交换指令、程序状态寄存器处理指令、协处理器操作指令和异常产生指令八类。无条件执行的指令有:由程序标号给出目标地址的跳转指令BLX 、断点中断指令BKPT 。2、 答:(1)两个64位数的加法操作:R1和R0中存放了一个64位数据(作为被加数),R0存放数据的低32位;R2和R3中存放了另一个64位数据(作为加数),R2中存放低32位数据。运算结果送回到R1:R0中(R0存放低32位)。ADDS R0,R0,R2 ;低32位相加并影响标志位ADC R1,R1,R3 ;高32位相加再加上C标志位(进位值)(2)两个64位数的减法操作:使用SBC指令和SUBS指令联合使用可以实现两个64位操作数相减。如果R1和R0中存放了一个64位数据(作为被减数),R0存放数据的低32位;R2和R3中存放了另一个64位数据(作为减数),R2中存放低32位数据。运算结果送回到R1:R0中(R0存放低32位)。SUBS R0,R0,R2 ;低32位相减并影响标志位SBC R1,R1,R3 ;高32位相减再减去C标志位的反码(3)求一个64位数的负数操作:如果R1和R0中存放了一个64位数据,R0存放数据的低32位;寄存器R4和R5中放置其负数,其中R4放置低32位的数据。RSBS R4,R0,#0 ;0减去低32位并影响标志位RSC R5,R1,#0 ;0减去高32位再减去C标志位的反码3、 答:LDRB指令的二进制编码格式为:Cond 01 I P U 1 W L Rn Rd addressing_modeLDRSB指令的二进制编码格式为: Cond 000 P U I W L Rn Rd adrr_mode 1 S H 1 adrr_mode它们之间的区别是:LDRB指令和LDRSB指令编码格式中内存地址构成格式不一样;在功能上LDRB指令所加载的寄存器高24位清0,而LDRSB指令则用符号位扩展。4、 答:CMP R0,#0语句功能:判断R0是否等于0并影响标志位;MOVEQ R1,#0语句功能:当R0等于0时,MOVEQ指令执行,则R1等于0;MOVGT R1,#1语句功能:当R0等于正数时,MOVGT指令执行,则R1等于1。此程序段所实现的操作是:判别R0中的值是正数还是0。5、 答:(1)MVN R0,#0 (2)MOV R0,#0 SUB R0,R0,#1 (3)MOV R0,#0xFFFFFFFF6、 答:(1)MOV R0,0x10(2)MOV R0,R1,ASR #4(3)ADD R1,R2,R2 LSL #1(4)RSB R0,R0,#07、 答:/* 寄存器使用说明:* R0:队列指针* R1:加载队列中的数据* R4:队列数据的累加结果*/.global start.textstart: LDR R0,=DataZone 初始化队列起始地址; MOV R4,#0 结果寄存器初始化为0;AddNum: LDRB R1,R0,#1 加载队列中的数据到R1寄存器; CMP R1,#0 判断R1的值是否为0; BLX stop 如果R1的值小于或等于0则停止累加; ADD R4,R4,R1 累加求和; B AddNum 继续循环;stop: B stopDataZone: .space 10,0x10 在存储单元中申请10个字节的连续空间并用0x10填充; .zero 5 在存储单元中申请5个字节的连续空间并用0填充;.end8、 答:(1)MOVEQ R0,R1(2)LDREQ R0,R1,R2(3)LDR R0,R1,#-4(4)LDR R0,R1,R6!9、 答:(1)将存储器地址为R3-4的字数据读入R2,并将地址R3-4写入到R3;(2)将存储器地址为R0的字数据读入R0,并将地址R0+R2写入到R0;(3)将存储器地址为R3+R2*4的字数据读入R1,并将地址R3+R2*4写入R3;(4)将存储器地址为R2-2的字节数据读入R0的低8位,将R0的高24位用符号位扩展,并将地址R2-2写入R2;(5)将R1的低8位存入存储器地址为R2+0xA0的字节中;(6)将内存单元R0所指向的地址单元以字为单位后增的方式读取到R1,R2,R8中,低地址编号的字数据内存单元对应低编号的寄存器;(7)将R1-R5,R10,R11以先减的方式存储到以R0为起始地址的递减内存中,R0最终指向存放R11的地址单元。10、 答:ARM指令支持原子操作,主要是用来对信号量的操作,因为信号量操作的要求是做原子操作,即在一条指令中完成信号量的读取和修改操作。SWP数据交换指令就能完成此功能,能在一条指令中实现存储器和寄存器之间交换数据。11、 答:在进入IRQ中断处理程序时,首先计算返回地址,并保存相关的寄存器:SUB R14,R14,#4STMFD SP!,R0-R3,R12,LR如果IRQ中断处理程序返回到被中断的进程则执行下面的指令:LDMFD SP!,R0-R3,R12,PC该指令从数据栈中恢复寄存器R0-R3和R12的值,将返回地址返回到PC中,并将SPSR_irq值复制到CPSR中。12、 答:.equ User_Mode,0x10.equ Mode_Mask,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论