【发布时间】:2016-10-23 14:45:49
【问题描述】:
据我了解,8086处理器有4个内存段:堆栈段、代码段、数据段和额外段,以及对应的段寄存器(SS,CS,DS,ES )
问题是:“为什么?”
为什么不合并数据和代码段?
为什么我们需要 Extra Segment?
为什么是 4?
我知道这个问题可能听起来很枯燥,但我在去年在我的大学举办的“微处理器架构”考试中发现了这个问题。
提前致谢。
【问题讨论】:
-
在 386+ 上还有更多。但是由于分段架构,如果您正在从一个段复制到另一个段或需要临时访问 DS 之外的段(例如视频内存),则 ES 非常方便)。如果您在默认情况下将 CS 和 DS 组合在一起,您将被限制为 CS=DS(并且两者都在同一个 64kb 段中)。通过拆分 CS 和 DS,您可以轻松地创建一个程序,其中 CS 在一个 64kb 段中,DS 在另一个段中。在 286+ 上,这些段在保护模式下具有不同的含义。
-
一条指令特别是
movs(b/w/l) 允许从一个段复制到另一个段(或同一个段)。默认情况下,源在 DS:SI 中,目标地址在 ES:DI 中。
标签: cpu-registers x86-16 cpu-architecture