【问题标题】:what will moving variable to the code segment do in assembly? [closed]在汇编中将变量移动到代码段会做什么? [关闭]
【发布时间】:2015-11-27 05:31:24
【问题描述】:

当我这样做时

 mov [cs:10], dl 

它对代码做了什么改变? dl不是存储在数据段中的吗?

谢谢

【问题讨论】:

  • 取决于程序在什么样的环境下运行。
  • + 取决于此地址上的操作码,并且该值在之前加载的 DL 中。如果 CS=DS,则不需要段覆盖前缀,否则在该指令中没有对数据段的引用。写入代码段可用于实地址模式,以便在可执行文件运行时操作指令。例如,我们可以将“inc”指令的操作码加载到DL寄存器中,以替换代码段中的“dec”指令。

标签: variables assembly segment


【解决方案1】:

它对代码做了什么改变?

指令mov [cs:10], dl 不一定会对代码进行任何更改。它只是覆盖代码段中地址 10 处的任何字节值。该字节可以包含(部分)指令,也可以只包含数据。

dl不是存储在数据段中的吗?

由于指令具有 CS: 段覆盖,DL 寄存器内容存储在代码段中。如果没有此段覆盖,DL 寄存器内容将存储在 DS 寻址的数据段中。

在汇编中将变量移动到代码段会做什么?

汇编语言需要你准确。该指令不引用任何变量。它包含一个寄存器。

【讨论】:

  • 当ip到达代码段的第10行时会发生什么?
  • 不是所有的值组合都是有效指令,但是cpu只能执行有效指令,我们必须携带指令指针只针对有效指令。
  • 为什么要做这样的事情?
猜你喜欢
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 2016-06-02
  • 2015-01-14
相关资源
最近更新 更多