作者:decrement 贴子要求Mail回复.此贴贴于2019-9-15 10:10:57,已被阅读93次/回复0 
不要把offset Label2-offset Label1作为invoke参数
我有一个程序:
Label1 equ this byte
...
...
Label2 equ this byte
invoke _Align,offset Label2-offset Label1 ;A
mov eax,offset Label2-offset Label1 ;B

经调试器反汇编得到,其中语句A和B:
PUSH 388
CALL 004012C6
MOV EAX,27E
我证实,27E是正确值,388是错误值
经测试,当Label1和Label2之间的代码越简短,误差量会越小。
经测试,有时,当Label1和Label2之间的代码简短时,能得到正确结果,比如:
PUSH 1A
CALL 004012C6
MOV EAX,1A
所以,为了绝对正确,可以使用如下代码:
mov ecx,offset Label2-offset Label1
invoke _Align,ecx