ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:23.53KB ,
资源ID:4728258      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4728258.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《ARM嵌入式系统结构与编程》习题答案 邱铁编著.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《ARM嵌入式系统结构与编程》习题答案 邱铁编著.docx

1、ARM嵌入式系统结构与编程习题答案 邱铁编著ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 ARM嵌入式系统结构与编程第14章思考与练习题答案 此答案仅供教师教学用 第1章 绪论 思考与练习题答案 1. 国内嵌入式系统行业对“嵌入式系统”的定义是什么 如何理解 答 见教材1.1节。 2. 嵌入式系统是从何时产生的 简述其发展历程。 答 见教材1.1节。 3. 当前最常见的源码开放的嵌入式操作系统有哪些 请举出两例 并分析其特点。 答 见教材1.2.1节的嵌入式Linux和嵌入式实时操作内核C /OS-II。 4. 举例说明嵌入式设备在工

2、控设备中的应用。 答 见教材1.3节的“工业控制领域”。 5. 未来嵌入式技术的发展趋势有哪些 答 见教材1.4节的嵌入式技术的发展趋势。 第2章 ARM技术与ARM体系结构 思考与练习题答案 1 简述ARM处理器内核调试结构原理。 答 对教材1.2节的图2-1进行描述。 2 分析ARM7TDMI-S各字母所代表的含义。 答 参考教材2 1 2 ARM核版本命名规则说明。 课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 3 ARM处理器的工作模式有哪几种 其中哪些为特权模式 哪些为异常模式 并指出处理器在什么情况下进入相应的

3、模式。 答 ARM处理器共有7种工作模式 用户模式 非特权模式 也就是正常程序执行的模式 大部分任务在这种模式下执行。在用户模式下 如果没异常发生 不允许应用程序自行改变处理器的工作模式 如果有异常发生 处理器会自动切换工作模式 FIQ模式 也称为快速中断模式 支持高速数据传输和通道处理 当一个高优先级(fast)中断产生时将会进入这种模式。 IRQ模式 也称为普通中断模式 :当一个低优先级中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ模式下进行。 SVC模式 称之为管理模式 它是一种操作系统保护模式。当复位或软中断指令执行时处

4、理器将进入这种模式。 中止模式 当存取异常时将会进入这种模式 用来处理存储器故障、实现虚拟存储或存储保护。 未定义指令异常模式 当执行未定义指令时会进入这种模式 主要是用来处理未定义的指令陷阱 支持硬件协处理器的软件仿真 因为未定义指令多发生在对协处理器的操作上。 系统模式 使用和User模式相同寄存器组的特权模式 用来运行特权级的操作系统任务。 在这7种工作模式中 除了用户模式以外 其他6种处理器模式可以称为特权模式 在这些模式下 程序可以访问所有的系统资源 也可以任意地进行处理器模式的切换。在这6种特权模式中 除了系统模式外的其他5种特权模式又称为异常模式 4 分析程序状态寄存器 PSR

5、各位的功能描述 并说明C、Z、N、V在什么情况下进行置位和清零。 答 PSR的具体格式为 V溢出标志位 对于加/减法运算指令 当操作数和运算结果为二进制补码表示的带符号数时 V 1表示符号位溢出 其他的指令通常不影响V位。 课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 例如 两个正数 最高位为0 相加 运算结果为一个负数 最高位为1 则符号位溢出 相应V=1。 C进位或借位标志位 对于加法指令 包括比较指令CMN 结果产生进位 则C 1 表示无符号数运算发生上溢出 其他情况下C 0 在减法指令中 包括比较指令CMP 结果产

6、生借位 则C 0 表示无符号数运算发生下溢出 其他情况下C 1 对于包含移位操作的非加/减法运算指令 C中包含最后一次溢出位的数值 对于其他非加/减法运算指令 C位的值通常不受影响。 Z结果为0标志位 Z 1表示运算结果是0 Z 0表示运算结果不是零 对于CMP指令 Z 1表示进行比较的两个数大小相等。 NT符号标志位 本位设置成当前指令运算结果的bit31的值。当两个补码表示有符号整数运算时 N 1表示运算的结果为负数 N 0 表示结果为正数或零。 5 简述ARM处理器异常处理和程序返回的过程。 答 ARM在异常产生时会进行以下操作 1 将引起异常指令的下一条指令地址保存到新的异常模式的LR

7、中 使异常处理程序执行完后能根据LR中的值正确返回 2 将CPSR的内容复制到新的异常模式下的SPSR中 3 根据异常类型将CPSR模式控制位强制设定为发生异常所对应的模式值 4 强制PC指向相应的异常向量地址。 ARM在异常返回时 1 从 SPSR_恢复CPSR 2 从LR_恢复PC 。 6 ARM处理器字数据的存储格式有哪两种 并指出这两种格式的区别。 答 1 小端存储格式 Little-Endian 在小端存储格式中 对于地址为A的字单元 其中字节单元由低位到高位字节地址顺序为A,A+1,A+2 A+3 对于地址为A的半字单元 其中字节单元由低位到高位字节地址顺序为A,A+1 2 大端存

