一.寄存器(CPU工作原理)
CPU由运算器、控制器、寄存器等器件构成。在CPU中,运算器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件,在它们之间进行数据传送。
不同的CPU寄存器的个数、结构是不一样的。
8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
8086CPU的AX、BX、CX、DX四个寄存器可分为两个8位寄存器来使用:
AX:AH和AL;
BX:BH和BL;
CX:CH和CL;
DX:DH和DL;
二.字在寄存器中的存储。
1. 字节:一个字节由8位组成, 可以存储在8位寄存器中。
2. 字:一个字由两个字节组成,分为高位字节和低位字节。
在16位寄存器中,AH存储高8位,AL存储了低8位。
三.几条常用的汇编指令
汇编指令 | 要完成的操作 |
Mov ax, 18 | 将18送入寄存器ax |
Mov ah,78 | 将78送入寄存器ah |
Add ax, 8 | 将寄存器ax中的数值加上8 |
Mov ax,bx | 将寄存器bx中的数据送入到ax中 |
Add ax, bx | 将ax和bx中的数据相加,结果存在ax中 |
注意:指令不区分大小写;
例如:
在32位寄存器的机器,结果为:1044C
但是在8086上会出现溢出,为044C,debug模拟的是16位机。
四.16位结构的CPU
特性:
1.运算器一次最多可处理16位的数据。
2.运算器的最低宽度为16位。
3.寄存器和运算器之间的通路为16位。
最常见的16位机:8086CPU。
8086CPU有20位地址总线,可以传送20位地址,寻址能力达到了1MB。从8086内部结构来看,如果将地址从内部简单的发出,那么它只能送出16位的地址,表现出的寻址能力只有64KB。
(1)CPU中的相关部件提供两个16位的地址,一个称为段地址,一个称为偏移地址;
(2)段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
(3)地址加法器将两个16位地址合成一个20位的物理地址;
(4)地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
(5)20位物理地址被地址总线传送到存储器。
地址加法器采用物理地址= 段地址*16+偏移地址的方法用段地址和偏移地址合成物理地址。
所以8086CPU在访问内存时,要由相关的部件提供内存单元的段地址,和偏移地址,送入地址加法器合成物理地址。
8086CPU有四个段寄存器:
CS、DS、SS、ES。
五.CS和IP
CS为代码段寄存器,IP为指令指针寄存器。
在8086PC机中,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M*16+N单元开始,读取一条指令并执行。
8086CPU读取、执行一条指令的过程。
1. 初始状态:CS:2000H,IP:0000H。CPU将从内存2000H*16+0000H处读取指令执行。
2. CS,IP中的内容送入地址加法器,由地址加法器完成:
物理地址= 段地址*16+偏移地址
3.由地址加法器将物理地址送入输入输出控制电路。
4.输入输出控制电路将物理地址20000H送上地址总线。
5.从内存20000H单元开始存放的机器指令通过数据总线被送入CPU。
6.输入输出控制电路将机器指令送入指令缓冲器。
7.读取一条指令后,IP自动增加。以使CPU可以读取下一条指令。
修改CS、IP的内容:可以使用“jmp 段地址:偏移地址”