WEB开发网
开发学院软件开发汇编语言 移位指令在汇编Win32消息处理中的一些问题 阅读

移位指令在汇编Win32消息处理中的一些问题

 2008-12-27 09:36:27 来源:WEB开发网   
核心提示:大家在处理有些字节拼装的消息时,一定是用Shr等指令来移位,这里有一个小问题,要注意:如WM_MOUSEWHEEL消息,它的wParam的高字节保存了当前的鼠标滚动的方向,-120表示向上滚动,120表示向下滚动,此时,移位指令在汇编Win32消息处理中的一些问题,这样处理是错的:mov eax,wParamshr e

大家在处理有些字节拼装的消息时,一定是用Shr等指令来移位,这里有一个小问题,要注意:

如WM_MOUSEWHEEL消息,它的wParam的高字节保存了当前的鼠标滚动的方向,-120表示向上滚动,120表示向下滚动,此时,这样处理是错的:


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

为什么?因为移位指令移位的同时,把最高位也移动了,此时,符号位到了ax的最高位,结果判断eax自然总是正数,此时,应该直接判断ax,或使用扩展指令。如:


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

就行了,这一般只在高位或低位会为负的情况下注意,因为正数移位后判断eax仍然行得通。

Tags:移位 指令 汇编

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接