【问题标题】:How much does the INC instruction in x86 assembly add?x86汇编中的INC指令增加了多少?
【发布时间】:2016-06-17 13:52:55
【问题描述】:

在寄存器上使用的 INC 命令是增加 1 个字节还是增加 4 个字节?

例如,我首先设置 mov ecx,0 然后设置 inc ecx。 ecx 持有什么?

示例 2:esi 在内存中保存一个地址。 在这种情况下会发生什么?

我认为在第一种情况下是 4 个字节,在第二种情况下是 1 个字节(因为内存),对吗?

【问题讨论】:

  • 它以 1 递增。它清楚地写在任何指令集参考中。
  • @Jester 你是指这两个例子吗?
  • 是的,inc 不知道这是否是一个地址。这只是一个 32 位数字,添加了 1,故事结束。
  • the x86 tag wiki 上的指南和手册链接。英特尔 insn 参考手册详细记录了每条指令的操作。
  • 作为一个建议,当你有这样的问题时,为什么不先自己尝试一下再问呢?这是一个非常初级的问题。

标签: assembly x86


【解决方案1】:

在 x86 中,将ecx 设置为零然后执行inc ecx,寄存器ecx 将保存值1inc 助记符以1 为增量递增,无论寄存器作为操作数传递,也不管该寄存器的大小。

【讨论】:

    【解决方案2】:

    inc :increment ,它将寄存器值增加+1。例如:

    add eax, 1;
    

    我们可以写成inc eax;

    【讨论】:

    • 不完全一样,INC 不会触及 CF,就像使用 ADD 将值加一一样。有点吹毛求疵,但也很重要,因为它允许循环中的迭代而不会弄乱由您不想被触及的不同计算设置的标志。
    猜你喜欢
    • 2011-04-24
    • 2011-08-18
    • 2013-08-11
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2017-10-23
    • 2012-01-15
    相关资源
    最近更新 更多