比如996 * &H12345678 为什么不能显示??
8945 E4 mov dword ptr ss:[ebp-1C],3E4
B8 78563412 mov eax,12345678
F765 F4 mul dword ptr ss:[ebp-C]请问上面的汇编如何转换成vb代码?-------------------------------------
Dim longTemp as doubledouble=&H3E4 * &H12345678
-------------------------------------似乎不是等价的??dword只保留后面的八位??是不是要这样?-------------------------------------
Dim longTemp as doubledouble=&H3E4 * &H12345678 AND &HFFFFFF
-------------------------------------这样也是提示溢出??
8945 E4 mov dword ptr ss:[ebp-1C],3E4
B8 78563412 mov eax,12345678
F765 F4 mul dword ptr ss:[ebp-C]请问上面的汇编如何转换成vb代码?-------------------------------------
Dim longTemp as doubledouble=&H3E4 * &H12345678
-------------------------------------似乎不是等价的??dword只保留后面的八位??是不是要这样?-------------------------------------
Dim longTemp as doubledouble=&H3E4 * &H12345678 AND &HFFFFFF
-------------------------------------这样也是提示溢出??
Dim x As Currency
Dim xHi As Currency
Dim xLo As CurrencylOverFlow = CCur(&H10000) * &H10000x = CCur(&H3E4) * &H12345678
While x >= lOverFlow
x = x - lOverFlow
Wend
xHi = x / CCur(&H10000)
xLo = x - (xHi * CCur(&H10000))
Debug.Print x, Hex(xHi) & Right("0000" & Hex(xLo), 4)
redim AsmCode(0 to 18)
'生成机器代码
AsmCode(0) = &H58 'POP EAX '这些是必须的,保持堆栈平衡
AsmCode(1) = &H59 'POP ECX
AsmCode(2) = &H59 'POP ECX
AsmCode(3) = &H59 'POP ECX
AsmCode(4) = &H59 'POP ECX
AsmCode(5) = &H50 'PUSH EAX
'Your Code
AsmCode(6) = &H89 'mov dword ptr ss:[ebp-1C],3E4
AsmCode(7) = &H45
AsmCode(8) = &HE4AsmCode(9) = &HB8 'mov eax,12345678
AsmCode(10) = &H78
AsmCode(11) = &H56
AsmCode(12) = &H34
AsmCode(13) = &H12
AsmCode(15) = &HF7 'mul dword ptr ss:[ebp-C]
AsmCode(16) = &H65
AsmCode(17) = &HF4AsmCode(18) = &HC3 'RET
CallDllFunction = CallWindowProc(VarPtr(AsmCode(0), 0, 0, 0, 0)