ARM嵌入式系统结构与编程(第2版)_第6-8章_习题答案.pdf
文本预览下载声明
《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进行初始化;
显示全部