|
Интересная функция задержки, Вопрос по ассемблеру |
|
|
|
Aug 25 2006, 12:26
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 9-05-05
Пользователь №: 4 855

|
Есть вот такая интересная функция задержки времени. Сначала задается: ldi AL, 125 Потом вызывается сама функция: dly: mov _Stm1, AL tst _Stm1 brne PC-1 ret При кварце в 10 МГц задержка выходит примерно в 500 мс. Вопрос - как это работает, а именно, что постепенно обнуляет регистр _Stm1?
|
|
|
|
|
 |
Ответов
|
Aug 28 2006, 18:58
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(vet @ Aug 28 2006, 23:57)  prottoss к чему ирония? разумеется, измерение отрезка времени таймером точнее, чем с помощью цикла, неизвестно на сколько времени продлённого разнообразными возникающими по ходу работы прерываниями. Так и я о том же, а уважаемый defunct пытается доказать обратное Цитата(singlskv @ Aug 29 2006, 02:39)  Интересно, а если у нас вся работа происходит в прерываниях, то что мы будем делать, в то время пока не произошло интересуещее нас событие (ИМХО, ковырять в носу в каком-нибудь пустом цикле  ). Кто то ковыряет в носу, а кто то спокойно спит)))
Сообщение отредактировал prottoss - Aug 28 2006, 19:00
--------------------
|
|
|
|
|
Aug 29 2006, 13:29
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(prottoss @ Aug 28 2006, 21:58)  Цитата(vet @ Aug 28 2006, 23:57)  prottoss к чему ирония? разумеется, измерение отрезка времени таймером точнее, чем с помощью цикла, неизвестно на сколько времени продлённого разнообразными возникающими по ходу работы прерываниями. Так и я о том же, а уважаемый defunct пытается доказать обратное Цитату в студию. protossМожет быть прежде чем слепо спорить, что-то домысливать и т.п. лучше просто подумать над тем что было сказано?.. А код такой задержи на мой взгляд имеет корни скорее всего из realmode x86 платформы. Системный таймер в realmode x86 располагается по фиксированному адресу и инкрементируется 18.2 раз в секунду обработчиком прерывания IRQ0, т.о. самый простой способ организации относительно точной задержки, независимой от частоты процессора для realmode x86 - это просто постоянно вычитывать значение системного таймера и сравнивать с требуемым значением: типичная организация задержки в DOS программах: Код push ds xor ax, ax mov ds, ax mov eax, [413h]; <- могу ошибиться с адресом add eax, 182; +10 секунд _do_wait: cmp eax, [413h] ja _do_wait pop ds
|
|
|
|
|
Aug 29 2006, 14:01
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(defunct @ Aug 29 2006, 21:29)  типичная организация задержки в DOS программах: Код push ds xor ax, ax mov ds, ax mov eax, [413h]; <- могу ошибиться с адресом add eax, 182; +10 секунд _do_wait: cmp eax, [413h] ja _do_wait pop ds Надоело спорить о бессмысленном, но Вы хоть добавляйте, что типично для Вас. Хотите поговорить о DOS? Пожалуйста. Вы слышали чего нибудь о функции BIOS INT15? Это типично для DOS... Но долго...Представляю лучшие ДОСовские игры, с задержками, организованными по Вашему коду))) PS: счетчик располагается по адресу 0000:046Ch
--------------------
|
|
|
|
|
Aug 29 2006, 14:48
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(prottoss @ Aug 29 2006, 17:01)  Надоело спорить о бессмысленном, но Вы хоть добавляйте, что типично для Вас. Боже упаси, кто с вами спорит-то?  Вы эта.. хоть читайте сообщения.. или "чукча только писатель" © ?  Цитата Хотите поговорить о DOS? Пожалуйста. Вы слышали чего нибудь о функции BIOS INT15? Это типично для DOS... Но долго... Сервисные функции DOS начинаются с INT 20H, поэтому INT 15 это "типично для Вас" © protoss, а не для DOS.  Цитата Представляю лучшие ДОСовские игры, с задержками, организованными по Вашему коду))) Всякий овощ полезен. ©
|
|
|
|
Сообщений в этой теме
Reboot_s Интересная функция задержки Aug 25 2006, 12:26 vet Очевидно, прерывание; предположительно, по таймеру... Aug 25 2006, 12:37 Reboot_s Цитата(vet @ Aug 25 2006, 16:37) Очевидно... Aug 25 2006, 13:13 prottoss Я бы сказал, что функция не интересная, а наоборот... Aug 25 2006, 13:09 SasaVitebsk Цитата(prottoss @ Aug 25 2006, 16:09) Я б... Aug 26 2006, 19:49  prottoss Цитата(SasaVitebsk @ Aug 27 2006, 03:49) ... Aug 26 2006, 21:25   SasaVitebsk Цитата(prottoss @ Aug 27 2006, 00:25) Цит... Aug 27 2006, 22:41    CDT Цитата(prottoss @ Aug 25 2006, 16:09) Я б... Aug 28 2006, 05:17   defunct Цитата(prottoss @ Aug 27 2006, 00:25) Цит... Aug 28 2006, 12:01    prottoss Цитата(defunct @ Aug 28 2006, 20:01) ну я... Aug 28 2006, 15:45 singlskv Цитата(prottoss @ Aug 25 2006, 17:09) Я б... Aug 28 2006, 18:39  singlskv Цитата(prottoss @ Aug 28 2006, 22:58) Кто... Aug 28 2006, 19:14   prottoss Цитата(singlskv @ Aug 29 2006, 03:14) Угу... Aug 28 2006, 19:56    SasaVitebsk Цитата(prottoss @ Aug 28 2006, 22:56) Пот... Aug 28 2006, 20:07     prottoss Цитата(SasaVitebsk @ Aug 29 2006, 04:07) ... Aug 28 2006, 21:21    singlskv Цитата(prottoss @ Aug 28 2006, 23:56) Пот... Aug 28 2006, 20:49     SasaVitebsk Цитата(singlskv @ Aug 28 2006, 23:49) Пот... Aug 28 2006, 21:09     prottoss Цитата(singlskv @ Aug 29 2006, 04:49) Пот... Aug 28 2006, 21:12      singlskv Цитата(prottoss @ Aug 29 2006, 01:12) Цит... Aug 28 2006, 21:39       prottoss Цитата(singlskv @ Aug 29 2006, 05:39) При... Aug 28 2006, 21:47        singlskv Цитата(prottoss @ Aug 29 2006, 01:47) Цит... Aug 28 2006, 22:03         prottoss Цитата(singlskv @ Aug 29 2006, 06:03) Мож... Aug 28 2006, 22:16          singlskv Цитата(prottoss @ Aug 29 2006, 02:16) Цит... Aug 28 2006, 22:29           prottoss Цитата(singlskv @ Aug 29 2006, 06:29) Око... Aug 28 2006, 22:44            singlskv Цитата(prottoss @ Aug 29 2006, 02:44) Цит... Aug 28 2006, 23:10            SasaVitebsk Цитата(prottoss @ Aug 29 2006, 01:44) Цит... Aug 30 2006, 17:42             prottoss Цитата(SasaVitebsk @ Aug 31 2006, 01:42) ... Aug 30 2006, 18:12              defunct Цитата(prottoss @ Aug 30 2006, 21:12) Цит... Aug 31 2006, 13:17     prottoss Цитата(defunct @ Aug 29 2006, 22:48) Вы э... Aug 29 2006, 15:43      defunct Цитата(prottoss @ Aug 29 2006, 18:43) Цит... Aug 29 2006, 18:25       prottoss Цитата(defunct @ Aug 30 2006, 02:25) PS: ... Aug 29 2006, 18:39        defunct Цитата(prottoss @ Aug 29 2006, 21:39) Цит... Aug 29 2006, 20:50 prottoss Я предложу, но объясните мне, непонятливому, зачем... Aug 28 2006, 20:42 SasaVitebsk Цитата(prottoss @ Aug 28 2006, 23:42) Я п... Aug 28 2006, 21:18 vet prottoss
Ваш вариант хуже в смысле точности, и нам... Aug 29 2006, 05:51 prottoss Цитата(vet @ Aug 29 2006, 13:51) prottoss... Aug 29 2006, 06:09 vet Опять не понимаете. Таймер тикает независимо от пр... Aug 29 2006, 07:09 GetSmart prottoss
Если вы такой умный насколько и нагловаты... Aug 29 2006, 16:16 prottoss Цитата(GetSmart @ Aug 30 2006, 00:16) pro... Aug 29 2006, 16:47 GetSmart Ну то есть задание вы провалили. Приходите через г... Aug 29 2006, 16:58 SasaVitebsk Специально использую класический смайл так как он ... Aug 30 2006, 20:20 prottoss 2 SasaVitebsk: объяснения об улыбках, ухмылках, и ... Aug 31 2006, 14:57 defunct LMD Aug 31 2006, 23:10 SpiritDance А дык чего вы хотите от Пиннокио? Ж))) Sep 1 2006, 05:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|