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-й дорожке)
|
|