为什么使用两个内存操作数的mov/cmp代替cmp? [英] Why mov/cmp instead of cmp with two memory operands?
本文介绍了为什么使用两个内存操作数的mov/cmp代替cmp?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在查看二进制搜索程序代码时遇到了以下语句
l1: mov si,low_
cmp si,high_
为什么需要存储Low_In Si,然后与HIGH_进行比较? 我们不能直接将cmp low_,High_
推荐答案
您不能写入cmp low_, high_
。
对于此类问题,请始终参考官方说明,例如https://www.felixcloutier.com/x86/cmp。请注意,cmp
具有形式cmp r/m16, r16
,对于cmp r/m16, r16
,第一个操作数可以是寄存器或内存,第二个操作数必须是寄存器;cmp r16, r/m16
则相反。但没有像cmp r/m16, r/m16
或cmp m16, m16
这样的东西。因此cmp low_, high_
将尝试汇编不存在的指令,您的汇编程序将拒绝该指令。
这篇关于为什么使用两个内存操作数的mov/cmp代替cmp?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文