0
Q
了解cmp指令
A
回答
4
cmp arg2, arg1
执行与sub arg2, arg1
相同的操作,除了没有任何操作数被修改。 不存储区别。
然而,标志寄存器是更新,并且可以在一个条件跳转中使用,像跳如果相等(JE
),最通常为cmp
之后的下一指令。
与其他指令相比,您可以比较两个值而不会破坏它们中的任何一个。如果你做了sub arg2, arg1
而他们碰巧是平等的,那么其中之一将会是零。随着cmp
他们都在那里。
相关问题
- 1. 86怪“CMP”指令
- 2. Cmp指令不匹配
- 3. 装配 - JZ指令CMP
- 4. 了解mov指令
- 5. 为什么此CMP指令失败?
- 6. 在python和递归中了解cmp
- 7. 了解CUDA SHFL指令
- 8. 了解角度指令
- 9. 了解PowerPC rlwinm指令
- 10. 了解一些ADC指令
- 11. 请给我解释了滑块指令
- 12. 了解Angularjs中的'指令'范例
- 13. 了解angularjs指令和数据绑定
- 14. 了解自定义指令和ngModelController
- 15. 了解{$ WARN XXXX OFF}编译器指令
- 16. 了解块中的变量(__block指令)
- 17. 了解一个C socket指令
- 18. 了解角度控制器Vs指令
- 19. 什么是汇编cmp指令完全比较?
- 20. 如何将IA32'cmp'指令转换为Y86?
- 21. cmp指令何时修改zf标志? [x86 MASM]
- 22. x86 CMP指令不适用于单字比较
- 23. 了解ARM汇编指令和C/C++指针
- 24. 了解多指标
- 25. 了解xcopy命令
- 26. 了解ANTLR4令牌
- 27. 了解CSRF令牌
- 28. 了解trace32命令
- 29. 拆解'faddl'指令
- 30. 解码68K指令
@Carcigenicate * ax? Cos AFAIK通常与'je'搭配使用。但是je需要知道条件是真是假。 –
请注意,您指的是* wikibooks *,它是* wikis *的特定集合。 A * wiki *只是用户可以编辑的一种网站。因此,Wikibooks绝对不是x86组装定义的主要资源(这是一个很好的例子,为什么依赖专家文档比用户生成的文档更好)。使用谷歌找到另一个来源,并解释! –
'je'不需要知道条件是真还是假,'je'是'jz'的别名,'jz'是'如果设置了零标记则跳转'。所以无论最后一条指令是否修改ZF,都会预测下一个“je”是否会跳转(ZF = 1)或不是(ZF = 0)。新的asm程序员没有得到它的有趣后果之一是编写像'sub ax,1''cmp ax,0''jne myLoop'这样的代码......在那里不需要'cmp',已经以足够的方式为该jne工作设置了ZF(但更合理的是使用'jnz myLoop'别名,即读作“jump not zero loop” - 几乎是英语。 – Ped7g