大家在處理有些字節拼裝的消息時,一定是用Shr等指令來移位,這裡有一個小問題,要注意:
如WM_MOUSEWHEEL消息,它的wParam的高字節保存了當前的鼠標滾動的方向,-120表示向上滾動,120表示向下滾動,此時,這樣處理是錯的:
mov eax,wParam
shr eax,16
.if eax==-120
... ..
為什麼?因為移位指令移位的同時,把最高位也移動了,此時,符號位到了ax的最高位,結果判斷eax自然總是正數,此時,應該直接判斷ax,或使用擴展指令。如:
... ...
.if ax==-120
就行了,這一般只在高位或低位會為負的情況下注意,因為正數移位後判斷eax仍然行得通。