Здравствуйте ув эксперты у меня вот какой вопрос: давно написал програмку. в ней одна из процедур рисует на экране циферблат часов со стрелками . проседура опрашивается циклом, здесь всё работает , но когда я сделал не через цикл, а через interrupt , программа стала виснуть. Почему???? Заранее благодарен.
Добрый день, DJmp! Вопрос, который неоднократно задаётся. С ним сталкиваются практически все начинающие, пробующие свои силы в перехвате прерываний. Вся проблема в дву строках: mov ah,2ch int 21h Нельзя вызывать сервисные прерывания (int 21, int 25/26, ...) из обработчиков аппаратных прерываний. Перепиши свой код так, чтобы вместо вызова int 21 было чтение значения времени из памяти BIOS. Второй вариант - перехватить int 28, а уже с нём производить вывод на экран. Почитай TechHelp по этой теме... Ответ отправлен: 03.06.2002, 11:33 Отправитель: Артём Шегеда Отвечает Sensey
Добрый день, DJmp! Без полной проги только наводящие вопросы: 1. Сохраняешь - востанавливаешь прерывапния процедурами SetIntVec, GetIntVec? 2. Может нельзя передавать параметры в прерывание, кроме регистров? 3. В приложении несоответствие begin-end. При написании ппрограмм используй логические отступы.
Ответ отправлен: 03.06.2002, 11:33 Отправитель: Sensey
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.