- Assembly code
xor [eax+ecx],0x33
- Assembly code
mov bl,[eax+ecx] xor bl,0x33 mov [eax+ecx],bl
这两个效果是一样的吗?有什么影响?
------解决方案--------------------------------------------------------
第一个指令,不完整吧,没有指明操作数的大小。因为两个操作数,都无法从其自身判断出来。所以,参照第二组指令,应该是写成:xor byte ptr [eax+ecx], 0x33
这两组指令,对 [eax+ecx] 处字节的影响是一样的。它们的区别在第二组涉及到 bl 寄存器,还是有三条指令才能完成需要的功能。所以,尽可能地选用第一种。
------解决方案--------------------------------------------------------
bl是一个字节,而你第一个写法是和4个字节的值进行异或。
------解决方案--------------------------------------------------------
莫非xor指令不支持操作数为内存和立即数这个组合?
------解决方案--------------------------------------------------------
哦,第二组里面,对 bl 的判别,但没有涉及到 bl 啊,应该是对 [eax+ecx] 的判别?
cmp byte ptr [eax+ecx], 0x90
------解决方案--------------------------------------------------------