Прерывания DOS в программе под Win32

Программное обеспечение
Сплю

Прерывания DOS в программе под Win32

Сообщение Сплю » 01 фев 2011, 13:40

Yauhen писал(а):Я тебе показал картинкой, что ассемблерный код ДОС можно выполнить в Виндовс. Каким способом -это уже дело третье. Разговор шёл, напомню, про "в принципе", а ты полез в детали. Так что не надо солдатских песен. :)

Сам с собой разговариваешь.
Ассемблерный код не бывает "ДОС" или виндовз. ассемблерный код и в африке просто ассемблерный код.
Прерывание ДОС нельзя вызвать в программе для виндовз.
Конечно, никто не запрещает в виндовз выполнять программы для дос. Ты про это и говоришь.
Я же про совсем другое. Программирование для виндовз тебе не знакомо, а ты про него споришь.

Объясняю "на пальцах". Программа для виндовз - это такая программа, которую невозможно выполнить в ДОС! То есть там она выведет только сообщение, что работает только в виндовз: "This program cannot be run in DOS mode" или аналогичное и все.

Это не "дело третье", а основы, азы. Если этого не знаешь, то лучше вообще не лезть в спор.

Аватара пользователя
C.Nuke
Сообщения: 7198
Зарегистрирован: 01 янв 2011, 22:45
Контактная информация:

Re: Прерывания DOS в программе под Win32

Сообщение C.Nuke » 01 фев 2011, 18:56

Эмулятор виндовз для доса и есть виндовз :)

Сплю

Re: Прерывания DOS в программе под Win32

Сообщение Сплю » 01 фев 2011, 19:23

Alex писал(а):Я уже был в испуге, что попал на форум каких то компьютерных маньяков...

Понимаешь, чтобы создать окно, нужно сначала заполнить структуру класса окна :)
Хотя можно окно не создавать :)
А спор вообще начался с того, можно ли в скринсейвере для виндовз выполнять прерывания дос. Не просто какой-то код, а именно прерывания, как например int 13h или int 10h.

P.S. Кстати, дорогие мои, нынче под виндовз невозможно даже досовские программы выполнять, если у вас видеокарта Nvidia и в досовской программе есть прерывание int 10h. Почему? Драйвер Nvidia GeForce не поддерживает уже досовские видеорежимы. Они изъяты.

P.P.S. Очень не советую в виндозной программе (ну вы поняли, в такой, которую вы пишете под Win32, заполняете структуру класса окна и т. д. :) ) писать ассемблерную команду CLD. Винда такое не любит. У вас все повиснет.

Ну и так далее. Но, наверное, тут никто не программирует? Тада не буду утомлять.

Аватара пользователя
unsofter
Сообщения: 756
Зарегистрирован: 03 янв 2011, 10:28
Контактная информация:

Re: Прерывания DOS в программе под Win32

Сообщение unsofter » 02 фев 2011, 11:17

Некоторые современные нетбуки идут с предустановленной DOS. По идее текстовые режимы видеокарта таки должна поддерживать.

Сплю

Re: Прерывания DOS в программе под Win32

Сообщение Сплю » 02 фев 2011, 11:52

unsofter писал(а):Некоторые современные нетбуки идут с предустановленной DOS. По идее текстовые режимы видеокарта таки должна поддерживать.

Что значит "видеокарта"? BIOS видеокарты их поддерживает. DOS вызывает прерывания BIOS и устанавливает видеорежим.
Windows, о чем я уже в сотый раз напоминаю, НЕ ПОЛЬЗУЕТСЯ прерываниями BIOS, а пользуется своими драйверами, написанными под железо производителем видеокарты. И вот, производитель решил, что некоторые режимы уже не нужны и убрал их.
Да, кстати, убраны и текстовые, и графические тоже, как то 320х240, 640х480х256.
Сделала это Nvidia. С радеонами вроде пока такой проблемы нет.

Аватара пользователя
unsofter
Сообщения: 756
Зарегистрирован: 03 янв 2011, 10:28
Контактная информация:

Re: Прерывания DOS в программе под Win32

Сообщение unsofter » 02 фев 2011, 12:25

Что значит "видеокарта"?

Это штучка такая.
Я говорю о том что, теоретически дернуть прерывание можно. То, что Windows не пользует прерывания БИОСа, не означает что их нельзя дернуть. На прерываниях повешен уровень привилегий, с которого вызывать их мона, если уровень не меньше. Ну а если покурить, то дернуть можно что угодно. Для чего это делать, как оно отработает и что из этого получится вопрос другой.

Сплю

Re: Прерывания DOS в программе под Win32

Сообщение Сплю » 02 фев 2011, 13:09

unsofter писал(а):На прерываниях повешен уровень привилегий, с которого вызывать их мона, если уровень не меньше.

С кольца 0 можно что угодно. Но я не уверен, что это можно сделать без своего .sys драйвера или хотя бы .dll
И размер, опять же размер кода...
Напоминаю, спор начался с того, можно ли все это сделать в одном экзешнике размером килобайт. Я сказал, что нет.


Вернуться в «Софт»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей