__asm in VC6
От: anton Россия http://rykun.narod.ru
Дата: 25.06.02 17:19
Оценка:
Почему не работает __asm в VC6 ?
Даже такой примитив как
    __asm 
    {
        mov ax, 1
        int 29h
    }


Ни досовские, ни BIOS'овские функции не работают, а в BC5 все нормально, почему? Может компилятору или линкеру надо чего-то сказать?
// anton
Re: __asm in VC6
От: fuurin  
Дата: 25.06.02 19:21
Оценка:
A>Почему не работает __asm в VC6 ?
A>Ни досовские, ни BIOS'овские функции не работают, а в BC5 все нормально, почему? Может компилятору или линкеру надо чего-то сказать?

Стандартный компилятор в поставке VC6 создаёт только Win32 приложения, а они, ясное дело, о прерываниях DOS понятия не имеют. Аналогично, прерывания BIOS защищены от прямого вызова в любой нормальной мультизадачной системе, и из Win32 приложения до них достучаться не просто.
Если ты пишешь под DOS, то и компилятор бери соответственный. Если работать удобно в Visual Studio, то прикручивай к нему этот компилятор.
Garbage In Garbage Out
Re: __asm in VC6
От: Dr_Sh0ck Беларусь  
Дата: 26.06.02 03:24
Оценка:
Здравствуйте anton, Вы писали:

A>Почему не работает __asm в VC6 ?

A>Даже такой примитив как
A>
    __asm 
A>    {
A>        mov ax, 1
A>        int 29h
A>    }
A>


A>Ни досовские, ни BIOS'овские функции не работают, а в BC5 все нормально, почему? Может компилятору или линкеру надо чего-то сказать?


Что значит "не работают" ? Компилируется все нормально. А кто сказал что это должно работать в виндовс.
Do not fake yourself ;)
ICQ#: 198114726
Re[2]: __asm in VC6
От: Dr_Sh0ck Беларусь  
Дата: 26.06.02 03:29
Оценка: 3 (2)
Здравствуйте fuurin, Вы писали:


A>>Почему не работает __asm в VC6 ?

A>>Ни досовские, ни BIOS'овские функции не работают, а в BC5 все нормально, почему? Может компилятору или линкеру надо чего-то сказать?

F>Стандартный компилятор в поставке VC6 создаёт только Win32 приложения, а они, ясное дело, о прерываниях DOS понятия не имеют. Аналогично, прерывания BIOS защищены от прямого вызова в любой нормальной мультизадачной системе, и из Win32 приложения до них достучаться не просто.

F>Если ты пишешь под DOS, то и компилятор бери соответственный. Если работать удобно в Visual Studio, то прикручивай к нему этот компилятор.

Машинный код команды вызова прерывания не зависит от того ДОС это или ВИН — CD XX (XX — номер прерывания). Другое дело, что механизм вызова прерывания в реальном(ДОС) и защищенном(ВИН) режимах разный. Да и прерывания BIOS не рассчитаны на работы в защ. режиме. а компилятор тут не при чем. Прада, писать проги под ДОС VC 6.0, конечно, не поможет.
Do not fake yourself ;)
ICQ#: 198114726
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.