![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
18192123 |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Здраствуйте! Вот такое задание: вывести в файл время работы программы (неважно какой - например, программы выводящей на экран текстовое сообщение и ждущей нажатия любой клавиши для завершения работы)..Приведите пожалуста пример, как реализовывается такое задание, как узнать, сколько работала программа и как вообще осуществляется вывод в файл?
И ещё такой вопрос: как на экран, пока работает программа можно выводить системное время? Сообщение отредактировано: 18192123 - 15.05.2008 18:06 |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
1. Реализация времени зависит от ОС. Поэтому без ее указания ответить на вопрос невозможно.
2. Чтобы узнать, сколько работала программа, определяется время перед началом ее работы и после окончания, а потом из второго вычитается первое. 3. Интересует файловый вывод вообще или как вывести конкретно время? Файловый вывод тоже определяется ОС. 4. Периодически запрашивать время и обновлять его на экране. Помню, в DOS писал функцию, которая одновременно опрашивает клавиатуру и обновляет показания времени. В Windows время лучше выводить по прерыванию таймера. |
18192123 |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
1. Windows XP
2. А как это самое время узнать? 3. с файловым выводом впервые сталкиваюсь, так что интересует как и он сам, так и вывод именно времени работы. |
andriano |
![]()
Сообщение
#4
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
1-2. Если к точности не предъявляются слишком высокие требования, то GetTickCount будет достаточно. Погрешность - десяток или несколько десятков мс. Если требования к точности очень высокие, то QueryPerformanceCounter/QueryPerformanceFrequency, но есть целый букет недостатков.
3. CreateFile, WriteFile, CloseHandle. |
мисс_граффити |
![]()
Сообщение
#5
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
andriano, на ассемблере?...
18192123, у меня про ввод-вывод (в том числе файловый) есть методичка. могу кинуть, если хочешь -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата на ассемблере?... Опять же, смотря на каком ассемблере - "invoke GetTickCount" еще никто не отменял... |
andriano |
![]()
Сообщение
#7
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Да хотя бы и ручками распихать стек и call нужную процедуру. (в WinAPI вызовы производятся в стиле Паскаля, т.е. параметры запихиваются в стек в обратном порядке - в вершине стека лежит последний, а стек освобождает вызываемая процедура)
|
18192123 |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
18192123 |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Нашла функцию, которая отвечает за получение времени:
mov AH, 2Ch
int 21h
тогда в регистре CH-час,CL-мин,DН-с,DL-1/100с.. И у меня вопрос: как теперь всю эту информацию вывести на экран? |
andriano |
![]()
Сообщение
#10
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
1. Windows XP Нашла функцию, которая отвечает за получение времени:
mov AH, 2Ch
int 21h
тогда в регистре CH-час,CL-мин,DН-с,DL-1/100с.. И у меня вопрос: как теперь всю эту информацию вывести на экран? 1. Пишешь про WinXP, а функцию нашла для DOS. 2. Если уж пишешь под DOS и нужно не определить текущее время, а как написано в заголовке темы, измерить время выполнения прграммы, лучше читать показания счетчика времени BIOS, находящиеся по адресу 0040:006c. Измеряется в "тиках", частота которых составляет 18.2 Гц. 3. На экран выводится строка, следовательно, нужную тебе величину нужно преобразовать в строку, после чего ее можно вывести одной из стандартных функций BIOS/DOS. |
hardcase |
![]()
Сообщение
#11
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Хммм всегда смущали подобные темы связанные с выполнением подобной элементарщины.
А если написать на C код (десяток строк с применением WinAPI) и попросить компилятор сгенерировать листинг на ассемблере? -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
Despot |
![]()
Сообщение
#12
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
hardcase |
![]()
Сообщение
#13
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Офтоп конечно, но всё же вопрос. Как поросить компилятор сгенерировать этот самый листинг? У меня вот есть BC 3.1 и BuilderC++. Для майкрсофтовского компилятора это вариации ключа /FA -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 21:11 |