【问题标题】:Why we copy CS into DS in 8086?为什么我们在8086中将CS复制到DS中?
【发布时间】:2014-05-14 08:53:50
【问题描述】:

8086中为什么要把CS复制到DS中?

将 CS 复制到 DS:

    MOV AX,CS;
    MOV DS,AX;

为什么我们需要这样做?

【问题讨论】:

  • 这个问题需要更多的上下文。您将 CS 复制到 DS 是因为您要将 CS 复制到 DS。这就像问你为什么要增加一个变量。
  • 可能是为了访问我们知道在我们的代码段中的数据。 (您也可以将其视为push cs \ pop ds

标签: assembly x86-16


【解决方案1】:

简短的回答是:当我们访问代码内存作为数据内存时,避免使用cs:前缀。

查看x86 memory segmentation 了解这一点。

【讨论】:

    【解决方案2】:

    这通常在“小”模型中完成,在 DOS 中是一个 .COM 程序(程序从偏移量十六进制 100 开始)。代码和数据共享相同的段空间,尽管代码稍后可能会改变这一点。对于其他模型(“small”、“medium”、“large”),在 DOS 中是一个 .EXE 程序,有单独的段,因此 DS 加载了一个与程序的数据段相对应的值。

    【讨论】:

      猜你喜欢
      • 2015-02-09
      • 2017-06-05
      • 1970-01-01
      • 2011-12-12
      • 2018-10-26
      • 2019-02-16
      • 2011-06-07
      • 2020-03-25
      • 1970-01-01
      相关资源
      最近更新 更多