《嵌入式系统原理》作业一参考答案
注意:
●上交时间:下周上小课之前;
●不许打印答案,可以不抄题目,把答写在作业纸上就可以了;
一、填空题
1、ARM的完整拼写形式为 Acorn RISC Machine ,CM4处理器内部正在执行的指令的地址为0x08000100,此时读取PC的值,该值为 0x08000104 。
2、CM4处理器有两种模式:线程模式、 handler模式,还支持两种操作级别:特权级、非特权级(用户级)。
4、根据操作数的来源不同,CM4处理器有不同的寻址方式,最快的寻址方式是立即寻址,指令add r0,r1,r2的寻址方式是寄存器寻址。
5、ATPCS中规定子程序间传递参数,参数个数少于等于4个时,使用寄存器R0-R3 ;参数个数多于4个时,多出的部分使用栈。
6、在CM4处理器中,寄存器间传送数据的指令是 mov ,寄存器和内存单元间传送数据的指令是 ldr/str ,寄存器和状态寄存器间传送数据的指令是mrs/msr 。
7、伪操作import的作用是声明来自外部文件的标号。
伪操作“ldr r0,=label”的含义是将标号lable的值送到到r0中。
8、假设某嵌入式处理器有3级流水线,每级流水线所耗时间均为为0.2ms,则顺序执行30条指令需要耗费时间是 6.8 ms。
(30+5-1)*0.2
编程题
1、编写一段c语言和汇编语言的混合程序,在c语言函数中实现字符串拷贝(不许用字符串操作相关函数),函数原型如下:
void strcpy(char *src, char *dest) //即src所指向的字符串复制到dest中{
// 自己编写字符串拷贝代码
*dst=*src;
while(*dst!=0)//循环结束标志是到了字符串末尾,遇到了'\0'(其值为0)
{
src++;
dst++;
*dst=*src;
}
//上面的语句可以用下面一个语句来代替
//while(*dst++=*src++);
}
然后,在汇编语言程序通过调用strcpy完成字符串src到dest的复制!
PRESERVE8
THUMB
AREA RESET, DATA, READONLY
EXPORT __Vectors
__Vectors
DCD 0x20004000 ; Top of Stack
DCD Reset_Handler ; Reset Handler
AREA |.text|, CODE, READONLY
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
……;此处需将汇编代码补充完整
import str_cpy
;遵循atpcs规则,以下两条指令为C函数准备传递参数
ldr r0,=src
ldr r1,=dest
bl str_cpy
src
dcb “Where is a will,where is a way!”,0
dest
space 50
end。