汇编语言之寄存器(CPU工作原理)(1)

简介: 汇编语言之寄存器(CPU工作原理)(1)

1、介绍

一个典型的CPU,由运算器、控制器、寄存器等器件组成,对于游戏修改者来说,重点学习寄存器,其它不必管。

不同的CPU,寄存器的个数、结构是不相同的,8086CPU有14个寄存器,每个寄存器有一个名称,我们对它进行分类:


1.通用寄存器:AX、BX、CX、DX


2.段寄存器:CS、SS、DS、ES


3.指针寄存器:SP、BP


4.变址寄存器:SI、DI


5.指令指针寄存器:IP


6.标志寄存器:FR

2、通用寄存器

AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。

以AX为例,寄存器的逻辑结构图如下:


2、通用寄存器

AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。

以AX为例,寄存器的逻辑结构图如下:

15.png

字在寄存器中的存储字在寄存器中的存储

16.png

3 字在寄存器中的存储

16.png

4、物理地址

存储单元又叫内存单元,以后我们多数用内存单元这一名称。

所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地

址称为物理地址。

CPU通过地址总线送入内存的,必须是一个内存单元的物理地址,在CPU向地址总线上发出物理地址之前,必须要在内部先

形成这个物理地址,不同的CPU可以有不同的形成物理地址的方式,我们现在讨论8086CPU是如何在内部形成内存单元的物理

地址的。


5、 8086CPU给出物理地址的方法

8086CPU有20位地址总线,可以传送20位地址,而8086CPU内部结构是16位的,一次性只能传送16位的地址,怎么


解决20位地址与16位地址不一致的问题呢?8086CPU采用一种在内部用2个16位地址合成的方法来形成一个20位的物理地


址。


当8086CPU要读写内存时,怎样在CPU内部形成物理地址的呢?


1:CPU中的相关部件提供2个16位的地址,一个称为段地址,另一个称为偏移地址。


2:段地址和偏移地址通过内部总线送入一个称为地址加法器的部件。


3:地址加法器将这两个16位地址合成为1个20位的物理地址。


地址加法器采用“段地址×16+偏移地址”的方法合成物理地址。即:段地址×16+偏移地址=物理地址。


“段地址×16”可以理解为段地址的16倍,以下这个说法更好理解。


我们把16转化为十六进制10,然后计算一下。假设段地址=2A7,2A7×10=2A70,计算结果2A70相对于段地址2A7左


移了一位,所以,段地址×16可以理解为:段地址左移一位。


问答题:如果段地址=A100,偏移地址=42B,那么,物理地址=?


答:段地址×16=段地址左移一位,即A100左移一位=A1000,A1000+42B=A142B,所以,物理地址是:A142B。


8086CPU要访问地址为123C8H的内存单元,此时,地址加法器的工作过程如下图所示(图中数据皆为十六进制表示):

17.png


相关文章
|
2月前
|
安全 Linux KVM
倚天产品介绍|倚天虚拟化:CPU虚拟化原理介绍
虚拟化技术中最关键的技术之一就是CPU虚拟化。在没有硬件辅助虚拟化技术出来之前,通常都是通过TCG(软件进行指令翻译)的方式实现CPU虚拟化。但是由于TCG方式的虚拟化层开销太大,性能太差,因此引入了硬件辅助虚拟化技术。
|
7月前
|
SQL Java 数据库连接
联表查询 && 索引 && 事务 && JDBC使用 &&CPU工作原理 && 线程概念 && Thread类的用法
联表查询 && 索引 && 事务 && JDBC使用 &&CPU工作原理 && 线程概念 && Thread类的用法
135 0
|
1天前
|
存储 算法 Linux
【计算机操作系统】深入探究CPU,PCB和进程工作原理
【计算机操作系统】深入探究CPU,PCB和进程工作原理
|
2月前
|
存储 缓存 并行计算
【软件设计师备考 专题 】CPU和存储器的组成、性能和基本工作原理
【软件设计师备考 专题 】CPU和存储器的组成、性能和基本工作原理
56 0
|
7月前
|
机器学习/深度学习 人工智能 并行计算
CPU 和 GPU 的协同工作原理
CPU 和 GPU 的协同工作原理
323 0
|
8月前
|
安全 Linux 调度
倚天虚拟化:CPU虚拟化原理介绍
虚拟化技术中最关键的技术之一就是CPU虚拟化。在没有硬件辅助虚拟化技术出来之前,通常都是通过TCG(软件进行指令翻译)的方式实现CPU虚拟化。但是由于TCG方式的虚拟化层开销太大,性能太差,因此引入了硬件辅助虚拟化技术。
|
11月前
|
缓存
CPU、处理器、内存、外存、寄存器、缓存的区别
CPU、处理器、内存、外存、寄存器、缓存的区别
1264 0
|
算法 Linux PHP
PHP是如何和Linux的CPU交互的?生命周期是怎样的?底层原理是什么?
PHP是如何和Linux的CPU交互的?生命周期是怎样的?底层原理是什么?
|
安全 Linux
如何查看Linux服务器的CPU频率?底层原理是什么?
如何查看Linux服务器的CPU频率?底层原理是什么?
1117 0
|
PHP 开发者
PHP是如何和电脑CPU交互的?底层原理是什么?
PHP是如何和电脑CPU交互的?底层原理是什么?