美文网首页
2017年12月14日daily

2017年12月14日daily

作者: 格风_fc56 | 来源:发表于2017-12-15 16:58 被阅读0次

    所谓16位,主要指CPU当中的运算部件可以支持16位数据的运算。

    因为运算当中所需要的数据一般会放在通用寄存器中,所以通用寄存器和运算单元的位宽是相同的。而运算单元产生的数据又经常会用作访问存储器的地址。

    所以cpu访问存储器地址的宽度,也常常和运算单元的位宽相同。

    运算单元宽度 == 寄存器宽度 == 地址总线宽度  for convenience。

    16----------32--------------64

    所谓16位,主要指CPU当中的运算部件可以支持16位数据的运算。

    因为运算当中所需要的数据一般会放在通用寄存器中,所以通用寄存器和运算单元的位宽是相同的。而运算单元产生的数据又经常会用作访问存储器的地址。

    所以cpu访问存储器地址的宽度,也常常和运算单元的位宽相同。

    运算单元宽度 == 寄存器宽度 == 地址总线宽度  理论上。

    那么对于8086来说,IP(Instruction Pointer )指令指针寄存器充当的就是PC(Program Counter)寄存器的角色。

    IP地址的寻址能力是2^16 个八位即 Byte 字节 64KB

    但其地址总线宽度为20 寻址能力为1MB

    解决方案  :段寄存器 Segment Register

    代码段寄存器 CS

    eg 从1M内存中取出指令:先在段寄存器中保存地址的一部分,另一部分根据程序本身产生。

    由于8086的寄存器最大为16位,因此地址在寄存器中按16位大小存放,由段地址和偏移地址联合表示的地址类型叫逻辑地址,例如2000H:1000H,这里的2000H表示段的起始地址,即段地址,而1000H则表示偏移地址,表示逻辑地址时总是书写成段地址:偏移地址。

    物理地址即是真实存在的唯一地址,是指的内存中各个单元的单元号,

    由8086有20条地址线,因此可寻址2的20次方,按2进制位表示规则,即有20位,这个就是物理地址。物理地址因为超过了寄存器大小(16位)因此无法直接存放,需要合成,

    公式为物理地址=段地址×10H+偏移地址,公式中的数据可从逻辑地址获得。

    H 表示该数是十六进制,B 表示二进制;O 表示八进制。

    逻辑地址是16位的,因此范围是2的16次方,即64K。

    物理地址是20位的,因此范围是2的20次方,即1M。

    数据段寄存器 DS

    附加段寄存器 ES

    堆栈段寄存器 SS

    80386

    IA-32 寄存器模型

    相关文章

      网友评论

          本文标题:2017年12月14日daily

          本文链接:https://www.haomeiwen.com/subject/xsjdwxtx.html