assembly - x86 汇编添加不同大小的操作数

标签 assembly x86

我喜欢将一个字节从一个内存位置添加到一个 32 位寄存器, 这在 x86 汇编中可能吗? add edx, byte [ebx] 导致错误:操作数大小不匹配

最佳答案

您需要确保操作数的大小相同。

这涉及到标志的问题。如果您使用 signed 整数,您应该使用 movsx , 或使用 movzx如果您使用的是 unsigned 整数。

movsx/movzx eax, byte ptr [ebx]
add edx, eax

关于assembly - x86 汇编添加不同大小的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23962562/

相关文章:

C代码翻译成MIPS

c - 如何将无符号整数加载到 SIMD 中

linux - 如何在 Linux 程序集中读取和显示一个值?

assembly - 添加 4 位数字并显示总和 - 汇编语言

assembly - 零标志和进位标志有什么区别?

assembly - 从 FPU 堆栈中删除某些内容的最简单方法

linux - 为什么 linux 在 x64 中使用两个 GOT 部分? .GOT 与 .got.plt

assembly - SYSRET 与 SYSRETQ 区别及兼容模式

assembly - x86 指令 "call dword ptr ds:[00923030h]"是什么意思?

java - 我应该使用什么 ASM API?