求解 byte ptr szAscii [eax]
.data?
hWnddd?
hHookdd?
dwMessagedd?
szAsciidb4 dup (?)
HookProcproc_dwCode,_wParam,_lParam
local@szKeyState[256]:byte
invokeCallNextHookEx,hHook,_dwCode,_wParam,_lParam
invokeGetKeyboardState,addr @szKeyState
invokeGetKeyState,VK_SHIFT
mov@szKeyState + VK_SHIFT,al
movecx,_lParam
shrecx,16
invokeToAscii,_wParam,ecx,addr @szKeyState,addr szAscii,0
movbyte ptr szAscii [eax],0
invokeSendMessage,hWnd,dwMessage,dword ptr szAscii,NULL
xoreax,eax
ret
HookProcendp
上面语句movbyte 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表示该标识符的地址。