一个典型的
CPU由运算器、控制器、寄存器等器件组成。
内部总线实现CPU内部各个器件之间的联系。
外部总线实现CPU和主板上其它器件的联系。
x位CPU
① x位CPU
通常用字长来描述CPU。例如,字长16,则称16位CPU。
② CPU字长
CPU在单位时间内能一次处理的二进制位数。
该指标反映出CPU内部运算处理的速度。
③ 位宽
CPU通过外部数据总线与内存之间一次能够传送的数据位。
8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、IP、SS、DS、ES、PSW。
CPU中的寄存器都是8位的。
当8086CPU要读写内存时:
(1) CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;
(2)段地址和偏移地址通过内部总线送入一个称为地址加法器的邮件;
(3)地址加法器将两个16位地址合成位一个20位的物理地址;
(4)地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
(5)输入输出控制电路将20位物理地址送上地址总线;
(6)20位物理地址被地址总线传送到存储器。
所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。
段」是
8086为解决用16位寄存器表示20位的物理地址而引入的一个逻辑上的概念。
可以根据需要,将地址连续、
起始物理地址为
16倍数的一组内存单元(不超过64KB)当作一个「段」使用。
段地址*16+偏移地址=物理地址
其中
:
① 「段地址: 偏移地址」 也称「逻辑地址」
② 「段地址 × 16 」 构成段的起始物理地址,故根据需要划分段使用时,段的起始物理地址必须是16的倍数。
CS为代码段寄存器,用于存放代码段;IP为指令指针寄存器,用于存放CPU将要读取的指令在代码段中的偏移地址。
CS:IP对应的物理地址存放的是CPU将要读取的指令。
(CS) × 16 + (IP) → 指令的物理地址
jump指令:可以修改CS、IP的指令。
相关注意事项
(1) CPU从何处执行指令是由CS和IP中的内容决定的。
(2) 程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。
(3) IP和CS值的修改不能通过mov指令实现,需借助转移指令 (如jmp, call等)。