当前位置: 代码迷 >> 汇编语言 >> 求解 byte ptr szAscii [eax]解决方案
  详细解决方案

求解 byte ptr szAscii [eax]解决方案

热度:10524   发布时间:2013-02-26 00:00:00.0
求解 byte ptr szAscii [eax]
.data?
hWnd dd ?
hHook dd ?
dwMessage dd ?
szAscii db 4 dup (?)

HookProc proc _dwCode,_wParam,_lParam
local @szKeyState[256]:byte

invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam
invoke GetKeyboardState,addr @szKeyState
invoke GetKeyState,VK_SHIFT
mov @szKeyState + VK_SHIFT,al
mov ecx,_lParam
shr ecx,16
invoke ToAscii,_wParam,ecx,addr @szKeyState,addr szAscii,0
mov byte ptr szAscii [eax],0
invoke SendMessage,hWnd,dwMessage,dword ptr szAscii,NULL
xor eax,eax
ret

HookProc endp


上面语句mov byte ptr szAscii [eax],0 中的byte ptr szAscii [eax]是什么寻址方式呢?等同[byte ptr szAscii + eax]吗?其中eax中的值代表什么啊!
谢谢!

------解决方案--------------------------------------------------------
这边的EAX是调用完函数ToAscii的返回值;mov byte ptr szAscii [eax],0相当于
mov di,offser szAscii 
mov byte ptr 【di+eax】,0

------解决方案--------------------------------------------------------
mov byte ptr szAscii [eax],0

类似于 mov byte ptr [szAscii+eax],0

注意这里的szAscii表示该标识符的地址。
  相关解决方案