1,HEX文件包含了代码数据。是由链接器统一分配ROM地址。
2. 程序中的变量,也是在编译连接时,分配了RAM地址。不存在载入的问题,程序指令对变量的操作,就是对RAM地址的操作,地址值存在在指令中。
3. 堆栈在程序初始化时设置堆栈指针。Keil C 会自动设置好。
4. 一般的51单片机代码是从 0000开始执行,这是它的复位地址。也有别的型号的单片机并不一定从0开始执行。程序从0开始执行,但它执行的第一句往往是一个跳转指令(这个Keil C也是自动写好的),跳到另一块地址去执行,而不会顺序执行到 中断的地址的。
你如果是用汇编写程序,这些都是要你自己去分配的,用C写程序,由编译器来完成这些底层操作。
用keilc写程序,上述问题都不用考虑,全由keilc编译时自己处理了,只要按C语言的标准和要求写程序就行。。至于中断向量,也是根据interrupt的定义来自动处理的。
STC单片机,烧入程序后,重新上电就开始执行程序了。