8、储格式 Big-Endian 在大端存储格式中 对于地址为A的字单元 其中字节单元由高位到低位字节地课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 址顺序为A,A+1,A+2 A+3 对于地址为A的半字单元 其中字节单元由高位到低位字节地址顺序为A,A+1。 7 分析带有存储器访问指令 LDR 的流水线运行情况 并用图示说明其流水线的运行机制。 答 在ARM三级流水线下 对存储器的访问指令LDR就是非单周期指令。这类指令在“执行”阶段后 还要进行“存储器访问”和“寄存器回写”操作 每一步占用1个时钟周期。在指令执行时空图中

9、处于时钟周期T5时 LDR指令要进行数据的存储器操作 访存 在时钟周期T6要进行寄存器的回写操作 这两步还要占用执行单元 因此其下1条指令的“执行”就被阻断了 其下数第2条指令的译码被阻断 要等待LDR指令操作完毕后 流水线的正常运行才能被恢复。 在图中 处理器用6个时钟周期执行了4条指令 指令平均周期数 (CPI) = 1.5 时钟周期。 8 简述ARM9的5级流水线每一级所完成的功能和实现的操作。 答 在ARM9在指令操作上采用5级流水线。 课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 1 取指 从指令Cache中读取

10、指令。 2 译码 对指令进行译码 识别出是对哪个寄存器进行操作并从通用寄存器中读取操作数。 3 执行 进行ALU运算和移位操作 如果是对存储器操作的指令 则在ALU中计算出要访问的存储器地址。 4 存储器访问 如果是对存储器访问的指令 用来实现数据缓冲功能 通过数据Cache 如果不是对存储器访问的指令 本级流水线为一个空的时钟周期。 寄存器回写 将指令运算或操作结果写回到目标寄存器中。 9 什么叫做流水线互锁 应如何来解决 举例说明。 答 在流水线运行过程中可能会出现这种情况 当前指令的执行可能需要前面指令的执行结果 但这时前面的指令没有执行完毕 从而会导致当前指令的执行无法获得合法的操作数

11、 这时就会引起流水线的等待 这种现象在流水线机制里称为互锁。 举例 参见教材第29页 当互锁发生时 硬件会停止这个指令的执行 直到数据准备好为止。如图所示 LDR指令进行完执行阶段 还需要两个时钟周期来完成存储器访问和寄存器写操作 但这时指令MOV中用到的R9正是LDR中需要进行寄存器加载操作后的寄存器 因此MOV要进行等待 直到LDR指令的寄存器写操作完成。 第3章 ARM指令集寻址方式 思考与练习题答案 1 在指令编码中 条件码占有几位 最多有多少个条件 各个条件是如何形成的 答 见教材3.1节的描述。 课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第

12、二次印刷20093120108 2 指令条件码中 V标志位在什么情况下才能等于1 答 当指令的算术运算发生异常时 V标志位置1。例如 两个正数相加 其结果为一负数 或者是两个负数相加 其结果为一正数 都会置V标志位。 3 在ARM指令中 什么是合法的立即数 判断下面各立即数是否合法 如果合法则写出在指令中的编码格式 也就是8位常数和4位的移位数 。 0x5430 0x108 0x304 0x501 0xFB10000 0x334000 0x3FC000 0x1FE0000 0x5580000 0x7F800 0x39C000 0x1FE80000 答 每个立即数由一个8位的常数进行32位循环右

13、移偶数位得到 其中循环右移的位数由一个4位二进制的两倍表示。即 =immed_8进行32位循环右移 2*rotate_4 位 符合这一条件的都为合法的立即数。 1) 0x5430 0B 0101 0100 0011 0000 不合法 2) 0x108 0B 0001 0000 1000 1111 01000010(30/2) 3) 0x304 0B 0011 0000 0100 1111 11000001(30/2) 4) 0x501 0B 0101 0000 0001 不合法 5) 0xFB10000 0B 1111 1011 0001 0000 0000 0000 不合法 6) 0x334

14、000 0B 0011 0011 0100 0000 0000 0000 1001 11001101(18/2) 7) 0x3FC000 0B 0011 1111 0000 0000 0000 1010 00111111(18/2) 8) 0x1FE0000 0B 0001 1111 1110 (0000)4 不合法 9) 0x5580000 0B 0101 0101 1000 (0000)4 不合法 10) 0x7F80000 0B 0111 1000 0001 (0000)4 不合法 11) 0x39C000 0B 0011 1001 1100 0000 0000 0000 1001 11

