; Умножить среднее значение на частоту генератора системного таймера MOV EAX, [AverageTime] MOV EDX, 1193180 MUL EDX
; Разделить результат на коэффициент пересчета системного таймера 65536 SHRD EAX, EDX,16
; Вычислить частоту в МГц (разделить на 1000000) XOR EDX, EDX MOV EBX, 1000000 DIV EBX
; Частота процессора переносится в CPU_Freq MOV [CPU_Freq], EAX
; Возвращаемся из процедуры RET ENDP Frequency
; Процедура, ожидающая изменения таймера PROC WaitTimer near MOV EAX, [Time] @@T: CMP EAX, [ES:046Ch] JE @@T MOV EAX,[ES:046Ch] MOV [Time],EAX RET ENDP WaitTimer
ENDS END
Кое-что поправить, и можно будет работать только с Асм-ом... Справишься?
guf
11.11.2008 1:12
Спасибо большое, volvo. Только у меня один вопрос - как использоавть в своей программе 64-битные регистры? У меня TASM ругается на них, пишет типа "undefineid symbol eax".
volvo
11.11.2008 1:29
Цитата
как использоавть в своей программе 64-битные регистры? У меня TASM ругается на них, пишет типа "undefineid symbol eax".
А где ты нашел тут 64-битные регистры? EAX - 32 битный вообще-то... Какая версия компилятора? Мой досовский TASM 3.0 нормально компилирует:
Упс, значит не 64 бита Твой код, что компилирует я не спорю. Все нормально, версия 4.1 у меня. Просто моем коде когда использую EAX компилятор ругается
Вот например:
Код
TITLE SystemRevision JUMPS .model SMALL
.data;описание данных ...
.code .8086 start: mov AX,@DATA ; установка в ds адpеса mov DS, AX ; сегмента данных