2.9 段寄存器
- 段寄存器是提供段地址的
- 8086CPU有4个段寄存器:CS、DS、SS、ES
- 当8086CPU要访问内存时,由这4个段寄存器提供内存单元的段地址
2.10 CS和IP
CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。
CS为代码段寄存器、IP为指令指针寄存器
8086PC工作过程的简要描述
- 在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H。
- 即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行。
- FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。
- 在任何时候,CPU讲CS、IP中的内容当作指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码,执行。
- 如果说,内存中的一段信息曾被CPU执行过,那么,它所在的内存单元必然被CS:IP指向过。
2.11 修改CS、IP指令
mov指令可以改变8086CPU大部分寄存器的值,被称为传送指令。
mov指令不能用于设置CS、IP的值
转移指令
同时修改CS、IP中的内容:
jmp 段地址:偏移地址
功能:用指令中给出的段地址修改CS,偏移地址修改IP。
仅修改IP的内容:
jmp 某一合法寄存器
mov ax,200
jmp ax(类似于mov IP,ax)
功能:用寄存器中的值修改IP
2.12 代码段
- 对于8086PC机,在编程时,可以根据需要,将一组内存单元定义为一个段。
- 可以将长度为N(N<=64KB)的一组代码,存在一组地址连续、起始地址为16的倍数的内存单元中,这段内存是用来存放代码的,从而定义了一个代码段。
CPU只认被CS:IP指向的内存单元中的内容为指令。
所以要将CS:IP指向所定义的代码段中的第一条指令的首地址。
小结
- 段地址在8086CPU的寄存器中存放。当8086CPU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址。
- CS存放指令的段地址,IP存放指令的偏移地址。
- 8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。
- 8086CPU的工作过程:
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP指向下一条指令;
(3)执行指令;(转到步骤(1),重复这个过程) - 8086CPU提供转移指令修改CS、IP的内容
检测点2.3
修改4次ip
最后ip=0