![]() |
|
|
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Всем привет!
Мне необходимо написать на ассемблере секундомер или часы, однако я поставлен в некоторые рамки (так как програмулю надо писать по учебе, а не для себя) и мне необходимо пользоваться только операторами доступными для i8080. Да собственно даже и это не проблема так как я не могу взять в толк каким образом на асме делается задержка во времени? Скажем я хочу каждую секунду увеличивать содержимое регистра И на 1. Огромное спасибо за помощь -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
По адресу 0:046Ch лежат 4 байта, указывающие кол-во тиков. Тик = 55 мс.
Так что если тебе надо подождать одну секунду, жди, пока значение по указанному адресу не увеличится на 1000/55=17-18 тиков... Только что значит i8080 ? Какие у него доступные операторы ? И вообще, может ты поди выполняешь лабу в каком-нибудь эмуляторе, а там ведь без всяких биосов... Тогда надо через порты работать с таймером... -------------------- С уважением, г-н Посол. |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
xor eax,eax
met: invoke Sleep,1000 inc eax jmp met гыгы -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
- При помощи апи (int 15h в дос, можно использовать функции получения времени от int 21h или апи win32 - типа Sleep); - Вручную программируя порты ввода-вывода; - Используя прерывания от таймера (перехват int 1Ch, int 08h) или используя рез-ты работы стандратных обработчиков (упомянутая область данных bios в 046Ch или тики, возвращаемые апи GetTickCount и т.п.); - Можно и самому определить, чему должен быть равен входной параметр примерно вот такого цикла: mov cx,Param @@Delay: push cx mov cx,0FFh @@Wait: loop @@Wait pop cx loop @@Delay измеряя время его выполнения при помощи запросов времени у ОС. Допустим, цикл с Param=10 000 выполняется ~(1 +- 0.1) сек. Тогда, по идее, задержка в 0,1 сек требует Param=1 000. Но каждый раз, на каждой машине, нужно будет определять его. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |