【发布时间】:2016-02-16 19:59:03
【问题描述】:
所以我不知道这条指令是做什么的,因为我刚开始组装。
这条指令有什么作用?
cmp byte ptr [edi],00 add [eax],al
【问题讨论】:
-
这实际上是 2 个单独的指令。不确定它是否只是您格式化它的方式。但它们应该在 2 条单独的线上。
cmp byte ptr [edi],00是一条指令add [eax],al是另一条指令。第一个假设 EDI 寄存器中的值是指向内存的指针。cmp byte ptr [edi],00然后将 EDI 指向的内存位置的字节与值零进行比较。 -
add [eax],al假定 EAX 中有一个内存地址。将 8 位寄存器 AL 中的值添加到 EAX 寄存器指向的字节。虽然这是合法的,但从实际的角度来看,这样做并没有多大意义。 -
你真的应该找到一些关于 MASM 汇编器的 32 位代码(这似乎是)的好教程;或一本好书;如果这是为了学校,甚至可以与助教交谈。
-
add [eax], al也是你反汇编零时得到的。它可能是真实的代码,但当你看到它时要小心 -
@harold :正如我所说的“实际用途”。如果我在生成的代码中看到它,我可能会进行调查以确保它是合法的。