IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Время работы программы, Файл
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Здраствуйте! Вот такое задание: вывести в файл время работы программы (неважно какой - например, программы выводящей на экран текстовое сообщение и ждущей нажатия любой клавиши для завершения работы)..Приведите пожалуста пример, как реализовывается такое задание, как узнать, сколько работала программа и как вообще осуществляется вывод в файл?

И ещё такой вопрос: как на экран, пока работает программа можно выводить системное время?

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


1. Реализация времени зависит от ОС. Поэтому без ее указания ответить на вопрос невозможно.
2. Чтобы узнать, сколько работала программа, определяется время перед началом ее работы и после окончания, а потом из второго вычитается первое.
3. Интересует файловый вывод вообще или как вывести конкретно время? Файловый вывод тоже определяется ОС.
4. Периодически запрашивать время и обновлять его на экране. Помню, в DOS писал функцию, которая одновременно опрашивает клавиатуру и обновляет показания времени. В Windows время лучше выводить по прерыванию таймера.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


1. Windows XP
2. А как это самое время узнать?
3. с файловым выводом впервые сталкиваюсь, так что интересует как и он сам, так и вывод именно времени работы.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


1-2. Если к точности не предъявляются слишком высокие требования, то GetTickCount будет достаточно. Погрешность - десяток или несколько десятков мс. Если требования к точности очень высокие, то QueryPerformanceCounter/QueryPerformanceFrequency, но есть целый букет недостатков.
3. CreateFile, WriteFile, CloseHandle.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


andriano, на ассемблере?...

18192123, у меня про ввод-вывод (в том числе файловый) есть методичка. могу кинуть, если хочешь


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
на ассемблере?...
Опять же, смотря на каком ассемблере - "invoke GetTickCount" еще никто не отменял...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Да хотя бы и ручками распихать стек и call нужную процедуру. (в WinAPI вызовы производятся в стиле Паскаля, т.е. параметры запихиваются в стек в обратном порядке - в вершине стека лежит последний, а стек освобождает вызываемая процедура)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(мисс_граффити @ 16.05.2008 2:35) *

andriano, на ассемблере?...

18192123, у меня про ввод-вывод (в том числе файловый) есть методичка. могу кинуть, если хочешь

да, было бы неплохо))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Нашла функцию, которая отвечает за получение времени:

mov AH, 2Ch
int 21h



тогда в регистре CH-час,CL-мин,DН-с,DL-1/100с..
И у меня вопрос: как теперь всю эту информацию вывести на экран?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(18192123 @ 15.05.2008 23:44) *

1. Windows XP

Цитата(18192123 @ 17.05.2008 21:46) *

Нашла функцию, которая отвечает за получение времени:

mov AH, 2Ch
int 21h



тогда в регистре CH-час,CL-мин,DН-с,DL-1/100с..
И у меня вопрос: как теперь всю эту информацию вывести на экран?

1. Пишешь про WinXP, а функцию нашла для DOS.
2. Если уж пишешь под DOS и нужно не определить текущее время, а как написано в заголовке темы, измерить время выполнения прграммы, лучше читать показания счетчика времени BIOS, находящиеся по адресу 0040:006c. Измеряется в "тиках", частота которых составляет 18.2 Гц.
3. На экран выводится строка, следовательно, нужную тебе величину нужно преобразовать в строку, после чего ее можно вывести одной из стандартных функций BIOS/DOS.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Хммм всегда смущали подобные темы связанные с выполнением подобной элементарщины.

А если написать на C код (десяток строк с применением WinAPI) и попросить компилятор сгенерировать листинг на ассемблере?


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Цитата(hardcase @ 18.05.2008 17:49) *

А если написать на C код (десяток строк с применением WinAPI) и попросить компилятор сгенерировать листинг на ассемблере?


Офтоп конечно, но всё же вопрос. Как поросить компилятор сгенерировать этот самый листинг? У меня вот есть BC 3.1 и BuilderC++.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Цитата(Despot @ 19.05.2008 2:38) *


Офтоп конечно, но всё же вопрос. Как поросить компилятор сгенерировать этот самый листинг? У меня вот есть BC 3.1 и BuilderC++.
Обратиться к документации компилятора и найти нужный ключ запуска.
Для майкрсофтовского компилятора это вариации ключа /FA


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 16:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name