问题:显示鼠标的坐标,奇怪的错误?
显示鼠标的坐标:获得坐标后调用自定义的函数转换成字符。鼠标限制在窗口内,不会小于100。
z10 dd 10
sbx dd ?
dz dd 3 dup(?);转换成字符后存储在此。
invoke GetCursorPos,addr sbx
sub dword ptr sbx,100;;;;;;;;;;;;;;;;;;;;;;;;;;;这里注释掉,显示的坐标正确,减100后则会显示错误的坐标。
push dword ptr sbx
push offset dz
call zfzh
……
……
……
zfzh:
mov ebx,DWORD ptr [esp+4]
mov eax,DWORD ptr [esp+8]
mov ecx,9
cmp eax,1000000000
jnc @f
dec ecx
cmp eax,100000000
jnc @f
dec ecx
cmp eax,10000000
jnc @f
dec ecx
cmp eax,1000000
jnc @f
dec ecx
cmp eax,100000
jnc @f
dec ecx
cmp eax,10000
jnc @f
dec ecx
cmp eax,1000
jnc @f
dec ecx
cmp eax,100
jnc @f
dec ecx
cmp eax,10
jnc @f
dec ecx
@@:
xor edx,edx
div DWORD ptr z10
add edx,30h
mov BYTE ptr [ebx+ecx],dl
dec ecx
cmp ecx,0ffffffffh
jnz @B
add esp,12
jmp DWORD ptr [esp-12]