RAM 和ROM

2019-03-24 18:31发布

请教下各位大神关于51存储器的问题,在写程序时我们会把数据表存在1000H里,如 ORG 1000H  DB 09H,90H... 那么请问这些数据是在RAM 还是在ROM上呢
51的片内ROM地址是0-0fffH  片内RAM 0-FFH,没有1000H啊 没有扩展外部的储存器 ,那1000H在哪里呢
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
chunyang
1楼-- · 2019-03-25 00:42
 精彩回答 2  元偷偷看……
小粮zz
2楼-- · 2019-03-25 04:44
chunyang 发表于 2013-12-24 18:40
数据在哪里由代码决定,ROM数据和RAM数据的定义指令不同。

   ORG 1000H
   TABLE: DB  0C0H,0F9H,24H,30H,19H,12H,2H,0F8H,0H,10H
程序里是这样写的 就是在rom的1000h处存数据,51片内rom是0000h-0fffh,并没有1000h,在proteus中仿真可以运行,我没有外扩rom,这个表存在哪里了呢
chunyang
3楼-- · 2019-03-25 09:12
小粮zz 发表于 2013-12-25 16:03
ORG 1000H
   TABLE: DB  0C0H,0F9H,24H,30H,19H,12H,2H,0F8H,0H,10H
程序里是这样写的 就是在rom的 ...

如果地址超出实际的存储容量,高位会被自动丢弃,就你给出的情形而言,1000H会变为0000H,仿真会没问题,但在实际系统上这么做是不行的,必须给予符合资源的地址。
小粮zz
4楼-- · 2019-03-25 12:52
 精彩回答 2  元偷偷看……
chunyang
5楼-- · 2019-03-25 17:28
小粮zz 发表于 2013-12-26 10:32
懂了,谢谢,在实际系统中,也不知道程序在rom的空间啊!那把这个表定义在哪好些呢,是最后面吗

你不必定义地址,只定义性质,编译程序会自动分配。
小粮zz
6楼-- · 2019-03-25 17:38
chunyang 发表于 2013-12-26 14:40
你不必定义地址,只定义性质,编译程序会自动分配。

您说的是C吧!我打算好好研究下单片机,所以就用汇编在写程序,了解下存储器、寄存器之类的,所以问您这个问题。对于单片机,希望您能给些指导,以便熟练掌握,而不是只写程序。

一周热门 更多>