这个语句在汇编中意味着什么?

ada*_*ski 0 x86 assembly cmp

ptr当处理翻译以下代码段时,有人可以告诉我在那里的目的吗?

cmp byte ptr [eax], 0
Run Code Online (Sandbox Code Playgroud)

ptr 是一个标签,它的值是:

(++>
Run Code Online (Sandbox Code Playgroud)

我的理解cmp是,它将左侧的值与右侧的值进行比较。

涉及到第三个参数(ptr),这是什么意思?是与ptr中的内存地址值进行 AND比较吗?eax0

如果有人可以帮我把它翻译成英文,那就太好了。谢谢。

Ker*_* SB 5

在英特尔汇编程序语法中,没有明确提及操作数大小。当您说 时mov eax, 0,很明显需要一个 32 位操作数(因为eax是 32 位宽),并且mov al, 0意味着 8 位。

但是,当您取消引用内存位置时,无法推断操作数大小,因此您必须分别针对 8 位、16 位、32 位和 64 位操作数通过使用 、byte ptr或来显式指定它。word ptrdword ptrquad ptr

因此,您的指令正在将 的值寻址的内存中的一个字节(8 位)eax与 0 进行比较。