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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2009, 19:59   #1
Advisor
Пользователь
 
Регистрация: 07.12.2008
Сообщений: 18
По умолчанию Время в дампе

Итак, я знаю, что по адресам 0040006C,0040006D,0040006E хранится системное время винды, как расшифровать в 60 ричную систему первые два байта(секунды и минуты) или в милисекунды; как она их записывает?
Advisor вне форума Ответить с цитированием
Старый 18.01.2009, 21:31   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

что за дамп? что за файл? какой формат времени? тут телепатов нет
rpy3uH вне форума Ответить с цитированием
Старый 19.01.2009, 18:06   #3
Advisor
Пользователь
 
Регистрация: 07.12.2008
Сообщений: 18
По умолчанию

1_Обычный общий дамп винды(или данные биоса(в данном секторе)).
2_Причем тут файл?
3_60 ричная система - это как на электронных часах(минуты и секунды).
4_Их ваще нигде нет.

Мне не нужен листинг преобразования, мне нужно узнать каким образом осуществлено кодирование времени в этих трех байтах.
Заранее спасибо если кто не поленится взглянуть на три байта от адреса 0040006C.
Advisor вне форума Ответить с цитированием
Старый 19.01.2009, 18:39   #4
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Сомневаюсь, что системное время винды лежит в адресах предназначенных для пользовательских приложений.
Д'якон вне форума Ответить с цитированием
Старый 19.01.2009, 19:00   #5
Advisor
Пользователь
 
Регистрация: 07.12.2008
Сообщений: 18
По умолчанию

Д'якон, я щас матом писать начну, я четко и ясно написал, что там время!
Прежде чем сомневаться, надо бы проверить, заглянуть в дамп например.
Там динамически изменяются 3 байта. Первый и второй, что обозначают не знаю(затем и спрашиваю), третий часы(время) в hex виде.
Advisor вне форума Ответить с цитированием
Старый 19.01.2009, 20:13   #6
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

а чем ты дамп делал? что у тебя за винда? что за проц?
Д'якон вне форума Ответить с цитированием
Старый 19.01.2009, 21:04   #7
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Advisor Посмотреть сообщение
Итак, я знаю, что по адресам 0040006C,0040006D,0040006E хранится системное время винды, как расшифровать в 60 ричную систему первые два байта(секунды и минуты) или в милисекунды; как она их записывает?
Смотрю, смещение знакомое...
А тут еще

Цитата:
Обычный общий дамп винды(или данные биоса(в данном секторе)).
???
Случайно не это имеется в виду ?:

Цитата:
Сообщение от Ralf Brown
----------M0040006C--------------------------
MEM 0040h:006Ch - TIMER TICKS SINCE MIDNIGHT
Size: DWORD
Desc: updated approximately every 55 milliseconds by the BIOS INT 08 handler
SeeAlso: MEM 0040h:0070h,INT 08"IRQ0",INT 1A/AH=00h
alexBlack вне форума Ответить с цитированием
Старый 19.01.2009, 21:06   #8
Advisor
Пользователь
 
Регистрация: 07.12.2008
Сообщений: 18
По умолчанию

Д'якон, не имеет значения какая винда, этот адрес абсолютен, во всяком случае мне иные не попадались, может это и не винды запись, а биоса. Если тебе все же важна моя винда, то это windows xp SP2. Дамп читал debug ом и своей программой. Могу дать листинг, правда там интерфейс не настроен.

alexBlack, оно самое. Только там не уточнено каким образом обновляется каждые 55 мсек. Прибавляется бит или два, к первому байту, или ко второму. Вот некоторые данные:

EB 84 17 23:30:59

F7 84 17 23:31:00

47 89 17 23:32:00

B5 0A 00 0:02:40

1E 11 00 0:04:00

Последний раз редактировалось Advisor; 19.01.2009 в 21:18.
Advisor вне форума Ответить с цитированием
Старый 19.01.2009, 21:17   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Advisor Посмотреть сообщение
alexBlack, оно самое. Только там не уточнено каким образом обновляется каждые 55 мсек. Прибавляется бит или два, к первому байту, или ко второму. Щас попробую расшифровать.
инкремент DWORD

Цитата:
DWORD по адресу 0040:006C хранит текущее время в тиках таймера. Это значение инкрементируется примерно 18.2 раза в секунду (точнее 1193180/65536).
Вот этот кусок по-моему работал:

Код:
     PUSH ES

     MOV  AX, 40h
     MOV  ES, AX
     CLI
     MOV  CX, [ES:6Eh]  
     MOV  DX, [ES:6Ch]
     STI

     MOV  AX, CX
     MOV  BX, DX
     SHL  DX, 1
     RCL  CX, 1
     SHL  DX, 1
     RCL  CX, 1
     ADD  DX, BX
     ADC  AX, CX

     XCHG DX, AX
     MOV  CX, 0E90Bh   ; 59659
     DIV  CX
     MOV  BX, AX
     XOR  AX, AX
     DIV  CX
     MOV  DX, BX
     MOV  CX, 200
     DIV  CX
     CMP  DL, 100
     JB   @@Below100
     SUB  DL, 100
   @@Below100:
     CMC
     MOV  BL, DL
     RCL  AX, 1
     MOV  DL, 0
     RCL  DX, 1
     MOV  CX, 60
     DIV  CX
     MOV  BH, DL
     DIV  CL
     XCHG AL, AH

     POP  ES
AH - час, AL - минуты, BH - секунды, BL - сотые доли секунды
alexBlack вне форума Ответить с цитированием
Старый 20.01.2009, 09:33   #10
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
MEM 0040h:006Ch - TIMER TICKS SINCE MIDNIGHT
да что ты будешь делать? надо было сразу сказать что адрес 0040h:006Ch, а не 0040006Ch.
Адрес 0040h:006Ch и адрес 0040006Ch это два совершенно разных адреса!
rpy3uH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Серверное время Rio309 Компьютерное железо 7 30.09.2008 00:22
Время |{ot Паскаль, Turbo Pascal, PascalABC.NET 4 14.05.2008 17:32
время Женька Помощь студентам 4 21.04.2008 17:07
Время ben95 Общие вопросы Delphi 3 06.01.2008 16:02
Время.. ZhekON Общие вопросы Delphi 6 18.06.2007 16:59