本章主要的知识是关于CPU的内部通信,即内核。
一、通用寄存器
1.一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线连接。
区别:
内部总线实现CPU内部和各个器件之间的联系。
外部总线实现CPU和主板上其他器件的联系。
通俗来说,内部总线是CPU内部的架构,外部总线是CPU与外面的一些东西的结合。
8086有14个寄存器,其中有8个通用寄存器,即使是如今的酷睿i7、i9都是只有8个通用寄存器。
14个寄存器分别是:
AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、 PSW
2.8086CPU所有的寄存器都是16位的,可以存放两个字节。
一个16位寄存器可以存储一个16位的数据。
一个16位寄存器所能存储的数据的最大值是2的16次方减1
3.AX的低8位(0位-7位)构成了AL寄存器,高8位(8位-15位)构成了AH寄存器。
AH和AL寄存器是可以独立使用的8位寄存器。
二、字在寄存器中的存储
1.把一次读取16位的内存单元称为字。一个字节=8位,一个字=两个字节。
2.汇编指令不区分大小写
3.对于进制位,CPU会有一个专门的寄存器存放多出来的进制位
三、物理地址
1.CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间。
我们将这个一维的地址称为物理地址。
2.16位结构的CPU。16位结构描述了一个CPU具有以下几方面的特征:
1.运算器一次最多可以处理16位的数据。
2.通用寄存器的最大宽度为16位,但状态寄存器可能不满足16位。
3.寄存器和运算器之间的通路是16位。
3.8086CPU给出物理地址的方法。
8086有20位地址总线,可传送20位地址,寻址能力为1M
8086内部为16位结构,它只能传送16位的地址,表现出的寻址能力却只有64K
4.1K和1M之间相差2的10次方
四、地址加法器工作原理
1.地址加法器合成物理地址的方法:
物理地址=段地址*16+偏移地址
物理地址有20位
段地址 * 16,表示十六进制的段地址左移1位,二进制的段地址左移4位;段地址*16中的16是十进制,转为十六进制为10H
2.
1.一个数据的二进制形式左移1位,相当于该数据乘以2;
2.一个数据的二进制数形式左移N位,相当于该数据乘以2的N次方;
3.一个数据的十六进制形式左移1位,相当于乘以16;
4.一个数据的X进制形式左移1位,相当于乘以X。
五、段的概念
1.偏移地址为16位,16位地址的寻址能力为64K,所以一个段的长度最大为64K。
CPU访问内存单元时,必须向内存提供内存单元的物理地址。
8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。
CPU可以用不同的段地址和偏移地址形成同一个物理地址。
六、
1.在8086PC机中,存储单元的地址用两个元素来描述。即段地址和偏移地址。
2.“数据在21F60H内存单元”中,对于8086PC机的两种描述:
(a)数据存在内存2000:1F60单元中;
(b)数据存在内存的2000段中的1F60H单元中。
3.CPU的外部提供了20位的地址总线,CPU的内部由于技术的问题只能提供16位的地址,于是加入了地址加法器把段地址和偏移地址变成一个20位的地址。
4.8086CPU有4个段寄存器:CS、DS、SS、ES。当8086CPU要访问内存时,由这4个段地址寄存器提供内存单元的段地址。
5.CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。
CS为代码段地址寄存器,IP为指令指针寄存器。
6.mov指令
如:mov ax,123
mov指令可以改变8086的CPU大部分寄存器的值,被称为传送指令。
7.同时修改CS、IP的内容:
jmp 段地址:偏移地址
用jmp指令,即转移指令修改CS、IP的内容。
如:jmp 2AE3:3
jmp 3:0B16 告诉CPU要跳转到00B46H这个物理地址,还是用那个公式:段地址*16+偏移地址=物理地址
用指令中给出的段地址修改CS,偏移地址修改IP
CS存放指令的段地址,IP存放指令的偏移地址。
8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。
8.8086CPU的工作过程:
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP指向下一条指令;
(3)执行指令。(转到步骤(1),重复这个过程。)
七、DEBUG
R命令查看、改变CPU寄存器的内容;
D命令查看内存中的内容;
E命令改写内存中的内容;
U命令将内存中的机器指令翻译成汇编指令;
T命令执行一条机器指令;
A命令以汇编指令的格式在内存中写入一条机器指令。
未完待续