【问题标题】:8086 segment selector8086 段选择器
【发布时间】:2010-12-17 02:07:55
【问题描述】:

有一些“主管”位不允许“用户空间”执行以下操作: mov CS, 200h ?

有什么样的保护?

谢谢

【问题讨论】:

  • 保护?在 8086 上?你在开玩笑吗?
  • 8086 可能意味着“x86-class”而不是特定的 8086 CPU。我基于这样一个事实,即在 386(286?)出现之前,我认为它们甚至都不被 称为选择器。在此之前,它们只是段 寄存器。
  • 我实际上是指 8086,而不是 x86。但这是一个很好的观察,它们不是选择器,因为当时它们不是描述符表上的索引。
  • 如果你指的是实际的 8086,那么不,没有保护。

标签: protection x86-16 memory-segmentation


【解决方案1】:

实际 8086 CPU 上?我不这么认为。高级保护功能是从 80286 才真正开始出现的。在 8086 上对哪些程序可以设置代码段没有任何限制。

在保护模式下的 80386 上(我认为这是第一个提供此功能的,但可能是 80286),CS 中的值(以及 DS、ES 等)从段寄存器更改为选择器,它们必须在描述符表中有条目(例如:GDT、LDT)。

那时,保护成为可能,但我不认为是 加载 导致违规的选择器寄存器。而是使用高于您的权限级别的选择器。

虽然,对于 CS,在你改变它之后很快就会发生这种情况(当你试图执行下一条指令时)。

更多信息请参见here

【讨论】:

  • 感谢您的回复。我问这个是因为我在某处看到该指令在某些情况下是无效的,但我不确定那是正确的。
  • 指令mov CS, imm是无效的,因为它不存在。只有mov CS, ax 存在。
猜你喜欢
  • 2019-04-18
  • 2015-06-30
  • 1970-01-01
  • 2015-07-31
  • 2021-05-20
  • 2018-06-05
  • 2013-09-21
  • 2020-01-13
  • 1970-01-01
相关资源
最近更新 更多