第二章 寄存器
2.1、通用寄存器
Cpu概述
一个典型的cpu由运算器、控制器、寄存器等器件组成。这些器件靠内部总线相连。
内部总线和外部总线的区别:
内部总线实现cpu内部各个器件之间的联系。
外部总线实现cpu和主板上其他器件的联系
8086cpu有14个寄存器 名称为AX、BX、CX、DX、SI、DI、BP、IP、CS、SS、DS、ES、PSW
8个通用寄存器
8086cpu所有的寄存器都是16位的。可以存放两个字节。
AX、Bx、CX、DX通常从来存放一般性的数据被称为通用寄存器
8086上一代cpu中寄存器都是8位的
AX可以分为AH(高位)和AL(低位)
AX的低8位(0-7位)构成了AL寄存器
AX的高8位(8-15位)构成了AH寄存器
AL和AH寄存器是可以独立使用的8位寄存器
2.2、字在寄存器中的存储
一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。
注意:
2.3.、几条汇编指令
汇编指令不区分大小写
Mov ax 18 ---将18送入寄存器AX --- AX = 18
Mov ah 78 ---将78送入寄存器Ah --- AH = 78
2.4、物理地址
Cpu访问内存单元时要给出内存单元的地址,所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。
Cpu通过地址总线送入存储器的,必须是一个内存单元的物理地址。在cpu向地址总线发出物理地址之前,必须要内部形成这个物理地址,不同的cpu可以有不同的形成物理地址的方式。
2.5、16位结构cpu
概述的讲。16位结构描述了一个cpu具有以下几个方面特性
- 运算器一次最多可以处理16位的数据
- 寄存器的最大宽度为16位
- 寄存器和运算器之间的通路是16位的
2.6、8086cpu给出物理地址的方法
8086有20位地址总线,可传送20位地址,寻址能力为1M
8086内部为16为结构,他只能传送16位的地址 表现出的寻址能力确只有64k
2.7、段地址*16+偏移地址=物理地址的本质含义
本质含义:cpu在访问内存时,用一个基础地址(段地址*16)和一个相对基础的偏移地址相加,给出内存单元的物理地址。
那就存在一个问题 内部与外部寻址能力差距较大 怎么去解决的?
地址加法器合成物理地址的方法
物理地址=段地址*16+偏移地址
2.8、段的概念
段寄存器就是提供地址的
8086cpu有4个段寄存器
CS、DS、SS、ES、
当8086cpu要访问内存时,由这4个段寄存器提供内存单元的短地址
CS和Ip是8086cpu中最关键的寄存器
他们指示了cpu当前要读取指令的地址
CS为代码段寄存器
Ip为指令段寄存器
- 从CS ip指向内存单元读取指令,读取的指令进入指令缓冲器
- Ip=ip+所读取指令的长度 从而指向下一条指令
- 执行指令 转到步骤1 重复这个过程
内存单元小结:
Cpu访问内存单元时,必须向内存提供单元的物理地址。8086cpu在内部使用段地址和偏移地址移位相加的方法形成最终的物理地址。
Cpu可以使用的不同的端地址和偏移地址形成同一个物理地址。
2.9、段寄存器
段地址在8086寄存器中存放,8086cpu有4个段寄存器 CS DS SS ES
2.10、CS和Ip
CS和ip是8086cpu中两个最关键的寄存器,他们指示了cpu当前要读取指令的地址,CS是代码段寄存器,IP为指令指针寄存器