Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
#1

Организация прерываний в DOS - C++

13.04.2013, 18:31. Просмотров 1314. Ответов 18
Метки нет (Все метки)

Доброе время суток. Возникла проблема с прерываниями в DOS. Недавно начал изучать их использование в написании программ, так что заранее извиняюсь, если что-то в моем сообщении будет выглядеть глупо. Буду краток: когда читал статьи об использовании прерываний наткнулся на две из них:
1 программа, генерирует 33 прерывание и выводит мышь на экран.(в дальнейшем дополнил программу определением координат и нажатых кнопок)
C++
1
2
3
4
5
6
7
8
#include <dos.h>
#include<conio.h> 
main()
{
_AX=1; //заносим в регистр AX 1
geninterrupt(0x33); //генерируем 33-е прерывание
getch();
}
затем я нашел сайт с описание большого кол-ва прерываний, и сейчас продемонстрирую одну из статей:
AH = 2Ch - Получить время [1] [2] [3] [4]


Вход : нет

Возврат : CH = часы (от 0 до 23)

CL = минуты (от 0 до 59)

DH = секунды (от 0 до 59)

DL = сотые доли (с 0 до 99)
опираясь на код мыши и эти данные, я решил составить простую программу, выводящую системное время, но компилятор начал ругаться. Пожалуйста, укажите в чем ошибка моей программы. Заранее благодарю.
Скрин компилятора:
Миниатюры
Организация прерываний в DOS  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2013, 18:31     Организация прерываний в DOS
Посмотрите здесь:

Организация обработки прерываний - C++
Здравствуйте! Пытаюсь разобраться с механизмом обработки прерывания. Нужно написать такую программку, чтобы показать программное прерывание...

Литература для написания обработчика прерываний MS DOS - C++
Нужна литература чтобы выполнить лабораторную по теме &quot;Использование стандартных функций и разработка собственных прерываний в ОС MSDOS&quot;....

Обработка прерываний с клавиатуры на С++ с применением библиотеки dos.h - C++
Добрый день! Очень сильно нуждаюсь в вашей помощи. Вот в чем вопрос: Осуществить коррекцию прерывания Int 9 (от клавиатуры) так,...

Обработка прерываний - C++
Доброго времени суток. Пытаюсь выполнить пример программы с использованием прерывания, взятый из справки Borland C++. #include &lt;stdio.h&gt;...

Обработчик прерываний - C++
Есть такое задание: &quot;При нажатии символьной клавиши с нажатой клавишей Shift выводить её код. Для вывода использовать прерывание...

Как реализовать обработку прерываний в С++? - C++
Надо разработать три программных модуля, каждый процесс после запуска представляет уникальный процесс, работа которого предполагает...

Вызов функций через таблицу прерываний - C++
Уважаемые участники форума cyberforum.ru, очень нужна ваша помощь. Столкнулся с такой вот проблемой: написал класс обработки 64-битных...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
A1exSun
C#
55 / 55 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 18:42     Организация прерываний в DOS #2
2Ch значит число 2C в HEX формате, в C/C++ записываться 0x2C.
C++
1
_AH = 0x2C;
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.04.2013, 18:50  [ТС]     Организация прерываний в DOS #3
A1exSun, большое спасибо.

Добавлено через 2 минуты
A1exSun, но это не помогло, программа выводит 0:0:0
A1exSun
C#
55 / 55 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 19:07     Организация прерываний в DOS #4
А прерывание кто вызывать будет?
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
13.04.2013, 19:09     Организация прерываний в DOS #5

Не по теме:

Только TurboC с прямым доступом к регистрам, только ДОС, только хардкор!



Sid1057, ты б тогда за ассемблер сразу брался, а то ни туда ни сюда, извращение какое-то
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.04.2013, 19:22  [ТС]     Организация прерываний в DOS #6
A1exSun, подскажите что именно надо добавить, какое значение должен содержать geninterrupt()? 2C не подходит.

