找回密码
 register

QQ登录

只需一步,快速开始

查看: 55|回复: 0

[汇编语言] [零基础入门学习]·05·基础知识·内存地址空间·主板·各类存储芯片·内存地址空间

[复制链接]

[汇编语言] [零基础入门学习]·05·基础知识·内存地址空间·主板·各类存储芯片·内存地址空间

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:91
  • 打卡月天数:14
  • 打卡总奖励:91
  • 最近打卡:2025-01-15 02:59:34
Waylee

主题

0

回帖

1万

积分

仙帝

积分
11890
Waylee 2024-12-20 17:28 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

1.11 内存地址空间(概述)

  什么是内存地址空间呢?举例来讲,一个CPU的地址总线宽度为10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成这个CPU的内存地址空间。下面进行深入讨论。首先需要介绍两部分基础知识,主板和接口卡。

1.12 主板

  在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件,这些器件通过总线(地址总线、数据总线、控制总线)相连。这些器件有CPU、存储器、外围芯片组、扩展插槽等。扩展插槽上一般插有RAM内存条和各类接口卡。

1.13 接口卡

  计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的控制。CPU对外部设备都不能直接控制,如显示器、音箱、打印机。直接控制这些设备进行工作的是插在扩展插槽的接口卡。扩展插槽通过总线和CPU相连,所以接口卡也通过总线同CPU相连。CPU可以直接控制这些接口卡,从而实现CPU对外设的间接控制。简单地讲,就是CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外设进行工作。

1.14 各类存储芯片

  一台PC机中,装有多个存储器芯片,这些存储器芯片从物理连接上看是独立的、不同的器件。从读写属性上看分为两类:随机存储器(RAM)和只读存储器(ROM)。随机存储器可读可写,但必须带电存储,关机后存储的内容丢失;只读存储器只能读取不能写入,关机后其中的内容不丢失。这些存储器从功能和连接上又分为以下几类。

  • 随机存储器
    用于存放供CPU使用的绝大部分程序和数据,主随机存储器一般由两个位置上的RAM组成,装在主板上的RAM和插在扩展槽上的RAM。
    *装有BIOS(Basic Input/Output Systme,基础输入/输出系统)的ROM
    BIOS是由主板和各类接口卡(如显卡、网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最新基础的输入输出。在主板和某些接口卡上插有存储相应BIOS的ROM。例如,主板上的ROM中存储着主板的BIOS(通常称为系统BIOS);显卡的ROM中存储着显卡的BIOS;如果网卡上装有ROM,那其中就可以储存网卡的BIOS。
  • 接口卡上的ROM
    某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有RAM。最典型的是先显示卡上的RAM,一般 称为显存。显示卡随时将显存中的数据向显示器上输出。换句话说,我们将需要先生的内存写入显存,就会出现在显示器上。

  图1.7 展示了PC系统中各类存储器的逻辑连接情况。

001.webp

1.15 内存地址空间

  上述的这些存储器,在物理上是独立的器件,但是在以下两点上相同。

  • 都和CPU总线相连
  • CPU对他们进行读或写的时候都通过控制线发出内存读写命令。

  这也就是说,CPU在操控它们的时候,把它们都当做内存来对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这些逻辑存储器就是我们所说的内存地址空间。在汇编这本课中,我们所面对的是内存地址空间。

  图1.8 展示了 CPU 将系统中各类存储器看作一个逻辑存储器的情况。

002.webp
图1.8 将各类存储器看作一个逻辑存储器

  在图1.8中,所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器,每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。

  假设图1.8中的内存地址的地址段分配如下。

  地址0~7FFFH的32KB空间为随机存储器的地址空间;
  地址8000H~9FFFH的8KB空间为显存地址空间;
  地址A000H~FFFFH的24KB空间为各个ROM的地址空间。

  这样,CPU向内存地址为1000H的内存单元中写入数据,这个数据就被写入主随机存储器中;CPU向内存地址为8000H的内存单元写入数据,这个数据就被写入显存中,然后会被显卡输出到显示器上;CPU向内存地址为C000H的内存单元中写入数据的操作是没有结果的,C000H单元中的内容不会被改变,C000H单元实际上就是ROM存储器中的一个单元。

  内存地址空间的大小受CPU地址总线宽度的限制。8086CPU地址总线宽度为20,可以传送2²⁰个不同的地址信息(大小从0至2²⁰-1)。即可以定位2²⁰个内存单元,则8086PC的内存地址空间大小为1MB。同理,80386CPU的地址总线宽度为32,则内存地址空间最大为4GB。 雪舞注释:2²⁰ = 1048576/1024 = 1024KB = 1MB

  我们在基于一个计算机硬件系统编程的时候,必须知道这个系统中的内存地址空间分配情况。因为当我们想在某类存储器中读写数据的时候,必须知道它的第一个单元的地址和最后一个单元的地址,才能保证读写操作是在预期的存储器中进行。比如,我们希望向显示器输出一段信息,那么必须将这段信息写到显存中,显卡才能将它输出到显示器上。要向显存中写入数据,必须知道显存在内存地址中的地址。

  不同的计算机系统的内存地址空间分配情况是不同的,图1.9展示了8086PC机内存地址分配的基本情况。

图1.9 8086PC机内存地址空间分配

图1.9 8086PC机内存地址空间分配

  图1.9 告诉我们,从地址0~9FFFF的内存单元中读取数据,实际上就是在读取主随机存储器中的数据;向地址A0000~BFFFF的内存单元中写数据,就是向显存中写入数据,这些数据会被显示卡输出到显示器上;我们想地址C0000~FFFFF的内存单元写入数据的操作的无效的,因为这等于改写只读存储器中的内容。

内存地址空间

  最终运行程序的是CPU,我们用汇编语言编程的时候,必须要从CPU的角度考虑问题。对CPU来讲,系统的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受CPU寻址能力的限制。这个逻辑存储器即是我们所说的内存地址空间。

  对于初学者,这个概念比较抽象,我们在后续的课程中将通过一些编程实践,来增加感性认识。

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-15 17:47 , Processed in 0.113562 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

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