关于计算机和单片机程序执行过程的几个问题
计算机或单片机之所以能执行一些程序,是因为我们认为的给它的储存器写入程序。我的问题是:1.计算机如何读取存储器的一条程序并开始执行的呢(整个过程希望能详细一点)?2.我刚...
计算机或单片机之所以能执行一些程序,是因为我们认为的给它的储存器写入程序。
我的问题是:
1.计算机如何读取存储器的一条程序并开始执行的呢(整个过程希望能详细一点)?
2.我刚接触单片机,我们是程序烧到flashrom里面,然后cpu调用执行。FlashROM里有很多地址,我们在烧程序的时候能否自己设定地址呢?如果能,cpu、又是如何检测到main函数所在的物理内存呢?
3.我理解的存储器相当一剧场里一个一个座位,每个座位都会有个编号,相当于储存器的物理地址,那我们能不能在一块FlashROM中烧两个程序(分别在不同物理地址,没有覆盖),让cpu执行完一条程序后在执行下一条? 展开
我的问题是:
1.计算机如何读取存储器的一条程序并开始执行的呢(整个过程希望能详细一点)?
2.我刚接触单片机,我们是程序烧到flashrom里面,然后cpu调用执行。FlashROM里有很多地址,我们在烧程序的时候能否自己设定地址呢?如果能,cpu、又是如何检测到main函数所在的物理内存呢?
3.我理解的存储器相当一剧场里一个一个座位,每个座位都会有个编号,相当于储存器的物理地址,那我们能不能在一块FlashROM中烧两个程序(分别在不同物理地址,没有覆盖),让cpu执行完一条程序后在执行下一条? 展开
4个回答
展开全部
1,计算机有地址总线、数据总线,计算机一上电就从一个固定的地址取第一条指令,这一条指令一般为跳转指令。接下来计算机就会不停的取指令、执行指令,这些工作一般为流水线结构。每条指令取完后,去哪里取下一条指令,这个是CPU自动完成的,写C语言的同学就不用管了。
2,烧程序的时候,C语言不能自定义代码段要放的位置,汇编是可以的。main函数的地址是由编译噐决定的,汇编时可以自己决定。
3,烧多个程序是可以的,但是CPU的结构决定了CPU就只有一个入口,所以你的代码只能有一个main函数。两个或以上的源程序只有一个能够正确的执行,另一点永远也不会执行。你已经确定了执行一个后再执行另一个,为什么不把两个程序写成两个函数呢?
2,烧程序的时候,C语言不能自定义代码段要放的位置,汇编是可以的。main函数的地址是由编译噐决定的,汇编时可以自己决定。
3,烧多个程序是可以的,但是CPU的结构决定了CPU就只有一个入口,所以你的代码只能有一个main函数。两个或以上的源程序只有一个能够正确的执行,另一点永远也不会执行。你已经确定了执行一个后再执行另一个,为什么不把两个程序写成两个函数呢?
展开全部
不说复杂的往简单说
1、有个程序指针,里面开机的时候是全0,也就是全是低电平,把这个信号送到程序存储空间里去,程序存储器里有且只有一个数据地址是全0的,这时,这个00..00存储单元就被“激活”(使能)了,其他所有的存储单元都被“屏蔽”了,并且把总线释放了(总线是连在一起的),被激活的这个存储单片呢就把里面的数据(也是高低电平)往总线上送,该拉高的拉高,该拉低的拉低。CPU这边呢从总线上把信号送到什么译码器里去,判断下面要干什么,比如是两个数相加,就去两个数各自的存储空间里取数,然后一加,指令执行完以后把程序指针加上这一条指令的长度,让他指向下一条指令。
2、能啊。亲,学了汇编不?一开始不是有个ORG 0000H LJMP XXX的什么的啊,用C语言不知道这些,编译器都帮你搞定了。ORG 0000h 就是说把下面的指令放到0x0000开头的存储空间去。之后一个跳转指令跳到MAIN函数所在的地址。
3、没看懂,如果你写了两个函数,在存储区里不就类似有两个程序了?地址也不冲突。
1、有个程序指针,里面开机的时候是全0,也就是全是低电平,把这个信号送到程序存储空间里去,程序存储器里有且只有一个数据地址是全0的,这时,这个00..00存储单元就被“激活”(使能)了,其他所有的存储单元都被“屏蔽”了,并且把总线释放了(总线是连在一起的),被激活的这个存储单片呢就把里面的数据(也是高低电平)往总线上送,该拉高的拉高,该拉低的拉低。CPU这边呢从总线上把信号送到什么译码器里去,判断下面要干什么,比如是两个数相加,就去两个数各自的存储空间里取数,然后一加,指令执行完以后把程序指针加上这一条指令的长度,让他指向下一条指令。
2、能啊。亲,学了汇编不?一开始不是有个ORG 0000H LJMP XXX的什么的啊,用C语言不知道这些,编译器都帮你搞定了。ORG 0000h 就是说把下面的指令放到0x0000开头的存储空间去。之后一个跳转指令跳到MAIN函数所在的地址。
3、没看懂,如果你写了两个函数,在存储区里不就类似有两个程序了?地址也不冲突。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算机或单片机之所以能执行一些程序,是因为我们认为的给它的储存器写入程序。
这个就是错误的 应该说是他们可以从储存器里将程序读入内存 或者运算器中
1 计算机如何读取存储器的一条程序并开始执行的呢 这个要是每一步都说可以写3部以上的书
2FlashROM里有很多地址,我们在烧程序的时候能否自己设定地址呢 这个可以没问题
这个是通过特定的协议 来的 cpu检测买你函数的位置 这个是需要看单片机的寻址模式来确定的
3 这个 你的理解只到了表面 是的 可以说和剧场一样但是 他们还存在一种指针关系 就和票一样 可以在rom中烧多个程序 这个是没问题的有些时候 他们都可以同时被执行
这个就是错误的 应该说是他们可以从储存器里将程序读入内存 或者运算器中
1 计算机如何读取存储器的一条程序并开始执行的呢 这个要是每一步都说可以写3部以上的书
2FlashROM里有很多地址,我们在烧程序的时候能否自己设定地址呢 这个可以没问题
这个是通过特定的协议 来的 cpu检测买你函数的位置 这个是需要看单片机的寻址模式来确定的
3 这个 你的理解只到了表面 是的 可以说和剧场一样但是 他们还存在一种指针关系 就和票一样 可以在rom中烧多个程序 这个是没问题的有些时候 他们都可以同时被执行
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.使用PC指针读
2.main之前会有跳转程序,编译软件自动完成了。keil里可以看到。
3.可以。
5分就这样回复吧。
2.main之前会有跳转程序,编译软件自动完成了。keil里可以看到。
3.可以。
5分就这样回复吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询