目录
2.寄存器
一个典型的CPU由运算器、控制器、寄存器(CPU工作原理)等器件组成,这些器件靠内部的总线相连。程序员通过改变各种寄存器中的内容实现对cpu的控制
| 器件 | 功能 |
|---|---|
| 运算器 | 进行信息处理 |
| 寄存器 | 进行信息存储 |
| 控制器 | 控制各种器件进行工作 |
| 内部总线链接各种器件,在他们之间进行数据的传输 |
内部总线:实现的是CPU内部的各个器件之间的联系
外部总线:实现的是CPU和主板上其他器件之间的联系
8086cpu有十四个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
1. 通用寄存器
8086CPU所有的寄存器都是16位的,可以存放两个字节(2B=2*8位=16位)。AX,BX,CX,DX通常用来存放一般性的数据被称为通用寄存器。
一个16位的寄存器所能存储的数据的最大值为:2的16次-1
1.1 数据存储
为了保证兼容性,这四个通用的寄存器都可以分为两个独立的8位寄存器使用
| 寄存器 | 高位 | 低位 |
|---|---|---|
| AX | AH | AL |
| BX | BH | BL |
| CX | CH | CL |
| DX | DH | DL |
AH和AL寄存器是可以独立使用的8位寄存器,AL寄存器计算溢出,不到进位到AH寄存器
十进制2000为例
2. 字在寄存器中的存储
2.1 字、字节、比特的关系
字(word):1个字是由2个字节组成=2*8字节=16比特
高位字节和低位字节可以堪称是独立的字节数据。
十六进制的1位相当于二进制输的4位
3. 几条汇编语言
通过汇编语言控制cpu进行工作
3.1 高低8位计算方式
计算案例
AX只能放4位十六进制的数,最高位的1不能在AX保存,所以数据为044CH。满16进1。
计算案例
注意指令的两个操作对象的位数应当一致。
4. 物理地址
物理地址:内存单元在其所在的一个一维的线性空间中的唯一地址
物理地址必须在内部先形成。
5. 16位结构的cpu
| 结构特性 |
|---|
| 运算器一次最多可以处理16位的数据 |
| 寄存器的最大宽度为16位 |
| 寄存器和运算器之间的通路为16位 |
6. 8086cpu给出物理地址的方法
8086cpu地址总线20位:1048576个内存单元,寻址能力1M。
8086cpu是16位结构:只能发出16位的地址,65536个内存单元,寻址能力64kb。
8086cpu采用一中在内部用两个16位地址合成方法形成一个20位的物理地址。
地址加法器采用物理地址=段地址*16+偏移地址
7. 段地址*16+偏移地址
“段地址×16+偏移地址=物理地址”的本质含义:CPU在访问内存时,用一个基础地址(段地址×16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
8. 段地址的概念
16位的寻址能力为64KB=65536个(0-65535)
cpu可以用不同的段地址和偏移地址形成他同一个物理地址。
段地址1000H,用偏移地址寻址,cpu的寻址范围10000H(左移1位) 至 10000H+FFFF(65535)=1FFFFH
*16 相当于 末尾左移1位 前位补0
/16 相当于 末尾右移1位替换前位数值
9. 段寄存器
存放段地址和偏移地址 8086cpu有4个段寄存器:CS DS SS ES,当cpu要访问内存时由这4个段寄存器提供内存单元的段地址。
10. CS和IP
指示了cpu当前要读取指令的地址。 CS:段寄存器 IP:指令指针寄存器。
CS:IPZ指向的内容当做指令执行。 = cs*16+ip单元开始(ip的值根据实际自加),读取一条指令并执行。
从CS:IP指向的内存单元读取指令,读的指令进去指令缓存器。
IP=IP+所读取指令的长度,从而指向下一条指令
执行指令,重复这个过程
10.1 修改CS、IP的指令
程序员能后用指令读写的部件只有寄存器,可以通过修改寄存器中的内容实现对cpu的控制。
mov:传送指令 操作寄存器
10.2 jmp 指令
jmp :转移指令 jmp CS:IP
只修改IP的内容,配合寄存器使用。
jmp ax,= ax赋给IP,CS保持不变
10.3 工作过程
1.从CS:IP指向的内存单元读取指令,读的指令进入指令缓存器
2.IP指向下一条指令先做ip自加 然后执行读取到的指令
3.执行指令
11. 代码段
cpu只认被CS:IP指向所定义的内存单元中的内容为指令。
