操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

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

2006-9-29 网友评论 0 条 点击进入论坛

大家在处理有些字节拼装的消息时,一定是用Shr等指令来移位,这里有一个小问题,要注意:
如WM_MOUSEWHEEL消息,它的wParam的高字节保存了当前的鼠标滚动的方向,-120表示向上滚动,120表示向下滚动,此时,这样处理是错的:
mov eax,wParam
shr eax,16
.if eax==-120
... ..

为什么?因为移位指令移位的同时,把最高位也移动了,此时,符号位到了ax的最高位,结果判断eax自然总是正数,此时,应该直接判断ax,或使用扩展指令。如:
... ...
.if ax==-120
就行了,这一般只在高位或低位会为负的情况下注意,因为正数移位后判断eax仍然行得通。

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46430 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail