汇编:CPU与内存的读写关系

article/2025/9/22 1:54:44

要想学好汇编语言,首先要对CPU等硬件结构有一定的了解。
软件\程序的执行过程:
在这里插入图片描述
最为关键的是需要了解CPU和内存
在学习汇编语言过程中,遇到的绝大部分指令都是跟内存、CPU有关的

文章目录

  • 1、CPU总线
  • 2、CPU内存
  • 3、8086CPU的寻址方式
  • 4、CPU内存的分段管理
  • 5、CPU的典型构成

1、CPU总线

每一个CPU芯片都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互。
总线:一根根导线的集合。
在这里插入图片描述总线的分类:
在这里插入图片描述
1、地址总线

它的宽度决定了CPU的寻址能力
8086的地址总线宽度是20,所以寻址能力是1M( 2^20 )

2、数据总线

它的宽度决定了CPU的单次数据传送量,也就是数据传送速度
8086的数据总线宽度是16,所以单次最大传递2个字节的数据

3、控制总线

它的宽度决定了CPU对其他器件的控制能力、能有多少种控制

在这里插入图片描述
数据传输:
8088的数据总线宽度是8,8086的数据总线宽度是16,分别向内存中写入89D8H,它们各自要传送几次:
在这里插入图片描述
拓展:
在这里插入图片描述

2、CPU内存

各类存储器的逻辑连接情况
在这里插入图片描述

所有的内存单元都有唯一的地址,叫做物理地址
在这里插入图片描述

各类存储器的物理地址情况:

1、内存地址空间的大小受CPU地址总线宽度的限制。8086的地址总线宽度为20,可以定位2^20个不同的内存单元(内存地址范围0x00000~0xFFFFF),所以8086的内存空间大小为1MB。
2、0x00000~0x9FFFF:主存储器。可读可写。
3、0xA0000~0xBFFFF:向显存中写入数据,这些数据会被显卡输出到显示器。可读可写。
4、0xC0000~0xFFFFF:存储各种硬件\系统信息。只读。

下图是各类存储器的逻辑连接-物理地址对应图:
在这里插入图片描述

3、8086CPU的寻址方式

1、CPU访问内存单元时,要给出内存单元的地址。
2、8086有20位地址总线,可以传送20位的地址,1M的寻址能力
3、但它又是16位结构的CPU,它内部能够一次性处理、传输、暂时存储的地址为16位。如果将地址从内部简单地发出,那么它只能送出16位的地址,表现出来的寻址能力只有64KB
在这里插入图片描述那么8086是如何处理这个问题的呢?
8086采用一种在内部用2个16位地址合成的方法来生成1个20位的物理地址。逻辑关系图如下:
在这里插入图片描述描述如下:
在这里插入图片描述
拓展:
1、地址加法器处理逻辑:
在这里插入图片描述分析如下:
在这里插入图片描述2、段地址与偏移地址关系
在这里插入图片描述

结论:CPU可以用不同的端地址和偏移地址生成同一个物理地址。
比如CPU要访问21F60H但愿,则它给出的段地址SA和偏移地址EA满足:SA x 16 + EA = 21F60H 即可。

4、CPU内存的分段管理

1、8086是用起始地址(段地址×16) + 偏移地址 = 物理地址的方式给出物理地址。
2、为了开发方便,我们可以采取分段的方法来管理内存,比如:

1、地址10000H~100FFH的内存单元组成一个段,该段的起始地址为10000H,段地址为1000H,大小为100H。
2、地址10000H1007FH、10080H100FFH的内存单元组成2个段,它们的起始地址为:10000H和10080H,段地址为1000H和1008H,大小都为80H。
在这里插入图片描述

3、偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。

5、CPU的典型构成

在这里插入图片描述
1、对程序员来说,CPU中最主要部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制。
2、不同的CPU,寄存器的个数、结构是不相同的
3、8086CPU

1、有14个寄存器
2、都是16位结构,可以存放2个字节
在这里插入图片描述


http://chatgpt.dhexx.cn/article/KJ3c7fPr.shtml

相关文章

显卡内存和计算机内存,显存和内存的关系和区别

显存和内存是什么关系?显存和内存有什么区别?接下来我们来讨论一下。通常说到显存和内存的时候,还会说一下缓存、存储,我们一起介绍一下。 1、显存 即显卡内存,也叫帧缓存,是用来存储显卡芯片处理过或者即将提取的渲染数据。直白点就是存储图形信息的东东。 像我们平时在…

Linux查看CPU和内存使用情况

top命令 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 – 用基于 top 的命令&#xff0…

CPU、内存、硬盘和主板的关系

一、内存 内存的正式叫法是内存储器,以此来与外存储器区分开。物理上它安装在计算机内部,通常安装在主板上,所以称为内存。 一般情况下我们将8个元器件看做一个单位,即使表示很小的数, 例如 1,也需要8个&…

对cpu和内存的简单理解

对cpu和内存的简单理解 1.前端总线: cpu利用总线来跟内存,硬盘,输入输出设备等进行数据交流 总线:总线就是一根根导线的集合 总线的种类: 数据(进行传输的数据),地址(地址进行寻址操作),控制总线(控制读写操作) 地址总线: 地址总线的宽度决定cpu的寻址能力,单次能寻找地址…

