嵌入式复习思考题(1)答案.doc_第1页
嵌入式复习思考题(1)答案.doc_第2页
嵌入式复习思考题(1)答案.doc_第3页
嵌入式复习思考题(1)答案.doc_第4页
嵌入式复习思考题(1)答案.doc_第5页
全文预览已结束

下载本文档

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

文档简介

嵌入式复习思考题及答案(1)一、简答题1、ARM9有哪几种工作模式?其中哪几种属于特权模式?哪几种属于几种异常模式? 答:有用户、系统、管理、中止、未定义、普通中断、快速中断。系统、管理、中止、未定义、普通中断、快速中断属于特权模式。管理、中止、未定义、普通中断、快速中断属于几种异常模式。2、ARM9有哪2种工作状态?各自特点?实现状态切换指令的是什么?答:ARM状态与Thumb状态。ARM状态指令是32位;Thumb状态指令是16位。切换指令是BX。3、简述ARM9在不同工作模式下寄存器分布情况(用图表说明)。R13、R14、R15的固定用途; CPRS和SPRS名称及功能。答:R13常作为堆栈指针SP、R14作为链接寄存器LR、R15作为程序计数器PC。CPRS是当前程序状态寄存器,包含条件代码、中断禁止位、当前处理器模式以及其他状态和控制信息。SPRS是程序状态保存寄存器,异常出现时用于保存CPRS的状态。4、ARM920T处理器有哪7种异常?各自对应中断矢量、优先级如何排列?复位未定义指令软件中断指令预取中止数据中止普通中断快速中断0x000000000x000000040x000000080x0000000C0x000000100x000000180x0000001C16652435、ARM处理器对异常中断的响应及返回过程。答:响应过程:1、将引起异常指令的下一条指令的地址保存到新的异常工作模式的R14中; 2、将CPSR的内容保存到将要执行的异常中断对应的SPSR中; 3、根据异常类型CPSR中的运行模式位; 4、将相应的矢量地址赋值给PC,开始执行异常处理程序。还可设中断禁止位。返回过程: 1、将连接寄存器LR的值减去相应的偏移量后送到PC中;2、将SPSR内容送回CPSR; 3、若在进入异常处理时设置了中断禁止位,要在此清除。6、写出ARM9支持的寻址方式,各举一例。答:略7、写出指令LDRB/LDRH/LDR的区别。答:LDRB将内存单元一个字节的数据扩展到32位装载到寄存器; LDRH将内存单元半字(两个字节)的数据扩展到32位装载到寄存器; LDR 将内存单元一个字的数据装载到寄存器。8、写出LDM、STM指令用于数据块拷贝时对应的4种后缀以及用于堆栈操作对应的4种后缀。 解释各自的执行过程。答:数据块拷贝后缀:IA操作后指针增; DA操作后指针减; IB操作前指针增; DB操作前指针减。 堆栈操作后缀: FD满递减;ED空递减;FA满递增;EA空递增。9、ARM和Thumb两种状态下各自堆栈的生成方式有何不同?写出各自对应的入栈、出栈指令。答:ARM堆栈有4种生成方式满递增、满递减、空递增、空递减;入栈指令:STM(FDEDFAEA 4种后缀之一) 出栈指令:LDM(FDEDFAEA 4种后缀之一)Thumb堆栈采用满递减的生成方式。 入栈指令:PUSH . 出栈指令:POP10、写出条件代码NE、EQ的判断条件。答:NE Z=0 (不相等); EQ Z=1 (相等)11、B、BL及BX指令有何区别?写出无嵌套的子程序调用及返回指令。答:B是简单的转移指令,实现向目的地址的简单的跳转;BL是带链接的转移指令,将转移指令后的下一条指令抵制保存到链接寄存器LR; BX是带状态切换的转移指令。 子程序调用指令:BL DELAY; 无嵌套的子程序返回指令 MOV PC,LR12、举例说明伪指令LDR的2个主要用途。答:LDR R1, =0X30408020 加载32位立即数到寄存器; LDR R1, =SRC 加载一个地址值到寄存器。13、什么是ATPCS?它有哪些规则?答:ATPCS是ARM程序和Thumb程序中子程序调用的基本规则,使单独编译的C程序和汇编程序能相互调用。有数据栈规则、参数传递规则和子程序调用时寄存器使用规则。二、程序阅读题(重点检测寻址方式及指令)1、在每条语句后做简要注释,写出程序执行后R0、R1 、R2和C的值。 (知识点:算术、逻辑操作、影响标志位S)AREA SUMM , CODE , READONLYX EQU 8Y EQU 16 ENTRY MOV R0 , #X MOV R1 , #Y ADD R2 , R0 , R1 AND R0 , R2 , #0X0F MOV R2 , #Y ADDS R2 , R0 , R1 , LSR #1 STOP B STOP 程序执行后R0=8、R1=16 、R2=16和C=0。 END 2、分析程序,按照加“/”语句的要求解答。(知识点:堆栈操作) AREA STK , CODE , READONLY ENTRY MOV R1 , #0X30 MOV R2 , #0X08MOV SP , #0X400 STMFD SP!,R1,R2;/ 写出语句执行后SP和R2的值 SP= 0X3F8 ;R2=0X08 LDMFD SP!,R5,R6;/ 写出语句执行后SP、R5和R6的值 SP=0X400;R5=0X30;R6=0X08LOOP B LOOP END3、写出程序实现的功能,并在每条语句后做简要注释。(知识点:寻址方式Rn , #immediate、循环体、数据拷贝) AREA armcopy CODE, READONLY num EQU 16 ENTRY ADR r1, src ADR r3, dst MOV r2, #num 程序实现了将内存src 处的16个字拷贝到dst处。 copy LDR R0 , r1 , #4 STR R0 , r3 , #4 SUBS r2 , r2 , #1 BNE copy stop B stopsrc DCD 1,2,3,4,1,2,3,4,5,6,1,2,3,4,1,2dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0END 4、分析程序功能,并写出加序号语句的作用。 (知识点:状态切换)程序实现了从ARM状态切换到Thumb状态实现4个字节数据的拷贝。AREA thcopy, CODE, READONLY ENTRY CODE32 ;伪操作,指示以下指令是32位的ARM指令 LDR r1, =src LDR r3, =dst MOV r2, #4 LDR r4, =copy+1 ; ;伪指令,装载跳转地址以及最后的状态切换位 BX r4 ; ;从ARM状态跳转到Thumb状态 CODE16 ; ;伪操作,指示以下指令是16位的Thumb指令copy LDRB r0,r1 ADD r1,#1 STRB r0,r3 ADD r3,#1 SUB r2, r2, #1 BNE copy stop B stopsrc DCB 1,2,3,4dst DCB 0,0,0,0 END5、写出下列程序执行后r0的值,并写出加序号语句的作用。(知识点:跳转表、子程序的调用返回) AREA Jump, CODE, READONLY ENTRY Start MOV r0, #0 MOV r1, #8 MOV r2, #5 BL count ; 调用子程序stop B stopcount CMP r0, #2 ; r0与2比较 MOVHS pc, lr ; 如果r0大于2则子程序返回 LDR r3, =JumpTable ; 否则将跳转表首地址送r3 LDR pc, r3,r0,LSL#2 ; 将r3 +r04(即跳转地址)送pcJumpTable DCD DoAdd DCD DoSubDoAdd ADD r0, r1, r2 MOV pc, lr ;子程序返回DoSub SUB r0, r1, r2 MOV pc,lr 程序执行后r0=13 END 6、分析下面这段混合程序回答: (1)、程序实现了什么功能? 在C中调用汇编函数实现字符串拷贝(2)C语言程序和汇编代码如何传递参数? dststr R0; srcstr R1(3)在每条语句后做简要注释。(知识点:C和汇编混合编程框架、ATPCS规则、字节拷贝)extern void strcpy(char *d,const char *s) ;声明外部函数int main(void) const char *srcstr=”abcdefg”;char *dststr=”jjjjjjjjjj”;strcopy(dststr,srcstr) ;调用汇编函数(通过R0和R1实现参数传递)printf(“%sn%n”,srcstr,dststr);return(0); AREA SCopy, CODE, READONLYEXPORT strcopy ;声明一个全局标号,可以在其他文件中引用strcopy LDRB r2, r1,#1 STRB r2, r0,#1 CMP r2, #0 BNE strcpy MOV pc,lr ;子程序返回 END三、设计题(掌握汇编及C语言简单程序设计。如数据拷贝、跳转表、混合编程。)1、用汇编语言编写数据块或字符拷贝程序(如阅读程序题)。2、用汇编语言编写含有2个分支的跳转表实现程序跳转。R2寄存器中存放的是跳转表的基地址。 R1中用于选择不同的子程序,子程序可以任意命名。R1的不同值选择不同的子程序。并做简单注释。(如阅读程序题)3、编写一段C语言与汇编语言的混合编程代码,在C语言程序中调用汇编语言代码,完成字符串的拷贝。(如阅读程序题)4、在汇编子程序中调用一个计算a、b、c三者之和的C语言

温馨提示

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

评论

0/150

提交评论