段寄存器即提供段地址的寄存器,8086CPU有4个段寄存器:
CS(Code Segment):代码段寄存器
DS(Data Segment):数据段寄存器
SS(Stack Segment):堆栈段寄存器
ES(Extra Segment):附加段寄存器
当8086CPU要访问内存时,由这4个段寄存器提供内存单元的段地址。

CS和IP是8086CPU中最关键的寄存器他们指示了CPU当前要读取命令的地址,告诉CPU要去哪里读指令
IP为指令指针寄存器
8086PC工作过程的简要描述:
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP=IP+所读取指令的长度,从而指向下一条指令;
(3)执行指令。转到步骤(1),重复该过程。
在任何时候,CPU将CS、IP中的内容当作指令的段地址和偏移地址,用他们合成指令的物理地址,到内存中读取指令码,执行。

修改CS、IP的指令:

CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。
mov指令不能用于设置CS、IP的值,8086CPU没有提供这样的功能,它提供了另外的指令来改变他们的值:跳转指令。
同时修改CS、IP的内容:
jmp 段地址:偏移地址
功能:用指令中给出的段地址、偏移地址修改CS、IP。
仅修改IP的内容:
jmp 某一合法寄存器 例:
jmp ax
功能:用寄存器中的值修改IP。

代码段:

对于8086PC机,在编程时,可以根据需要,将一组内存单元定义为一个段。可以将长度为N(N<=64KB)的一组代码存在一组地址连续、起始地址为16的倍数的内存单元中,这段内存是用来存放代码的,从而定义了一个代码段。
将一段内存当作代码段,仅仅是我们在编程时的一种安排,cpu并不会由于这种安排,就自动的执行我们定义的代码段中的指令当作指令来执行。cpu只认被 CS:IP指向的内存单元中的内容为指令。