Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2018, 23:16   #1
Hichigo204
 
Регистрация: 24.11.2018
Сообщений: 6
По умолчанию Переделать с fasm v masm64 от mikl

есть код в fasm нужно переделать под masm64
Код:
; Ветка и ключ реестра
reg_key    db 'SOFTWARE\Microsoft\Windows NT\CurrentVersion',0
ins_key    db 'InstallDate',0
 
phkResult  dd ?
lpdwDisp   dd ?
bufferSize dd ?
result     dd ?
 
; Структуры для работы с датой и временем
ltime      SYSTEMTIME
ftime      FILETIME
Теперь, собственно, само получение значения из реестра и перевод его в SYSTEMTIME. Код для перевода TIMESTAMP был приведен в одной из предыдущих статей, здесь он немного изменен в соответствии с начальной точкой отсчета времени. Пересчет даты также учитывает временную зону, установленную в системе.
Code (Assembler) : Выделить код

; Сегмент кода 
        KEY_WOW64_64KEY = 0x100 
        invoke  RegOpenKeyEx,HKEY_LOCAL_MACHINE,reg_key,NULL,\ 
                KEY_QUERY_VALUE+KEY_WOW64_64KEY,phkResult 
        mov     dword [bufferSize],4 
        mov     dword [lpdwDisp],REG_DWORD 
        invoke  RegQueryValueEx,[phkResult],ins_key,0,lpdwDisp,result,bufferSize 
        ; [result] = количество секунд, прошедших с 1970-01-01 00:00:00 UTC 
        invoke  RegCloseKey,[phkResult] 
  
        ; Считаем дату от 1 января 1970 года 
        mov     [ltime.wYear],1970 
        mov     [ltime.wMonth],1 
        mov     [ltime.wDay],1 
        mov     [ltime.wHour],0 
        mov     [ltime.wMinute],0 
        mov     [ltime.wSecond],0 
        invoke  SystemTimeToFileTime,ltime,ftime 
  
        ; Количество секунд 
        mov     eax,[result] 
        xor     edx,edx 
        mov     ecx,989680h 
        mul     ecx 
  
        add     [ftime.dwLowDateTime],eax 
        adc     [ftime.dwHighDateTime],edx 
  
        ; Системное время в локальное 
        invoke  FileTimeToLocalFileTime,ftime,ftime 
        ; В  время 
        invoke  FileTimeToSystemTime,ftime,ltime 
        ; ltime = дата и время установки Windows

Последний раз редактировалось Аватар; 24.11.2018 в 23:47.
Hichigo204 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FASM zaichenoc Помощь студентам 1 20.05.2017 14:01
Помогите переписать под masm64 flesyyykkk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 27.05.2016 15:00
tasm-->fasm прошу помочь переделать!!! absolut2014 Фриланс 1 23.01.2014 05:56
tasm-->fasm прошу помочь переделать!!! absolut2014 Помощь студентам 0 21.01.2014 08:18
Чем отличаеться fasm от fasm editor&? TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.11.2011 17:00