在5中我们说过了,CPU内部生成物理地址需要段地址和偏移地址。那么这两个变量由谁来提供呢?答案是CPU的CS和IP寄存器。
CPU从内存中读取的是指令和数据,下面我们分別来讲讲这两者是如何被读取的。
CPU读取指令
CPU准备读取内存中指令前的初始状态
当CPU开始读取,执行内存中的指令时,事实上是这样一个过程:每一条指令所在的内存单元视为一个段,IP初始值为0,在执行某条指令后,值会增加上该指令的长度(该段的偏移地址),使CPU找到下一条指令所在段的起点。换而言之,IP的值是由指令长度(每个段的偏移量决定的)。而CS的值来自于CPU中的DS。