搜索
bottom↓
回复: 28

想搞清楚单片机的ROM和RAM,望大神们不吝赐教

[复制链接]

出0入0汤圆

发表于 2013-11-17 17:11:09 | 显示全部楼层 |阅读模式
微机学不好!对于单片机的rom和ram只知道rom是用于存放用户程序,数据和表格等信息,ram是用于程序执行的中间结果和过程数据一些简单的了解。但是他们之间有什么联系呢?对它们的内存地址不懂具体什么叫直接寻址间接寻址,还有特殊功能寄存器也搞不清楚。请大家指导指导。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-11-17 18:43:39 | 显示全部楼层
这些基础理论问题最好还是看书

出0入0汤圆

发表于 2013-11-17 19:17:06 | 显示全部楼层
RAM相当于PC机的内存,ROM相当于PC机的硬盘

出0入0汤圆

发表于 2013-11-17 19:28:00 | 显示全部楼层
ROM是片内程序存储器(存放我们写的程序),RAM是内部数据存储器(程序运行时,如LED的显示状态或显示值,会随着I /O测量的结果而变动,这些值就是存储在RAM的)具体的空间大小,视单片机型号而定

出0入0汤圆

 楼主| 发表于 2013-11-17 20:05:28 | 显示全部楼层
18814888577 发表于 2013-11-17 19:28
ROM是片内程序存储器(存放我们写的程序),RAM是内部数据存储器(程序运行时,如LED的显示状态或显示值, ...

这个可以理解,小弟我主要是对单片机的寻址方式迷糊,直接寻址,间接寻址具体是怎么寻址的搞不清楚

出0入0汤圆

发表于 2013-11-17 20:26:07 | 显示全部楼层
ruan18278816371 发表于 2013-11-17 20:05
这个可以理解,小弟我主要是对单片机的寻址方式迷糊,直接寻址,间接寻址具体是怎么寻址的搞不清楚 ...

    这个我也不能很好地表达,我尽量说清楚吧,寻址的目的就是找到操作数(可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号),并对其操作。
    而寻址凡是就是用来找到这个要操作的对象的方法
1.直接寻址   直接把这个操作对象所在的地址用一下,通过操作这个地址来操作具体的对象
2.立即寻址   也就是直接把这个操作对象的值直接用来操作了
3.寄存器方式寻址  通过使用R0,R1所指向的数据来对指定的对象进行操作,在我看来就像个指针,或者是事先把操作对象的值赋值给了R0,然后对R0操作
4.寄存器间接寻址  和“寄存器方式寻址”就像前面的直接寻址和立即寻址一样,寄存器间接寻址的话R0中存放的是操作对象的地址,而不是操作对象的值
5.基址加变址间接寻址  和 位寻址 的话不怎么用,所以没什么理解

我把知道的都告诉你了。。。。

出0入0汤圆

 楼主| 发表于 2013-11-17 20:39:23 | 显示全部楼层
18814888577 发表于 2013-11-17 20:26
这个我也不能很好地表达,我尽量说清楚吧,寻址的目的就是找到操作数(可能是一个具体的数据,也可能 ...

多谢仁兄,又回到上微机课的感觉了,那时没有认真听,后悔了!

出0入0汤圆

发表于 2013-11-17 21:08:12 | 显示全部楼层
本帖最后由 18814888577 于 2013-11-17 21:10 编辑
ruan18278816371 发表于 2013-11-17 20:39
多谢仁兄,又回到上微机课的感觉了,那时没有认真听,后悔了!


额,我是菜鸟,学校教的是51汇编的,用的是《新编MCS-51单片机应用设计》(第三版)一上来就讲的寄存器,寻址,同学基本都被搞得头大没有兴趣了,我现在就是兴趣支撑着我,共同进步吧!
千万不要后悔没有认真听,这些东西都是需要自学的,我根本没想过要从大学课堂里学到技术的东西!能告诉我去图书馆看哪本书,我就心满意足了!

出0入0汤圆

发表于 2013-11-17 21:22:14 | 显示全部楼层
高校在这方面的教学方法和模式存在很大的问题。

出0入0汤圆

 楼主| 发表于 2013-11-17 21:24:39 | 显示全部楼层
18814888577 发表于 2013-11-17 21:08
额,我是菜鸟,学校教的是51汇编的,用的是《新编MCS-51单片机应用设计》(第三版)一上来就讲的寄存器, ...

仁兄说的也有道理,我们学校只有计算机专业才有汇编这门课,我们学电子的只有在上微机的时候才接触过汇编,微机课也是这学期刚开的,课还没讲完,单片机下个学期才开课。所以照着学校的课程上自己不先搞过根本学不了,在宿舍的打游戏同志上这些课早就不知所云了!

出0入0汤圆

发表于 2013-11-17 21:27:57 | 显示全部楼层
哥们,你上班了没?目测你上学时没好好学习。

出0入0汤圆

发表于 2013-11-17 21:34:54 | 显示全部楼层
18814888577 发表于 2013-11-17 21:08
额,我是菜鸟,学校教的是51汇编的,用的是《新编MCS-51单片机应用设计》(第三版)一上来就讲的寄存器, ...

握个手,我们学院学微机的就我们专业学的是汇编,不过我免修了

出0入0汤圆

发表于 2013-11-17 21:37:23 | 显示全部楼层
貌似51的ROM和RAM是哈佛结构,用MOV和MOVX区分,个人拙见

出0入0汤圆

 楼主| 发表于 2013-11-17 21:42:28 | 显示全部楼层
mahengyu 发表于 2013-11-17 21:27
哥们,你上班了没?目测你上学时没好好学习。

没有呢,我还是个学今年大二,不过感觉学习的时间不多了!得努力学习了

出0入0汤圆

发表于 2013-11-17 22:23:23 | 显示全部楼层
proteldxp 发表于 2013-11-17 19:17
RAM相当于PC机的内存,ROM相当于PC机的硬盘

抓到的第一个误导人的:
硬盘可以认为是外存,和内存相对;
但这里说的是 ROM 和 RAM。
你这个比喻是彻底错误的。

出0入0汤圆

发表于 2013-11-17 22:24:26 | 显示全部楼层
18814888577 发表于 2013-11-17 19:28
ROM是片内程序存储器(存放我们写的程序),RAM是内部数据存储器(程序运行时,如LED的显示状态或显示值, ...

抓住第二个误导人的:
RAM也可以用来放程序的,你电脑的程序就是放在RAM里面执行的。

出0入0汤圆

发表于 2013-11-17 22:26:42 | 显示全部楼层
Achilics 发表于 2013-11-17 21:37
貌似51的ROM和RAM是哈佛结构,用MOV和MOVX区分,个人拙见


抓住第三个误导人的:
MOVX也是访问数据存储空间(也就是你们口中的RAM)的(针对51来说)
MOVC才是访问程序存储空间(也就是你们口中的ROM)的

当然,对于这个ROM和RAM的区别,上述讨论中是完全错误的。

另外补充一下,所谓的“哈弗架构”并不是对ROM、RAM来说的,而是对CPU来说的。

出0入0汤圆

发表于 2013-11-17 22:39:04 | 显示全部楼层
Cliff 发表于 2013-11-17 22:24
抓住第二个误导人的:
RAM也可以用来放程序的,你电脑的程序就是放在RAM里面执行的。 ...

敢于站出来指出别人错误的,一定是大神啊! 我会经常来请教的!

出0入0汤圆

发表于 2013-11-17 22:53:59 | 显示全部楼层
Cliff 发表于 2013-11-17 22:23
抓到的第一个误导人的:
硬盘可以认为是外存,和内存相对;
但这里说的是 ROM 和 RAM。

这个是郭天翔教的

出0入0汤圆

发表于 2013-11-17 23:52:10 | 显示全部楼层
程序编译完成以后生成 hex或者bin格式的文件。
烧录是把二进制机器码放到ROM区域中,变量和堆栈放到RAM中去。程序都是从ROM 的0地址开始跑,需要变量就从RAM抓过来。 ROM 就是从第0地址开始到最后一个地址玩命循环跑,根据不同的机器码操作不同变量。

出0入0汤圆

发表于 2013-11-18 12:53:14 | 显示全部楼层
error1314 发表于 2013-11-17 22:53
这个是郭天翔教的

哦,这么有名的教程呐……

ROM是不可写的,居然拿硬盘来做对比,实在是不可思议!
拿张光盘来比,我还稍微能接受些,尽管,还是非常非常的不合适的:接口不同,内存接口和硬盘接口完全不一样。

出0入0汤圆

发表于 2013-11-18 13:07:33 | 显示全部楼层
Cliff 发表于 2013-11-17 22:24
抓住第二个误导人的:
RAM也可以用来放程序的,你电脑的程序就是放在RAM里面执行的。 ...

电脑程序是放在ROM中的,只是运行时会把它加载到RAM中,然后CPU再从RAM中调用,个人拙见

出0入0汤圆

发表于 2013-11-18 13:21:01 | 显示全部楼层
skycn163 发表于 2013-11-18 13:07
电脑程序是放在ROM中的,只是运行时会把它加载到RAM中,然后CPU再从RAM中调用,个人拙见 ...

怎么会是ROM呢。
绝大部分人的电脑程序是在硬盘,而不是ROM中呐。
除了BIOS,算是在ROM中
其他都不是啊。

出0入0汤圆

发表于 2013-11-18 16:38:09 | 显示全部楼层
Cliff 发表于 2013-11-18 12:53
哦,这么有名的教程呐……

ROM是不可写的,居然拿硬盘来做对比,实在是不可思议!

rom不是可写的吗

出0入0汤圆

 楼主| 发表于 2013-11-18 19:55:13 | 显示全部楼层
多谢各位仁兄了,小弟我发现了一篇博客里面讲得就是单片机的rom和ram的,觉得还不错
http://blog.sina.com.cn/s/blog_98ca54fc01017y4t.html

出0入0汤圆

发表于 2013-11-18 20:25:36 | 显示全部楼层
果断学习了

出0入0汤圆

发表于 2013-11-19 10:01:18 来自手机 | 显示全部楼层
个人感觉电脑里只有bios是rom
如果bios完了,你的电脑也就完了。你在bios中的所有设置都是保存在ram中,所以bios是不能断电的,打开主板就知道了,bios始终由一个纽扣电池供电,如果电池没电,你对它的所有设置都变成初始设置了。
而且电脑的运行方式和单片机不同,开机时由bios将引导程序加载到内存,然后由cpu处理,引导程序再从硬盘加载操作系统。

出0入0汤圆

发表于 2013-11-19 10:02:57 来自手机 | 显示全部楼层
本帖最后由 kang732816702 于 2013-11-19 10:09 编辑

个人感觉电脑里只有bios是rom
如果bios完了,你的电脑也就完了。你在bios中的所有设置都是保存在ram中,所以bios是不能断电的,打开主板就知道了,bios始终由一个纽扣电池供电,如果电池没电,你对它的所有设置都变成初始设置了。
而且电脑的运行方式和单片机不同,开机时由bios将引导程序加载到内存,然后由cpu处理,引导程序再从硬盘加载操作系统。
就是所谓的mmu  ,可以把代码放到硬盘里,执行时cpu在ram中运行代码,如果需要的代码数据内在ram中,就去一级缓存中找,一级缓存没有再去二级缓存,二级缓存没有再去三级,然后是内存,最后是硬盘。所以单片机和cpu的运行方式不一样。

出0入0汤圆

发表于 2013-11-19 10:05:51 来自手机 | 显示全部楼层
正是因为cpu支持mmu才能运行windows这样的大型软件。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表