移位指令在Win32消息处理中的一些问题
敬业的IT人
互联网
佚名
2008-2-19 15:56:11
大家在处理有些字节拼装的消息时,一定是用Shr等指令来移位,这里有一个小问题,要注意:
如WM_MOUSEWHEEL消息,它的wParam的高字节保存了当前的鼠标滚动的方向,-120表示向上滚动,120表示向下滚动,此时,这样处理是错的:
mov eax,wParam
shr eax,16
.if eax==-120
... ..
为什么?因为移位指令移位的同时,把最高位也移动了,此时,符号位到了ax的最高位,结果判断eax自然总是正数,此时,应该直接判断ax,或使用扩展指令。如:
... ...
.if ax==-120
就行了,这一般只在高位或低位会为负的情况下注意,因为正数移位后判断eax仍然行得通。
- 最新文章
- 在弹出菜单的同时再次弹出菜单[02-19]
- 关于在8086/88内存寻址方式[02-19]
- 矛与盾的较量——CRC原理篇[02-19]
- 矛与盾的较量——CRC实践篇[02-19]
- 动态库的执行时间[02-19]
- 驻留exe文件[02-19]
- 相关文章
- Windows XP系统默认设置带来的7个安全问题[02-19]
- 彻底解决Windows XP的互访问题[02-19]
- Windows XP操作系统疑难问题巧解决[02-19]
- 解决Windows XP系统中CPU占用率过高的问题[02-19]
- Windows XP问题的精彩问答[02-16]
- 解决WinXP中CPU占用率过高的问题[02-16]
