ptr当处理翻译以下代码段时,有人可以告诉我在那里的目的吗?
cmp byte ptr [eax], 0
Run Code Online (Sandbox Code Playgroud)
ptr 是一个标签,它的值是:
(++>
Run Code Online (Sandbox Code Playgroud)
我的理解cmp是,它将左侧的值与右侧的值进行比较。
涉及到第三个参数(ptr),这是什么意思?是与ptr中的内存地址值进行 AND比较吗?eax0
如果有人可以帮我把它翻译成英文,那就太好了。谢谢。
在英特尔汇编程序语法中,没有明确提及操作数大小。当您说 时mov eax, 0,很明显需要一个 32 位操作数(因为eax是 32 位宽),并且mov al, 0意味着 8 位。
但是,当您取消引用内存位置时,无法推断操作数大小,因此您必须分别针对 8 位、16 位、32 位和 64 位操作数通过使用 、byte ptr或来显式指定它。word ptrdword ptrquad ptr
因此,您的指令正在将 的值寻址的内存中的一个字节(8 位)eax与 0 进行比较。