| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Вопрос по работе прерываний в winxp |
| Автор: suvolod 13.6.2006, 04:54 |
| Помогите разобраться с теорией. Ассемблер копаю недавно, учусь по книге Питера Абеля «Ассемблер и программирование на IBM PC», пятое издание, книга выпущена в 2005 году. Беспокоит вот что: у Абеля есть большая глава, посвящена различным прерываниям – int 10h, 16h, 21h и так далее. Как я понимаю, если материал по прерываниям в новом издании книги остался, значит эта тема не устарела и все эти прерывания должны работать и под новыми операционными системами. Работаю под Win XP. При изучении ассемблера в качестве компилятора использую VC++ 6.0. Пользуюсь asm- вставками. Так вот, попытка задействовать (исследовать) даже самое простенькое прерывание – например, вывод на консоль char-строки или изменение положения курсора в консоли, приводит к тому, что приложение аварийно завершается. Никак не могу понять, что делать – то ли материал, приводимый в книге давно устарел, несмотря на то что издание новое, то ли я неправильно что-то делаю. Краем уха я слышал, что пользоваться прерываниями под nt-шными операционками нельзя, так как операционная система не дает напрямую обращаться к аппаратуре ПК. Однако, насколько я знаю, xp позволяет запускать dos- приложения, можно даже настроить совместимость с w95-98, а значит как минимум XP должна хотя бы эмулировать эти прерывания. И еще, в инете несколько раз встречал упоминания о том, что прерывания в новых версиях windows заменены понятием селекторы. И якобы прерываний как таковых нет вовсе. Если не сложно, поясните простым доступным языком, что это значит в плане программирования на ассемблере. Если предположить, что прерываний нет, значит есть заменяющие (эмулирующие???) их селекторы, и я могу вызывать их вместо прерываний для тех-же целей. Например, для того-же вывода стоки на консоль… |
| Автор: setty 13.6.2006, 12:33 |
| хм, прерывания есть и никуда собстнаи не нделись, однако не 21h ) возможно xp и позволяет запускать dos приложения, однако запускает их в специальном там какомта эмуляционном режиме твоюже прогу она будит запускать как обычное виндовое приложение и падобные инты её могут малость контузить ) что касается прерыванияй и селекторов, тут тебе стоит копать в сторону защищённого режима при работе в виндоузе используются не прерывания а набрр функций предоставляемый windows разработчику - т.н. native APIs. С помощью этих апи можно писать/читать в консоль, работать с файлами, графическим интерфейсом, и впринципе делать очень и очень многое. |
| Автор: BUGOR 13.6.2006, 16:26 |
| suvolod, есть прерывания windows, а есть прерывания ДОС, так вот если бы пытаешься в VC++ в win32 проекте писать на прерываних ДОС, то само собой ничего у тебя не выйдет, это же совершенно разные платформы, поэтому у тебя два выхода: 1. Использовать ДОС компилятор для своих проектов 2. Писать на ассемблере под вин. Советую второе, книга Абеля давно морально устарела, после описывающего материала я там не вижу ничего актуального. Поэтому если уже знаком с основами, то переходи на win32 платформу. |
| Автор: ds29 15.6.2006, 00:41 |
| вы что ребята, Питер Абель "АССЕМБЛЕР язык и программирование для IBM PC"- это Библия программиста! (у меня как первое (1991) так и 5-е (2003) издание) итак, все прерывания будут корректно работать если ты их будешь компилировать тем компилятором, который указан в книге (т.е. MASM 6.1, например) и запускать под соотв. ОС (т.е. MS-DOS), для запуска в Win32 удобней запускать из консоли (cmd.exe) или из far-manager. в этих случаях бкдет эмулирование MS-DOS . если ты хочешь использовать Cи компилятор, то например используй Turbo C++ создавая в нём приложения под DOS с АСМ вставками. т.е. используя эту книгу приложение под Win32 ты не напишешь. |
| Автор: Exekutor 15.6.2006, 06:36 |
| Прерывания в 32-х битных приложениях под вин ХР не работают. Используй API. Если пишешь под доску, то используй соответствующий компилятор как уже говорилось выше. |
| Автор: BUGOR 15.6.2006, 13:52 |
| Exekutor, как не работают? Таблицу прервываний винды никто не отменял! |
| Автор: ds29 15.6.2006, 14:09 |
| ??? мы говорим про прерывания MS-DOS и BIOS которые описаны в книге П. Абеля. |