物理地址=段地址X16+偏移地址 Cs与IP 寄存器的流程执行

总结:

物理地址=段地址X16(十进制)+偏移地址 == 物理地址=段地址X10(十六进制)+偏移地址


Cs是代码段寄存器,IP是指令指针寄存器


在这里插入图片描述
段地址 x 16 等于 左移四位
一个数据(16进制)左移1位,相当于乘以16。
一个数据 (十进制)左移1位,相当于乘以10。
一个数据(N进制) 左移1位 ,相当于乘以N。
在这里插入图片描述
段地址X16+偏移地址=物理地址。 含义:Cpu在访问内存时,用一个基础地址(段地址X16)+偏移地址相加 = 给出内存单元的物理地址。
举例:
假设: 该段的起始地址(基础地址)是 10000H,则他的段地址是1000H

问题来了:公式是 基础地址=段地址X16 . 但结果为什么会这样呢!
答案: 16 是10进制。 16=10(十六进制)。地址都是用16进制表示,所以将16(10进制)转化为 10(十六进制)。 得
基础地址=段地址X10(十六进制)
物理地址=段地址X16(十进制)+偏移地址 == 物理地址=段地址X10(十六进制)+偏移地址




Cs与IP
Cs是代码段寄存器,IP是指令指针寄存器
在8086CPU中,设,Cs中的内容是M,IP内容是N,则从内存 M x 16+N单元开始,读取一条指令并执行
在这里插入图片描述
右边内存 20000H - 20009H 单元存放着可执行的机器码。右边是汇编代码
举例:前三个(第一个括号括起来的部分),内容是B8 23 01 长度是 3byte 对应的汇编代码 mov ax,0123H

图的执行逻辑:

1.Cs IP中的内容送到地址加法器(段地址X16+偏移地址=物理地址)
2.地址加法器将物理地址送入到输入输出控制电路
3.输入输出控制电路将物理地址20000H送上地址总线
4.从20000H开始存放的机器指令 B8 23 01通过数据总线送入Cpu
5.输入输出控制电路将机器指令B8 23 01送入指令缓冲器
6.读取一条指令后,IP中的值自动增加,Cpu读取下一条指令。因为当前指令的长度是3个字节,所以IP中的值加3。此时,Cs:Ip指向内存单元2000:0003
综述:
Cs:Ip指向内存单元读取指令,读取的指令进入缓冲器,
Ip=Ip+指令的长度,从而指向下一条
执行指令,然后重复


版权声明:本文为qq_35349982原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>