文档详情

ARM嵌入式系统结构与编程(第2版)_第6-8章_习题答案.pdf

发布:2017-05-21约1.89万字共16页下载文档
文本预览下载声明
《ARM 嵌入式系统结构与编程》第2 版,邱铁 编著. 清华大学出版社. 2013 年8 月第2 版,2015 年8 月第4 次印刷 《ARM 嵌入式系统结构与编程》第2 版,第6~8 章 思考与练习题答案 (此答案仅供教师教学用) 第6 章 ARM 汇编伪指令与伪操作 思考与练习题答案 1. 在ARM 汇编语言程序设计中,伪操作与伪指令的区别是什么? 解答: 伪指令是 ARM 处理器支持的汇编语言程序里的特殊助记符,它不在处理器运 行期间由机器执行,只是在汇编时将被合适的机器指令代替成 ARM 或 Thumb 指令, 从而实现真正的指令操作。 伪操作(Directive)是ARM 汇编语言程序里的一些特殊的指令助记符,其作用主要 是为完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运 行期间由处理器执行.也就是说,这些伪操作只是汇编过程中起作用,一旦汇编结束,伪 操作也就随之消失。 2. 分析ARM 汇编语言伪指令LDR、ADRL、ADR 的汇编结果,说明它们之间的区 别。 解答:见教材6.1 节的详细描述。 3. 在ADS 编译环境下,写出实现下列操作的伪操作: (1)声明一个局部的算术变量La_var1 并将其初始化为0; (2 )声明一个局部的逻辑变量Ll_var 并将其初始化为FALSE ; (3 )声明一个局部的字符串变量Ls_var 并将其初始化为空串; (4 )声明一个全局的逻辑变量Gl_var 并将其初始化为FALSE ; (5 )声明一个全局的字符串变量Gs_var 并将其初始化为空串。 (6)声明一个全局的算术变量Ga_var 并将其赋值为0xAA; (7 )声明一个全局的逻辑变量Gl_var 并将其赋值为TURE; (8 )声明一个全局的字符串变量Gs_var 并将其赋值为“CHINA”。 解答: (1)LCLA La_var1 ; 《ARM 嵌入式系统结构与编程》第2 版,邱铁 编著. 清华大学出版社. 2013 年8 月第2 版,2015 年8 月第4 次印刷 (2 )LCLL Ll_var ; (3 )LBLS Ls_var; (4 )GBLL Gl_var ; (5 )GBLS Gs_var; (6 ) GBLA Ga_var Ga_var SETA 0xAA (7 ) GBLL Gl_var Gl_var SETL TURE (8 ) GBLS Gs_var Gs_var SETS “CHINA” 4. 有ARM ADS 伪操作将寄存器列表R0-R5、R7、R8 的名称定义为Reglist。 解答: Reglist RLIST { R0-R5,R7,R8 } 5. 在ARM 标准ADS 编译环境下完成下列数据定义伪操作: (1) 申请以data_buffer1 为起始地址的连续的内存单元,并用依次用半字数 据0x11,0x22,0x33,0x44,0x55 进行初始化; (2 ) 申请以 Str_buffer 为起始地址的连续的内存单元,并用字符串“ARM7 and ARM9”进行初始化 解答: (1) data_buffer1 DCW 0x11,0x22,0x33,0x44,0x55 (2) Str_buffer DCB “ARM7 and ARM9” 6. 定义一个结构化的内存表,其首地址固定为0x900,该结构化内存表包含2 个域,Fdata1 长度为8 个字节,Fdata2 长度为160 个字节。 解答: MAP 0x900 Fdata1 FIELD 8 ; Fdata2 FIELD 160 ; 7. 在GNU 编译环境下,写出实现下列操作的伪操作: (1)分配一段字节内存单元,并用57, 0x11, 031, ‘Z’,0x76进行初始化;
显示全部
相似文档