assembly - 不能在寻址方式下减去寄存器?

标签 assembly x86 inline-assembly addressing-mode

我读完了 PC 汇编语言,我正在研究如何在汇编语言中实现 RC4 加密。我无法理解的是为什么

mov eax, [edx+ecx]

有效但是

mov eax, [edx-ecx]

没有。内联汇编器给我这个错误信息,

non-constant expression in 'second operand'

这是什么意思?提前致谢。

最佳答案

有一个操作码:

mov eax, [edx+ecx]

并且有一个操作码可以从:

mov eax, [edx-CONSTANT]

因为汇编程序使用常规操作码但在汇编期间取反常量:

mov eax, [edx+(-CONSTANT)]

但是没有操作码:

mov eax, [edx-ecx]

所以基本上您是在尝试执行一条不存在的指令。

关于assembly - 不能在寻址方式下减去寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513513/

相关文章:

c++ - 无法在 VirtualBox 中启动自定义内核 : "could not read from boot medium"

c++:将指针转换为函数是否安全?

c++ - C++ 中的内联汇编失败?

c++ - __m256 未知类型(clang 5.1/i5 CPU)?

x86 - x86的多级分页相对于单页表有什么优势?

c - 我如何让 GCC 在 ah/bh/ch/dh 中放置一个字符?

c - 汇编输出+有关堆栈的问题

c - 了解反汇编的 C 代码(特别是像 var_28 = dword ptr -28h 之类的东西)(二进制炸弹实验室)

带有内联汇编的 C++,有什么问题吗?

c - movaps 的操作数类型