15、100111(18/2) 12) 0x1FE80000 0B 0001 1111 1110 (0000)4 不合法 4 分析逻辑右移、算术右移、循环右移、带扩展的循环右移它们间的差别。 答 见教材3.2节的图3-1移位操作功能描述。 5 ARM数据处理指令具体的寻址方式有哪些 如果程序计数器PC作为目标寄存课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 器 会产生什么结果 答 ARM数据处理指令具体的寻址方式有5种 见教材3.2节的具体说明。 如果程序计数器PC作为目标寄存器 会产生程序发生跳转。 6 在Load/Store

16、指令寻址中 字、无符号字节的Load/Store指令寻址和半字、有符号字节寻址 试分析它们之间的差别。 答 在Load/Store指令寻址中 字、无符号字节的Load/Store指令寻址有三种 具体见教材3.3.2节 在Load/Store指令寻址中 半字、有符号字节寻址有两种 具体见教材3.3.3节 它们之间的差别 在半字、有符号字节寻址中 没有Addressing_mode中的偏移量通过寄存器移位得到的形式。 7 块拷贝Load/Store指令在实现寄存器组和连续的内存单元中数据传递时 地址的变化方式有哪几种类型 并分析它们的地址变化情况。 答 批量Load/Store指令在实现寄存器组和

17、连续的内存单元中数据传递时 地址的变化方式 addr_mode 有以下4种类型 后增IA (Increment After) 每次数据传送后地址加4 先增IB (Increment Before) 每次数据传送前地址加4 后减DA (Decrement After) 每次数据传送后地址减4 先减DB (Decrement Before) 每次数据传送前地址减4 。 8 栈操作指令地址的变化方式有哪几种类型 并分析它们的地址变化情况 从而得出栈操作指令寻址和块拷贝Load/Store指令之间的对应关系。 答 (1) 四种类型的堆栈工作方式 即 满递增堆栈FA(Empty Ascending) 堆

18、栈指针指向最后压入的数据 且由低地址向高地址生成。 满递减堆栈FD Full Descending 堆栈指针指向最后压入的数据 且由高地址向低地址生成。 空递增堆栈EA(Full Ascending) 堆栈指针指向下一个将要放入数据的空位置 且由低地址向高地址生成。 空递减堆栈ED(Empty Descending) 堆栈指针指向下一个将要放入数据的空位置 且由高地址向低地址生成。 (2) 栈操作指令寻址和块拷贝Load/Store指令之间的对应关系见表3-10。 9 分析协处理器加载/存储指令的寻址方式中的内存地址索引格式中不同的汇编语法格式下内存地址的计算方法。 答 具体见教材3.3.2节

19、 10 写出下列指令的机器码 并分析指令操作功能。 MOV R0 R1 MOV R1 #0x198 ADDEQS R1 R2 #0xAB 课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 CMP R2 #0Xab LDR R0 R1 #4 STR R0 R1 R1 LSL #2 LDRH R0 R1 #4 LDRSB R0 R2 #-2 STRB R1 R2 #0xA0 LDMIA R0 R1 R2 R8 STMDB R0 R1-R5 R10 R11 STMED SP R0-R3 LR 答 现对以下三条指令进行编码 其余的参照

20、本章的编码说明。 第4章 ARM指令集系统 思考与练习题答案 1. ARM指令可分为哪几类 说出哪几条指令是无条件执行的。 答 ARM指令可分为 数据处理指令 程序状态寄存器与通用寄存器之间的传送指令 Load/Store 指令 转移指令 异常中断指令 协处理器指令 无条件执行指令 BLX BKPT 2. 如何实现两个64位数的加法操作 如何实现两个64位数的减法操作 如何求一个64位数的负数 答 1 见教材例4-4 实现64位数据加法运算 假设R0和R1存放了一个64位数据 作为被加数 课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷200931

21、20108 R0存放数据的低32位 R2和R3中存放了另一个64位数据 作为加数 R2中存放低32位数据。运算结果送回到R1 R0中 R0中存放低32位 。 ADDS R0,R0,R2 低落32位相加并影响标志位 ADC R1,R1,R3 高32位相加再加上C标志位 进位值 2 见教材例4-6 SBC指令和SUBS指令联合使用可以实现两个64位的操作数相减。如果寄存器R0和R1中放置一个64位的被减数 其中R0中放置低32位数值 寄存器R2和R3中放置一个64位的减数 其中R2中放置低32位数值。运算结果送回到R1 R0中 R0中存放低32位 。 SUBS R0 R0 R2 ;低32位相减并影

