一个典型的CPU由运算器,控制器,寄存器等器件组成,这些器件靠内部总线相连
区别:
内部总线实现CPU内部各个器件之间的联系,
外部总线实现CPU和主板上其它器件的联系
8086CPU有14个寄存器,它们的名称为:
AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
后面是x的寄存器都是16位
一个16位寄存器所能存储的数据最大值为 2**16 -1
超过16位的值会被抛掉
单独计算高位寄存器或者地位寄存器超过8位也是会抛掉
抛掉指的是超出的进制位不能在寄存器中保存,但是CPU不是真的抛弃进制位
AX,BX,CX,DX通常用来存放一般性数据被称为通用寄存器
16位的寄存器为了保证兼容性可以分为两个单独的8位寄存器
AX可以分为AH和AL,H是高位,L是地位
2.4物理地址
CPU访问内存单元是给出内存单元的地址,所有内存单元构成的存储空间是一个以为的线性空间,我们把这个唯一的地址成为物理地址
16位结构CPU
- 运算器一次最多处理16位的数据
- 寄存器最大宽度是16位
- 寄存器和运算器之间的通路是16位的
8086CPU给出物理地址的方法:
8086CPU读取内存时:
- CPU中的相关部件提供两个16位地址,一个为段地址,另一个为偏移地址
- 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
- 地址加法器将两个16位地址合并成一个20位地址
2.8段的概念
内存没有分段,段的划分来自于CPU,由于80806CPU用,(段地址*16)+偏移地址=物理地址的方式给出内存单位的物理地址,使我们可以用分段方式管理内存
2.9段段寄存器
段寄存器就是提供段地址的
8086CPU有4个段寄存器
CS,DS,SS,ES
2.10 CS和IP
CS和IP是8086CPU中关键的寄存器,它们只是了CPU当前要读取指令的地址
CS为代码寄存器
IP为指令指针寄存器
8086PC互作过程:
- 从CS:IP只想内存单元读取指令,读取的指令进入指令缓冲器
- IP=IP+所读取指令的长度,从而只想下一条指令
- 执行命令,转到步骤1
在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为SC=FFFFH,IP=0000H
即在8086PC机刚启动是,CPU从内存FFFF0H单元中读取指令执行
FFFF0H单元中的指令是8086PC机开始后执行的第一条指令
2.11 修改CS,IP的指令
JMP指令,用指令中给出的短地址修改CS,偏移地址修改IP
JMP段地址:偏移地址
JMP 2AE3:3
JMP 3:0B16
JUM 某一合法寄存器
功能:用寄存器中的值修改IP
JMP AX (类似于mov IP,AX)
JMP BX
2.12 代码段
对于8086PS机,在编程时,可以根据需要,将依据内存单元定义位一个段
CPU只认被CS:IP指向的内存单位中的内容为指令
小节:
- 从CS:IP指向内存单位读取指令,读取的指令进入指令缓冲器
- IP指向下一条指令
- 执行命令,转到步骤一
- 8086CPU提供转移指令修改CD,IP的内容