Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для Windows/Dos > Вызов прерывания в Windows |
Автор: Kuvaldis 23.6.2006, 20:18 | ||
Программирую на С / С++. Нужда заставила обратиться к ASM. Не получается вызвать прерывание под Windows XP в ассемблерной вставке. Если запустить программу под borland C 3.1, то все работает. Под Builder 6 просто черный экран. А в Visual c++ мелкософтовском выдается ошибка времени выполнения. Ну Borland C - он под DOS работает, тут все понятно. В как сделать, чтобы все работало и в Windows? Заранее спасибо за ответ.
|
Автор: Damarus 23.6.2006, 22:01 |
Писать программу для DOS (COM, MZ). Borland C 3.1 это и делает. Windows XP эмулируем DOS'овские прерывания для DOS'овских программ. В программе для Windows (PE - Builder 6, Visual С++) - никак. В Windows XP доступ к прерываниям есть только из режима ядра. |
Автор: Chingachguk 24.6.2006, 00:31 | ||
Что именно ты хочешь сделать на ASM в windows? В вышеприведенном примере ты вызываешь функцию DOS - "READ CHARACTER FROM STANDARD INPUT, WITH ECHO", наверное это просто "пробный пример"? |
Автор: Kuvaldis 24.6.2006, 00:40 |
Chingachguk Для своего курсового на С++ у нас в БГУИР (минск) 2 среды: Borland C++ 3.1 и Visual C++ 6/ Второй вариант посимпатичнее, но в этой IDE нет функций а-ля gotoxy wherex для управления курсором, что является критичным для реализации (менюшки всякие) Хотел просто эти функции через 10h прерывание реализовать. Не судьба... |
Автор: setty 24.6.2006, 13:46 |
менюшки под дос я когдато писал на тасме правда (даже не псевдо а самая что не наесть графика) если надо могу выложить исходник |
Автор: Chingachguk 24.6.2006, 15:08 | ||||
Неужели в консольной WIN32 программе нельзя двигать курсор? Или ты про оконное приложение - там нужно специфичные для win функции использовать, но также все есть. Вот нашел в примерах из пакета MASM32 (есть на сайте WASM.ru):
Имхо, и на СИ то же самое можно написать... Это Ж просто WIN API. |
Автор: Kuvaldis 24.6.2006, 15:39 |
1. setty! Спасибо за предложение и за готовность помочь. Был бы очень рад увидеть твои исходники 2. Chingachguk!!! Огромнейшее спасибо за ИНФОРМАЦИЮ. (к сожалению пока 100 постов нет для повышения твоей репутации). 3. Кстати, решил свою программу откомпилировать в Borland C++ Builder 6. Он же тоже под Win, но функции досовского borland 3.1 gotoxy() и т.д. пристутствуют. Посмотрел в CPU, как они выполняются в этих двух средах. Оказывается, что в Builder просто (!!!!!!) вызывается WIN API функция SetConsoleCursorPosition(). |