22、响标志位 SBC R1 R1 R3 ; 高32位相减再减去C标志位的反码 3 见教材例4-8 如果寄存器R0和R1中放置一个64位数 其中R0中放置低32位数值 寄存器R4和R5中放置其负数 其中R4中放置低32位数值。 RSBS R4 R0 #0 ; 0减去低32位并影响标志位 RSC R5 R1 #0 ; 0减去高32位再减去C标志位的反码 3. 写出LDRB指令与LDRSB指令二进制编码格式 并指出它们之间的区别。 答 提示 LDRB指令与LDRSB指令编码的符号不同 在功能上LDRB所加载的寄存器高24位清0 而LDRSB则是用符号位扩展。 4. 分析下列每条语句的功能 并确定程序段所

23、实现的操作。 CMP R0 #0 MOVEQ R1 #0 MOVGT R1 #1 答 分析 当R0等于0时 MOVEQ执行 则R1等于0 当R0等于正数时 MOVGT执行 则R1等于1 此功能码段可以判别R0中的值为正数还是0。 5. 请使用多种方法实现将字数据0xFFFFFFFF送入寄存器R0。 答 例如 MVN R0 #0 或者 MOV R0 #0 SUB R0 R0 #1 还可以用其它运算指令来实现 读者自行写出。 6. 写一条 ARM 指令 分别完成下列操作 a) R0 = 16 b) R0 = R1 / 16 (带符号的数字) c) R1 = R2 * 3 课后答案网 ARM嵌入式系

24、统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 d) R0 = -R0 答 a) R0 = 16 MOV R0, 0x10 b) R0 = R1 / 16 (带符号的数字) MOV R0, R1, ASR #4 c) R1 = R2 * 3 ADD R1, R2, R2, LSL #1 d) R0 = -R0 RSB R0, R0, #0 7. 编写一个ARM汇编程序 累加一个队列中的所有元素 碰上0时停止。结果放入 R4。 解答 (参考程序) /*- 寄存器的使用说明: * R0: 队列指针 * R1: 加载队列中的数据 * R4: 队列数据的累加

25、结果 *-*/ .global start .text start: LDR R0, =DataZone 初始化为队列的起始地址 MOV R4, #0 结果寄存器初始化为0 addNum: LDRB R1, R0, #1 加载队列中的数据存入R1中 CMP R1, #0 判断R1的值是否为0 BLS stop 如果R1的值小于或等于0则停止累加 ADD R4, R4, R1 累加求和 B addNum 继续循环 stop: B . DataZone: .space 10, 0x10 在存储单元中申请10个字节的连续空间并用0x10填充 .zero 5 在存储单元中申请5个字节的连续空间并用0填

26、充 .end 8. 写出实现下列操作的ARM指令 当Z=1时 将存储器地址为R1的字数据读入寄存器R0。 当Z=1时 将存储器地址为R1+R2的字数据读入寄存器R0。 将存储器地址为R1-4的字数据读入寄存器R0。 将存储器地址为R1+R6的字数据读入寄存器R0 并将新地址R1 R6写入R1。 课后答案网 ARM嵌入式系统结构与编程邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷20093120108 解答 (1) MOVEQ R0, R1 (2) LDREQ R0, R1,R2 (3) LDR R0,R1,#-4 (4) LDR R0 R1,R6! 9. 写出下列ARM指令所实现操作

27、 LDR R2 R3 -4 LDR R0 R0 R2 LDR R1 R3 R2 LSL 2 LDRSB R0 R2 #-2 STRB R1 R2 #0xA0 LDMIA R0 R1 R2 R8 STMDB R0 R1-R5 R10 R11 解答 LDR R2,R3,#-4! 将存储器地址为R3-4的字数据读入R2 并将地址R3-4写入R3 LDR R0,R0,R2 将存储器地址为R0的字数据读入R0 并将地址R0+R2写入R0 LDR R1,R3,R2,LSL#2! 将存储器地址为R3+R2*4的字数据读入R1 并将地址R3+R2*4写入R3 LDRSB R0,R2,#-2! 将存储器地址为R

28、2-2的字节数据读入R0的低8位 将R0的高24位用符号位扩展 并将地址R2-2写入R2 STRB R1,R2,#0xA0 将R0的低8位存入存储器地址为R2+0xA0字节中 LDMIA R0,R1,R2,R8 将内存单元R0所指向的地址单元以字为单位递减方式读取到R1 R2 R8中 低地址编号的字数据内存单元对应低编号寄存器 STMDB R0! R1-R5,R10,R11 将R1-R5,R10,R11存储到以R0为起始地址的递减内存中 最终R0指向存放R11的地址单元 10. SWP 指令的优势是什么? 答 ARM指令支持原子操作 主要是用来对信号量的操作 因为信号量操作的要求是作原子操作 即在一条指令中完成信号量的读取和修改操作。SWP数据交换指令就能完成此功能 能在一条指令中实现存储器和寄存器之间交换数据。 11. 如何用带PSR操作的批量字数据加载指令实现IRQ中断的返回 答 见教材例4-31 课后答案网 www.k

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1