好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《嵌入式期末考试试卷A卷》.doc

8页
  • 卖家[上传人]:sh****na
  • 文档编号:264937604
  • 上传时间:2022-03-12
  • 文档格式:DOC
  • 文档大小:133KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 题号一二三四五六七八九十总分累分人 签名题分40122424 100得分考生注意事项:1、本试卷共5页,请查看试卷中是否有缺页或破损如有立即举手报告以便更换 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场一、 填空题(每空2分,共40分) 得分评阅人 1、 ARM微处理器有 7种工作模式,它们分为两类 非特权模式 、 特权模式 其中用户模式属于 非特权模式 2、 ARM支持两个指令集, ARM核因运行的指令集不同,分别有两个状态 ARM 、 Thumb ,状态寄存器CPSR的 T 位反映了处理器运行不同指令的当前状态3、 ARM核有多个寄存器,其中大部分用于通用寄存器,有小部分作为专用寄存器, R15 寄存器用于存储PC,R13通常用来存储 SP 4、 ARM处理器有两种总线架构,数据和指令使用同一接口的是 冯诺依曼 ,数据和指令分开使用不同接口的是 哈佛结构 5、 ARM微处理器复位后,PC的地址通常是 0x0 ,初始的工作模式是Supervisor 。

      6、 ARM微处理器支持虚拟内存,它是通过系统控制协处理器 CP15 和MMU(存储管理部件)来进行虚拟内存的存储和管理当系统发生 数据 异常和 指令领取 异常时,异常处理程序透过嵌入式操作系统的内存管理机制,通过MMU交换物理内存和虚拟内存的页面,以保证程序正常执行7、 编译链接代码时,有两种存储代码和数据的字节顺序,一种是 小端对齐 ,另一种是 打断对齐 8、 构建嵌入式系统开发环境的工具链有多种,其中开放源码的工具链是 GNU工具链 ,ARM公司提供的工具链是 ADS工具链 9、 计算机有CISC和RISC两种类型,以ARM微处理器为核心的计算机属于 RISC、 类型,其指令长度是 定长的 二、 指令测试题(共12分) 1、 写一条 ARM 指令,完成操作r1 = r2 * 3(4分)ADD R1,R2,R2,LSL #12、 初始值R1=23H,R2=0FH执行指令BIC R0, R1,R2,LSL #1后,寄存器R0,R1的值分别是多少?(4分)R0=21H,R1=23H 3、说明指令STMIA r12!, {r0-r11}的操作功能。

      4分)将R0-R11十二个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址 4、写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中程序框架如下,补充代码完成上述功能8分) AREA total, CODE READONLY ENTRYstart MOV r4, #0 ADR r0, myarray;在此补充代码loopLDR r1, [r0], #4 ADD r4, r4, r1CMP r1, #0BNE loop5、这是一个由源程序strtest.c和scopy.s组成的混合程序项目,通过调用strcopy完成字符串复制,程序代码如下要求阅读程序,在程序中的注释符“//”后,说明该句程序的作用,并说明extern和EXPORT伪指令的在程序中的作用8分)strtest.c#include extern void strcopy(char *d, const char *s);int main(){ const char *srcstr = "First string - source"; char dststr[] = "Second string - destination"; printf("Before copying:\n"); printf(" '%s'\n '%s'\n",srcstr,dststr); // strcopy(dststr,srcstr); // printf("After copying:\n"); printf(" '%s'\n '%s'\n",srcstr,dststr);// return 0;}scopy.sAREA SCopy, CODE, READONLY EXPORT strcopystrcopy LDRB r2, [r1],#1 ; STRB r2, [r0],#1 ; CMP r2, #0 ; BNE strcopy ; MOV pc,lr ;END//输出源串和目标串 (8分)//调用strcopy函数//输出复制后的源串和目标串;r1指向源串,从源串载入一个字节的字符到r2,并更新r1=r1+1;r0指向目标串,从r2保存一个字节的字符到目标串,并更新r0=r0+1;测试串尾标志\0;非零转标号strcopy ;返回三、 程序测试题(共24分) 1、写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中。

      程序框架如下,补充代码完成上述功能8分) AREA total, CODE READONLY ENTRYstart MOV r4, #0 ADR r0, myarray;在此补充代码答:loopLDR r1, [r0], #4 ADD r4, r4, r1CMP r1, #0BNE loopstop B stopmyarray DCD 0x11 DCD 0x22 ……DCD 0x0 END2、有如下程序段,画出程序流程图,并回答执行程序以后R0的值是多少8分)num EQU 2 start MOV r0, #0 MOV r1, #5 MOV r2, #2 BL func stop B stop func CMP r0, #num MOVHS pc, lr ADR r3, JumpTable LDR pc, [r3,r0,LSL#2] JumpTable DCD DoA DCD DoS DoA ADD r0, r1, r2 MOV pc, lr DoS SUB r0, r1, r2 MOV pc,lr END 答:R0为0调用DoA,R0为1调用DoS,R0大于2直接返回,流程图略。

      R0=73、 这是一个由源程序strtest.c和scopy.s组成的混合程序项目,通过调用strcopy完成字符串复制,程序代码如下要求阅读程序,在程序中的注释符后,说明该句程序的作用,并说明extern和EXPORT伪指令的在程序中的作用8分)strtest.c#include extern void strcopy(char *d, const char *s);int main(){ const char *srcstr = "First string - source"; char dststr[] = "Second string - destination"; printf("Before copying:\n"); printf(" '%s'\n '%s'\n",srcstr,dststr); //输出源串和目标串 strcopy(dststr,srcstr); //调用strcopy函数 printf("After copying:\n"); printf(" '%s'\n '%s'\n",srcstr,dststr);// 输出复制后的源串和目标串 return 0;}scopy.sAREA SCopy, CODE, READONLY EXPORT strcopystrcopy LDRB r2, [r1],#1 ; r1指向源串,从源串载入一个字节的字符到r2,并更新r1=r1+1 STRB r2, [r0],#1 ;r0指向目标串,从r2保存一个字节的字符到目标串,并更新r0=r0+1 CMP r2, #0 ;测试串尾标志\0 BNE strcopy ;非零转标号strcopy MOV pc,lr ;返回 END四、 问答题(每题6分,共24分) 得分评阅人 1、 目前使用的嵌入式操作系统主要有哪些?请举出六种较常用的。

      Windows CE/Windows Mobile、VxWork、Linux、uCos、Symbian、QNX任选六2、ARM系统中的堆栈有四种,如下图请按图标出四种堆栈的类型ATPCS编程规范约定使用的堆栈是哪一种?答:FD、FA、ED、EAATPCS编程规范约定使用的堆栈是FD3、Boot Loader在嵌入式系统中主要起什么作用?完成哪些主要的工作? 答:Boot Loader是在嵌入式系统复位启动时,操作系统内核运行前,执行的一段程序通过Boot Loader,初始化硬件设备,建立内存和I/O空间映射图,为最终加载。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.