1、 8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
通用寄存器:
AX、BX、CX、DX称为数据寄存器:
AX: 累加寄存器
BX: 基地址寄存器
CX: 计数器寄存器
DX: 数据寄存器
SP和BP称为指针寄存器:
SP: 堆栈指针寄存器
BP: 基指针寄存器
SI和DI又称为变址寄存器:
SI: 源变址寄存器
DI: 目的变址寄存器
段寄存器:
CS:代码段寄存器
DS:数据段寄存器
SS:堆栈段寄存器
ES:附加段寄存器
控制寄存器:
IP:指令指针寄存器
FLAG:标志寄存器
2、8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址:
物理地址 = 短地址*16 + 偏移地址
本质含义:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
段的长度:偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。
3、8086CPU的工作过程:
1)、从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器。
2)、IP = IP + 所读指令的长度,从而指向下一条指令。
3)、执行指令。 转到步骤1),重复这个过程。
4、 修改CS、IP的指令
jmp 段地址:偏移地址
jmp 某一合法的寄存器
举例:jmp 1000:3 ===========> CS = 1000, IP = 3
mov ax, 100
jmp ax ===========> CS 值不变, IP = 100
5、 寄存器、内存单元、立即数之间的相互赋值规则:
只有通用寄存器才能操作立即数,其它段寄存器以及内存单元都要通过通用寄存器来中转。