欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

初学汇编,问个cpu与对外芯片的有关问题

更新时间: 2014-01-05 03:16:41 责任编辑: Author_N1

 

初学汇编,问个cpu与对外芯片的问题
初学汇编,看的是王爽的《汇编语言》刚开始看第一章,讲到总线有地址总线,数据总线,控制总线,第一章讲的都是从内存中取数据,就是说只讲了从内存中取数据,因为计算机可能还有显卡的显存之类,
我想问的是用汇编语言来取数据时候,是不是要先指定从哪个芯片取?比如是内存还是显存。
然后 这三种总线都是针对内存来说的吗?还是说cpu对外的芯片都有这3种总线呢?
--参考方法--
是的,cs:eip就是间接的指定从哪个芯片读取,这三个总线是针对内存来说的(粗略理解),并且芯片都是与这三个总线连在一块儿的,地址总线是反应cpu的寻址能力,控制总线就是控制读写,数据总线传数据的,其中地址总线跟控制总线都是为数据总线服务的
--参考方法--
引用:
Quote: 引用:

是的,cs:eip就是间接的指定从哪个芯片读取,这三个总线是针对内存来说的(粗略理解),并且芯片都是与这三个总线连在一块儿的,地址总线是反应cpu的寻址能力,控制总线就是控制读写,数据总线传数据的,其中地址总线跟控制总线都是为数据总线服务的


有个新问题,如果地址总线的宽度是16,那么它的寻址能力是多少啊,这个寻址能力指的是啥?


以16位的CPU来说,地址总线长度为一共有20位,由0x00000-0xFFFFF,其中0x00000-0x9FFFF是分给RAM就是我们所说的内存,而高地址从0xA0000-0xFFFFF一般是分给外部操作的IO设备用的,为什么要这么用呢,是因为效率的问题,这样对IO的操作不用通过in和out命令来操控直接操控内存就可以把对应的数值读入或写出,例如显存B700:0000到B700:FFFF就是20位地址的B7000-C6FFF,这段地址是分配给显存的用来让CPU直接操作显卡就像读写内存一样,但是随着CPU的改变由16位到32位地址已经远远超过了1M所以我们现在使用的32位CPU内存地址虽然在0x0000 0000 - 0xFFFF FFFF 但是能使用的却不够4GByte,而且RAM地址不是连续的,就好像显存就给RAM地址应生生的分开了,内存地址并不都分给RAM(内存)有些也分给ROM(就是我们常说的外部设备)。
16位的地址总线寻址能力在0x0000-0xFFFF 就是64KByte,但是intel的16位cpu的寻址能力却是1MByte因为Intel使用的是20位地址总线。寻址能力就是指最多可以由多大的内存,16位地址总线=2^16=2^6*1026=64*1024。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:16:41
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20318/
本文WWW.DOC100.NET DOC100.NET版权所有。