程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 匯編語言 >> 移位指令在匯編Win32消息處理中的一些問題

移位指令在匯編Win32消息處理中的一些問題

編輯:匯編語言

大家在處理有些字節拼裝的消息時,一定是用Shr等指令來移位,這裡有一個小問題,要注意:

如WM_MOUSEWHEEL消息,它的wParam的高字節保存了當前的鼠標滾動的方向,-120表示向上滾動,120表示向下滾動,此時,這樣處理是錯的:


mov eax,wParam
shr eax,16
.if eax==-120
... ..

為什麼?因為移位指令移位的同時,把最高位也移動了,此時,符號位到了ax的最高位,結果判斷eax自然總是正數,此時,應該直接判斷ax,或使用擴展指令。如:


... ...
.if ax==-120

就行了,這一般只在高位或低位會為負的情況下注意,因為正數移位後判斷eax仍然行得通。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved