能力值:
( LV4,RANK:50 )
|
-
-
4 楼
给你一段完整的代码,自己慢慢看吧:
; return timestamp to eax
systime SYSTEMTIME ; struct SYSTEMTIME
get_timestamp:
invoke GetSystemTime,systime
movzx ecx,[systime.wYear]
mov eax,ecx
sub eax,1970
mov ebx,365
mul ebx
mov ebp,eax
mov eax,ecx
sub eax,1969
shr eax,2
add ebp,eax
mov eax,ecx
sub eax,1901
mov ebx,100
div ebx
sub ebp,eax
mov eax,ecx
xor edx,edx
sub eax,1601
mov ebx,400
div ebx
add ebp,eax
movzx ecx,[systime.wMonth]
mov eax,ecx
dec eax
mov ebx,30
mul ebx
add ebp,eax
cmp ecx,8
jbe months_correction
mov eax,ecx
sub eax,7
shr eax,1
add ebp,eax
mov ecx,8
months_correction:
mov eax,ecx
shr eax,1
add ebp,eax
sub ebp,2
cmp ecx,2
jbe day_correction_ok
movzx ecx,word [systime.wYear]
test ecx,11b
jnz day_correction_ok
xor edx,edx
mov eax,ecx
mov ebx,100
div ebx
or edx,edx
jnz day_correction
mov eax,ecx
mov ebx,400
div ebx
or edx,edx
jnz day_correction_ok
day_correction:
inc ebp
day_correction_ok:
movzx eax,[systime.wDay]
dec eax
add eax,ebp
mov ebx,24
mul ebx
movzx ecx,[systime.wHour]
add eax,ecx
mov ebx,60
mul ebx
movzx ecx,[systime.wMinute]
add eax,ecx
mov ebx,60
mul ebx
movzx ecx,[systime.wSecond]
add eax,ecx
retn
|