计算机的内存和cpu,内存与CPU二者之间的关系_Intel服务器CPU_服务器产业-中关村在线...

“在一起,在一起”,相信这也是很多人希望的结果,无论是从技术角度,还是从空间角度,似乎二者都有着很多理由被放在一起完成任务。但是,二者为何一直没有“在一起”呢?也许这句歌词可以回答原因&a…

计算机主机是cpu与内存,内存条和CPU之间的关系是什么

您想知道内存和CPU之间的关系是什么吗?这是来自Qiutian.ZqNF.Com的有关内存和cpu之间关系的内容。欢迎阅读! 内存和CPU之间的关系是什么? cpu负责计算和处理,而内存则用于数据交换。当程序或操作员向cpu发出指令时,这些…

cpu和内存的关系(CPU,内存和cache之间的关系)

CPU、内存、主板三者间关系、插座形式、安装注意事项 这种问题很难回答,你可以找一本书看,呵呵 。我只能说出一点,CPU读取数据速度很慢,因为要从硬盘读取,所以用内存来读取。但是用 内存卡,段电后会丢失数据…

计算机中CPU、内存、缓存的关系

CPU(Central Processing Unit,中央处理器) 内存(Random Access Memory,随机存取存储器) 缓存(Cache) CPU、内存和缓存之间有着密切的关系,它们共同构成了计算机系统的核…

万能的串口数据接收及处理方法

搞单片机,肯定少不了串口的使用,不管是调试也好,与其他设备通信也好,是我们不可或缺的利器。接下来就分享一下本人在项目中使用串口接收数据及处理的方法。 先介绍下主要思路,首先需要开一个定时器,我们接收…

数据不平衡的处理方法

数据不平衡经常出现在分类问题上,数据不平衡指的是在数据集中不同类别的样本数量差距很大,比如,在病人是否得癌症的数据集上,可能绝大部分的样本类别都是健康的,只有极少部分样本类别是患病的。下面介绍几个常用的处理…

样本数据异常值处理的三种方法

1.3sigma异常值识别 数据需要服从正态分布,正负3∂的概率是99.7%,那么距离平均值3∂之外的值出现的概率为P(|x-u| 3∂) 0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。 2.IQR…

异常数据处理

常用处理方法: 异常值的处理方法常用有四种: 1.删除含有异常值的记录 2.将异常值视为缺失值,交给缺失值处理方法来处理 3.用平均值来修正 4.不处理 需要强调的是,如何判定和处理异常值,需要结合实际。 # 异常数据…

数据以及空值数据处理方法

第四节 数据七十二变 1、对于简单的数据删除空值数据(NaN)——对于简单的数据进行过滤,如果对于负责的 DataFrame对象进行使用则会存在空值数据过滤不干净 import pandas as pd——导入模块 li[2,NaN,4,6,NaN,4]——数据集 sepd…

数据无量纲处理方法

本文转自:https://blog.csdn.net/weixin_39953618/article/details/111101747 在进行数据分析时,数据具有单位是非常常见的,比如说GDP可以以亿作为单元,也可以以百万作为单位,那么此时就会出现由于单位问题导致的数字大…

大数据量的五种处理方式

http://www.51projob.com/a/bishimianshi/hailiangshuju/2012/0322/111.html 处理海量数据问题,无非就是: 分而治之/hash映射 hash统计 堆/快速/归并排序; Bloom filter/Bitmap;Trie树/数据库/倒排索引;外排序&…

Errors while compiling. Reload prevented

Errors while compiling. Reload prevented来自菜鸟的哭诉 在这边吐槽的同时为各位刚上手前端的各位一个经验 报这个东东的时候,你搜了百分百都是说你没安装webpack等相关配置,从而频繁刷新会报错。 没错,的确是的。 但是,我就…

#error 用法

#error命令是C/C语言的预处理命令之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。 #error [用户自定义的错误消息]注:上述语法成份中的方括号"[]"代表用户自定义的错误消息可以省略不写。举例1:#error Sorry,an error has o…

ERROR: Encountered errors while bringing up the project.

ERROR: Encountered errors while bringing up the project. 错误信息 错误出现的原因是,之前启动的 docker-compose 没有关闭。 解决方法 先把之前的 docker-compose 关闭 docker-compose down之后再执行 docker-compose up

R Error: BiocParallel errors 1 remote errors, element index: 1 506 unevaluated and other errors解决办法

我在用minfi包下面这个函数读取甲基化数据的时候&#xff0c; RGset1 <- read.metharray.exp(targetstargets1,force T) 出现了下面这个报错 查看了自己的idat文件地址&#xff0c;没有错 又查看了target1&#xff08;read.metharray.exp函数的参数之一&#xff09;&#…

Error building Player because scripts had compiler errors

Unity打包出现Error building Player because scripts had compiler errors 这里网上有多数解决方案都是说有一些脚本继承了Editor接口的脚本导致的&#xff0c;这里可以先检查一下&#xff0c;如果有这类脚本创建Editor文件夹&#xff0c;把脚本放进去。还不行的话再添加#if …