Добавлено через 1 минуту
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не по теме:
Только TurboC с прямым доступом к регистрам, только ДОС, только хардкор!
а как же по-другому?

Цитата Сообщение от Kastaneda Посмотреть сообщение
Sid1057, ты б тогда за ассемблер сразу брался, а то ни туда ни сюда, извращение какое-то
думаю что сейчас ассемблер не потяну, я в сях-то еще не разобрался, а прерывания штука полезная, стоит выучить, особенно если в DOS работаешь)
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
13.04.2013, 19:22     Организация прерываний в DOS #7
Цитата Сообщение от Sid1057 Посмотреть сообщение
подскажите что именно надо добавить, какое значение должен содержать geninterrupt()? 2C не подходит.
0x21 попробуй.
A1exSun
C#
55 / 55 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 19:23     Организация прерываний в DOS #8
2Ch - функция прерывания 21h.
C++
1
geninterrupt(0x21);
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.04.2013, 19:34  [ТС]     Организация прерываний в DOS #9
A1exSun, спасибо, получилось. Хотел узнать на будущее, почему именно 21h, как выбирается этот параметр, он где-то прописан для каждого прерывания?
A1exSun
C#
55 / 55 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 19:37     Организация прерываний в DOS #10
21h это прерывание DOS API, 2Ch это его функция получения времени.
33h это прерывание работы с мышью, у него свои функции.
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.04.2013, 19:39  [ТС]     Организация прерываний в DOS #11
A1exSun, а не подскажите, где можно узнать подробную информацию о функциях различных прерываний? или просто гуглить?
A1exSun
C#
55 / 55 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 19:48     Организация прерываний в DOS #12
Было в какой-то книжке описание всего...
Посмотри книги на http://frolov-lib.ru, там все есть о системном программировании в DOS.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
13.04.2013, 19:48     Организация прерываний в DOS #13
Цитата Сообщение от Sid1057 Посмотреть сообщение
а не подскажите, где можно узнать подробную информацию о функциях различных прерываний?
DOS'ие можно тут посмотреть http://www.avprog.narod.ru/progs/fdos01.html
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.04.2013, 20:00  [ТС]     Организация прерываний в DOS #14
Цитата Сообщение от kazak Посмотреть сообщение
DOS'ие можно тут посмотреть http://www.avprog.narod.ru/progs/fdos01.html
спасибо, я увидел здесь описание функций, но какое именно прерывание следует делать, я увидел только в некоторых функциях
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2013, 20:01     Организация прерываний в DOS
Еще ссылки по теме:

Используя подсистему прерываний написать программу, которая выводит на экран информацию о параметрах НЖМД - C++
Используя подсистему прерываний написать программу, которая выводит на экран информацию о параметрах НЖМД. $ 13 - дисковые службы ...

БД в C++ for DOS - C++
ЗДравствуйте! Не могли бы вы подсказать книги либо какие-нибудь ресурсы по изучению БД в С++ под ДОС. В интернете ничего не нашёл... ...

ms dos - C++
Доброго времени суток. Только сегодня начала читать С++ для чайников и тут же встала проблема-не могу поставить Ms Dos. Вот что пишет: ...

DOS приложения и C++ - C++
хотел бы узнать ответы на некоторые вопросы, почему приложения, написанный к примеру в c++ buildere 6.0 не будут работать в DOS, в чем...

ООП в DOS - C++
Добрый день. Я новичок, недавно начал изучать c++ и задался таким вопрос, в какой среде разработки можно создавать программы с GUI для DOS...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
A1exSun
C#
55 / 55 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 20:01     Организация прерываний в DOS #15
Цитата Сообщение от Sid1057 Посмотреть сообщение
спасибо, я увидел здесь описание функций, но какое именно прерывание следует делать, я здесь не увидел(разве что именно в функции системного времени)
Первая строка:
Большинство функций DOS вызываются с помощью прерывания INT 21h.
Yandex
Объявления
13.04.2013, 20:01     Организация прерываний в DOS
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru