Использование системных приреваний
__asm{
int 13h
}
а то в MFC приложении при его выполнении вылетает ошибка, слышал что можно както отдельно асемблировать код и obj файл прекрипить к проекту.
Может кто знает и подскажет?
Как заставить работать прерывание
__asm{
int 13h
}
а то в MFC приложении при его выполнении вылетает ошибка...
Насколько я знаю под современной виндой это у тебя не получится, надо использовать ф-и WinApi.
Denis_R, тебе для чего это надо?
Под Windows линейки NT (т.е. и XP и Vista) 13h прерывание ты вызвать (из ring 3) не можешь. Тебе же уже сказали.
И знаю както один раз ктото говорил что отдельно писал на асме код а потом объктный файл прикрепрял к программе и все работало, только не помню использовал ли он прерывания.
... и было ли это под Windows... и на PC ли... :D
И если есть Api функции работы с дисководом мне надо большая часть функций 13 прерывания биоса.
CreateFile позволяет обращение к логическим и физическим дискам.
А какая разница на чем писать, на асм или на С или С++? :)
"Эмуляция дос" (VDM) не предоставляет доступ к диску через int 13h.
Wikipedia:
Newer protected mode operating systems such as Microsoft Windows NT derivatives (e.g. NT4, 2000 XP and 2003 Server) or Linux with dosemu, will intercept the call and pass it to the operating system's native disk I/O mechanism.
Чувак. Тебе русским языком сказано. НЕЛЬЗЯ!
Эмуляция ДОС работает в программах написаных для ДОС. При этом доступ к прерываниям программам не дается ни в каком виде. Это ЭМУЛЯЦИЯ
Тебе же уже сказали: CreateFile позволяет обращение к логическим и физическим дискам. А с помощью int 13 - никак, запрещает ОС доступ к диску через это прерывание.
Через эмуляцию ты никуда доступ не получишь. ЭТО ЭМУЛЯЦИЯ! Создается видимость доступа. Почитай, что такое эмулятор.
о_0 Есть мозг у человека? Ты еще про 8086 вспомни. Или ты под 386 пишешь? Архитектура процессора и архитектура ОС несколько разные вещи.
Учи первоисточник
File Systems Technologies
http://technet2.microsoft.com/windowsserver/en/library/58bb0cab-2cb8-4d1d-97f9-c94e305140891033.mspx?mfr=true
NTFS Technical Reference
http://technet2.microsoft.com/windowsserver/en/library/81cc8a8a-bd32-4786-a849-03245d68d8e41033.mspx?mfr=true
FAT Technical Reference
http://technet2.microsoft.com/windowsserver/en/library/810c3217-77bb-4553-b6ce-3ff10dbdbac91033.mspx?mfr=true
Да будет известно, что современные машины отличаются от 80386 в основном только дополнительными инструкциями. (SSE, MMX и прочая)
Первоисточник (http://download.intel.com/design/processor/manuals/253665.pdf):
The dual-core Intel Xeon processor LV is based on the same microarchitecture as Intel Core Duo processor, and supports IA-32 architecture.
Ключевое слово - supports. Они не работают в этом режиме, а поддерживают его.
Вот подробнее:
Compatibility mode (sub-mode of IA-32e mode) — Compatibility mode permits most legacy 16-bit and 32-bit applications to run without re-compilation under a 64-bit operating system. For brevity, the compatibility sub-mode is referred to as compatibility mode in IA-32 architecture. The execution environment of compatibility mode is the same as described in Section 3.2. Compatibility mode also supports all of the privilege levels that are supported in 64-bit and protected modes. Legacy applications that run in Virtual 8086 mode or use hardware task management will not work in this mode. Compatibility mode is enabled by the operating system (OS) on a code segment basis. This means that a single 64-bit OS can support 64-bit applications running in 64-bit mode and support legacy 32-bit applications (not recompiled for 64-bits) running in compatibility mode. Compatibility mode is similar to 32-bit protected mode. Applications access only the first 4 GByte of linear-address space. Compatibility mode uses 16-bit and 32-bit address and operand sizes. Like protected mode, this mode allows applications to access physical memory greater than 4 GByte using PAE (Physical Address Extensions).
Короче, не стоит сравнивать телегу и самолет, только на том основании, что и там и тут есть колеса. ;)
Современные микроконтроллеры имеют больше возможностей чем упомянутые 386 (мир их праху).
http://courses.ece.uiuc.edu/ece390/books/labmanual/realprot-diff-interrupts.html
in protected mode, the Interrupt Descriptor Table can be anywhere in memory and is protected by the processor and the OS.
http://www.microsoft.com/technet/archive/winntas/training/ntarchitectoview/ntarc_8.mspx?mfr=true
The kernel treats interrupts on all machines in a similar way by virtualizing the interrupt processing mechanism. The hardware abstraction layer (HAL) is responsible for providing a virtual interrupt mechanism to the kernel.
At system boot time, Windows fills in the IDT with pointers to the kernel routines that handle each interrupt and exception.
P.S. Прошу модератора закрыть тему в виду невменяемости автора.