Intel 8086 CPU 段寄存器

Intel 8086 CPU

1. 段寄存器的产生

  1. 段寄存器的产生源于Intel 8086 CPU体系结构中数据总线地址总线的宽度不一致。
  2. 数据总线的宽度,也即是ALU(算数逻辑单元)的宽度,平常说一个CPU是“16位”或者“32”位指的就是这个。
  3. 8086CPU的数据总线是16位。可寻址范围是2^16=64KB。

2. 段寄存器的特点

  1. 每一个段有一个段基址,当然,段基址也是一个20位的内存地址。
  2. 不过段寄存器仍然是16位的,它的内容代表了段基址的高16位,这个16位地址后面再加上4个0就构成了20位的段基址。
  3. 原来的16位地址只是段内的偏移量。
  4. 1M的寻址空间,需要有20根地址总线。
    分成4个段,那么平均每个段256KB
    原来的16位地址是段内偏移量,那么偏移量是2^16=64KB。
    一个段,256KB,一个段基址+MAX(偏移量)64KB,还是不能够寻完256KB。
    猜想:一个段,段基址最少是4个数值,每次偏移64KB,达到最大寻址范围64KB*4=256KB。

3. 段寄存器的分类

  1. CS段(Code Segement) 代码段
  2. DS段(Data Segement ) 数据段
  3. SS段(Stack Segement) 堆栈段
  4. ES段(Extra Segement) 附加段

4. 段寄存器的作用

段寄存器(CS、DS、SS和ES)保存16位的段选择子
一个段选择子是标志内存中一个段的特殊指针

CS段
  1. CS寄存器包含代码段的段选择子,其中存放正在执行的指令
  2. 处理器用在CS寄存器中的段选择子和IP寄存器中的内容,作为逻辑地址取下一条要执行的指令。
  3. 取指令部件,用到了代码段寄存器CS指令指针寄存器IP
  4. 注意:CS段寄存器不能由应用程序直接加载。
  5. 应用:
    Q:段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?
    A:物理地址=CS+IP=1200H+FF00H=11100H
DS段
  1. DS
SS段
  1. SS段寄存器包含堆栈段的段选择子。
  2. 所有的堆栈操作都通过SS找到堆栈段。
ES段

5. 与汇编语言的联系(重要)

  1. 当写应用程序代码时,程序用汇编程序命令符号 建立 段选择子
    即汇编语言建立一个段的特殊指针,建立指针
  2. 然后汇编程序或其他的工具建立与这些命令和符号相关的实际段选择子。确定实际指针的值
  3. 若写系统代码程序员可能需要直接建立段选择子
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值