接着上次的博客继续写,今天主要写内存空间地址、逻辑存储器
1.6 内存空间地址
上次我们说到CPU和内存的信息交互需要通过三种总线,其中地址总线是要去内存中找我们需要的地址,那么这个地址又是怎么找的呢?
这就需要另外一个概念,内存地址空间。
我们上次说,若CPU的地址总线宽度为N,它的寻址空间就为2的N次方Byte(一个内存单元为1Byte)。
我们以8086处理器来举例,它的地址总线的宽度为20,则可寻址2的20次方——1MB个内存单元,所以它的内存空间地址是1MB。
那么这些0到1MB的内存空间是怎么分配的呢?
这里需要结合一下内存的器件去看一下。我们都知道内存分为RAM和ROM两种。
RAM的特点是可读可写但缺电就没了;
ROM是在造这个东西的时候就直接写好了里面的东西,所以只能读取。
从功能分配上来讲,RAM里面存放的是计算机运行期间一直在动态变化的数据。而ROM里面存放的是计算机启动时就要用到的信息 或者其他固定的信息。
实际例子如下:
注:接口卡的意思是:由于CPU无法直接控制外设,比如显示器打印机什么的,这时候需要插在扩展插槽上的接口卡去受CPU的控制,从而控制外设。(这里我从网上了解的和书上有冲突,建议只在考试的时候这样写)
而接口卡上的BIOS意思是:因为你的显卡啊网卡啊什么的都是可以更换的,所以不可能在主板的系统BIOS上就把所有需要的信息都写好,即很多东西都有自己的BIOS。
以上所说的所有内容共同构成了这个内存地址空间。
1.7 逻辑存储器——统一编址
正如上面所说,整个电脑有太多太多存储器,每个器件上面都还有各自单独的存储器,这些都叫物理存储器。
我们为了方便管理,将所有的物理存储器在逻辑上都看做一个由若干个存储单元组成的逻辑存储器。
而每个物理存储器都在这个逻辑存储器中占有一个地址段,即一段地址空间。这样就做到了统一编址,即我们说一个地址,就能知道是哪个器件的哪一块东西。
还记得上次说总线的时候的寻址吗?CPU寻到的地址,就是我们现在说的统一编址后的地址。
我们还是以8086处理器来举例,看看它是如何分配的:
由图可知,从00000到9FFFF这共640K的空间,是给主存储器的(内存条等)。A0000(也就是9FFFF的下一位)开始,到BFFFF共128K的空间给显存。剩下的分配给ROM们,比如各种BIOS什么的。
这个是8086PC机的分配方案,换个其他的处理器可能就不是这样的分配了(毕竟本身从存储单元的数量上就不一样)。所以我们在写汇编语言的时候,要先了解了我们的目标机器的分配方案。
基础知识的划分就先到这里,接下来应该是要学一下寄存器的一些知识和CPU工作原理等等(其实上课已经讲过了但是我当时在看lgd的比赛)
学习汇编需要搭配实验,之后也会就实验去写一些博客。