C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
ASM вставки, ASM вставки
Vitaly
  Отправлено: 05.09.2005, 08:57


Ученик-кочегар

Группа: Участник
Сообщений: 8



Я писал программу и в ней нужно было внедрить некоторый ASM код.
Это писал всё для DOS'овского С++. Когда решил использовать его для работы под Builer'ром, то на первом же прерывании выдаётся ошибка. Почему? И как исправить ситуацию?

Говорю сразу, что ASM код не далает ничего, что связывало бы его конкретно с DOS'ом, он просто собирает информацию о файловой системе.
Guest
Отправлено: 05.09.2005, 10:12


Не зарегистрирован







QUOTE

... на первом же прерывании выдаётся ошибка. Почему? И как исправить ситуацию?

Ошибка времени выполнения? Тогда, возможно, вы используете запрещенные в Win (особенно последних версий) функции и вызовы.
klen
Отправлено: 06.09.2005, 13:36


Машинист паровоза

Группа: Участник
Сообщений: 239



Под защищенными системама (все кроме дос) запрещено использовать привелегированные инструкции такие как int out in — приложение будеть аварийно закрыто. Эти инструкции допускаются к выполнения только на уровне ядра ОС или драйверов устройств. Это сделано чтоб Вы — программит приложения не имели никакого доступа к аппаратуре и не смогли обрушить ОС, такчто пользуйтесть средствами ОС
vvoid
Отправлено: 06.09.2005, 17:59


Машинист паровоза

Группа: Участник
Сообщений: 171



Ты наверное используешь Int 13h. Это прерывание работает в real-mode режиме работы процессора. Винда работает в защищённом режиме, поэтому, если вам так хочется работать с ASM-ом, ищите программные прерывания которые эмулируют вызов необходимого вам прерывания в защищённом режиме. К сожалению не помню самого прерывания, но его номер, по-моему 2-х байтный.

Вообще, я думаю, использывать ASM для этого не стоит, лучше поискать другие пути. Сам на это натыка.лся, когда пытался привязать защиту к дикете (писал на 81-й дорожке)

Вернуться в Вопросы программирования в C++Builder