使用FILETIME时,C#对MASM有困难

时间:2012-01-23 12:05:36

标签: c# masm filetime

我有两行C#我想转换为汇编。我试图按照这个答案(FILETIME to __int64)而没有得到令人满意的结果。

这是C#的两行

System.DateTime dt = System.DateTime.Now;
long x = dt.ToFileTime();

从另一个答案(上面链接)我得出结论,这应该是同样的汇编代码。

local fTime :FILETIME
local ticks :DWORD

invoke GetLocalTime,addr time
invoke SystemTimeToFileTime,addr time,addr fTime

xor eax,eax
xor ebx,ebx

mov eax,fTime.dwLowDateTime
mov ebx,fTime.dwHighDateTime
sal ebx,32
or ebx,eax
mov ticks,ebx

C#的输出为 1221229007
我的asm的输出是 2882329052

C#和程序集在几秒钟内相互运行,所以差异不应该太大。应该吗?

我哪里错了?

1 个答案:

答案 0 :(得分:-1)

invoke GetLocalTime,addr time
invoke SystemTimeToFileTime,addr time,addr fTime

xor eax,eax
xor ebx,ebx

mov eax,fTime.dwLowDateTime
mov ebx,fTime.dwHighDateTime

sal ebx,32 ;shift HighDateTime left 32 bits
add ebx,eax ;add HighDateTime and LowDateTime together

mov edx,ebx ;edx has the ticks?

这似乎有用,或者应该是添加

找到它Here