Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

Bolic

ПРОГРАММИРОВАНИЕ: Защищенный режим

Рекомендуемые сообщения

КАК В ЗАЩИЩЕНКЕ ПЕРЕПРАВИТЬ BIOS_ные ВЕКТОРА ПРЕРЫВАНИЙ

(по-другому: как сделать так чтобы прерывания BIOSа работали в защищенном режиме), а то программить хард через порты ввода вывода

как-то не улыбается. Я понимаю, что это(прерывания BIOSa) не подходит для защищенки, поэтому второй вопрос: как переделать их так, чтобы при вызове в защищенке(PM) работало все нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Bolic Ассемблерщик? Под Винды чтоль писать что-нить собрался? Или как? Я чегот не понял? И что тебе через порты не нравиться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо, придется переключаться в режим виртуального х86. Общая схема: Real mode -> Protected mode -> Virtual Mode. Если отобразить логическое адресное пространство туда, где лежит BIOS - должно заработать. Но, прерывания-то все равно надо обрабатывать в PM. Определять свою IDT...

Вобщем, читаем Фроловых и тематические сайты. Если интересует литература - смотрим тут:

http://wm.astpage.ru/~galilov/documents/

Фроловы тут

http://wm.astpage.ru/~galilov/documents/

Если проблемы с закачкой - пишите, постараюсь организовать на CD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пасиб. ТОКА В PM'e вроде незя перенаправить BIOS'ные прерывашики ил я не прав?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

жутко.. неужели ассемблер еще в моде??? а че на нем делают то сейчас?? не ну понятно что там дрова всякие и прочие вири поганые... ну там для игрушек с графикой... да и то все на цэ делают... но вообще то.. в обыденной профессиональной жизни типа зачем это надо???? мож я че непойму.... я так и не изобрел себе ни одной задачки, гдеб мне асм понадобился... хотя мож я другим занимюсь конечно... но блин... порты какието... биосы... хрениосы.... жуть....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Yujin'u: Ты не прав на асме много че ща делают: практически все ядра операционок делают на асме. например MenuetOS полностью на ассемблере сделана. Не тока ядро. Результат-> реактивная у ещё одного фина ОС получилась. И ещё: в защищённом режиме, без поддержки ОС тока на Асме напишешь. Для разработки больших проджектов он мало подходит, но там прерывашку к клаве сделать, вири(не поганые) и.др. маленькие фичи- самый раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

жутко.. неужели ассемблер еще в моде??? а че на нем делают то сейчас?? не ну понятно что там дрова всякие и прочие вири поганые... ну там для игрушек с графикой... да и то все на цэ делают... но вообще то.. в обыденной профессиональной жизни типа зачем это надо???? мож я че непойму.... я так и не изобрел себе ни одной задачки, гдеб мне асм понадобился... хотя мож я другим занимюсь конечно... но блин... порты какието... биосы... хрениосы.... жуть....

Местами без него - никак. Например, придумайте, как сложить два 8192-битных целых числа без использования ассемблера. Напишите вариант на Си или Паскале, а я вам покажу на том же языке с ассемблерной вставкой. Скорость выполнения программы можно будет сравнить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AL-GALI> Скорость это само-сабой разумеющееся для Асмы. Но тока для продуманных алгоритмов. Если бы вы написали безтолковую прогу на тематику вами предложенную(сложение огр.чисел) и блестяще выполненную на C++ ил др. ЯВУ- ПРога на ЯВУ выиграет. Преимущество(основное) асма не в реактивности, а в низкоуровневости(а второе является следствием первого). Я так думаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Bolic> Согласен, но не на 100%. Назовите высокоуровневый аналог аналог пары команд ADD и ADC.

Например, имея 16-разрядные регистры (и переменные - помните когда-то int был 16 бит), можно складывать числа большой разрядности за счет флага переноса.

Последовательность

MOV AX, 0FFFFh ; FFFF = 65535 = 2^16 - 1 = 11111111 11111111

MOV BX, 0

ADD AX, 1

ADC BX, 1

Даст в BX результат 2, в AX останется 0.

Работает так

ADD AX,1 == 11111111 11111111 + 1 -> 1 00000000 00000000 (17-ый разряд уходит в перенос CF)

ADC BX,1 == 00000000 00000000 + CF + 1 -> 00000000 00000010

Итого имеем

00000000 00000000 11111111 11111111 BX:AX

+

00000000 00000001 00000000 00000001

---------------------------------------------------

00000000 00000010 00000000 00000000

 

То же самое для 32-битный, 64-битный и каких угодно еще версий целочисленной арифметики.

 

Как это сделать на ЯВУ? Сложение "по цифоркам" строк вида "3452356547023432" и "5460950369546054" возможно, но явно неэффективно при любой реализации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
практически все ядра операционок делают на асме

Далеко не все. Переносимые ядра на ассемблере не пишут (если только самую малость). WinNT, Linux, FreeBSD написаны большей частью на Си. Исключения единичны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AL-GALI> Ладно, про операционки я загнул. Но согласитесь,что задача, где надо складывать 8192-битные числа в программирование неочень-то часто в встречается. И ещё, что мы спорим, ассемблер несомненно гибкий язык по сравнению с любыми ЯВУ. И ещё- ответьте на вопрос заданный в самом начале:КАК В ЗАЩИЩЕНКЕ ПЕРЕПРАВИТЬ BIOS_ные ВЕКТОРА ПРЕРЫВАНИЙ,

или придётся создавать свои прерывания?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
КАК В ЗАЩИЩЕНКЕ ПЕРЕПРАВИТЬ BIOS_ные ВЕКТОРА ПРЕРЫВАНИЙ
Пользуйтесь DOS-экстендером dos4gw.exe. Найти можно тут http://www.filesearch.ru/cgi-bin/s?q=dos4gw.exe&t=f&d=

Описание интерфейса надо поискать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
МОЖЕТ ВЫ НЕ ПОНЯЛИ: У МЕНЯ МОЯ ПРОГА В BIN'e.
Видно, не понял... Значит, конкретного ответа дать не смогу. Возможно, заставить работать BIOS в PM сложнее, чем написать свои функции для аппаратуры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AL-GALI> Я тож так думаю. И на счёт аппаратных также. А исключений тем более. Щас аппаратник для клавы начну писать(ударение на втором слоге).

Вы меня поняли, что я собрался делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Щас аппаратник для клавы начну писать(ударение на втором слоге).

Вы меня поняли, что я собрался делать?

Понял. Обработчик ввода от клавы. Наподобие INT 16H. Удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Щас аппаратник для клавы начну писать(ударение на втором слоге).

Вы меня поняли, что я собрался делать?

 

Понял. Обработчик ввода от клавы. Наподобие INT 16H. Удачи.

 

Видать не поняли. Я в глобальном смысле. И ещё: "Наподобие INT 16H" - тока если бы INT9 было тоже самое что и INT16H :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Балин, и тут флейм! ;)

 

Bolic Для саморазвития ось... это сильно! (или ничего не получится, что чаще всего получается при отсутствии финансирования) или в миру появится ещё одна ненужная и непродоваемая ось/клон. Извини за пессимизм, но так и есть. (не хочу никого обидеть)

 

AL-GALI Сударь, мне очень понравилось, что для асма вы придумали "толковый алгоритм сложения целых чисел", а для ЯПВУ предложили заведомо неправильный. )))

Из разряда: Вот если сравнить по мощности наш Муромец и вашу старую кобылу... так она ж ещё и срёт...

 

Кхее... увлёкся, извините.

 

Bolic Если уж собрался ОСь писать, то прерывания BIOS на фиг не нужны. Любая толковая ОС имеет собственные функции для работы с железом. Отсюда вывод - или вы пишите не ОС, а дос-подобную лабуду (извините, ДОС хотя и называется ОСью, но по сути - гамно это), или же я совсем не понял.

 

PS: Конечно же никого не хотел обидеть. Извините если что не так. ))

Все права защищены. CopyLeft, 2004. Всем Респект

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Marik'у> Читай внимательно: ОСЬ для саморазвития(Защищенка как-то легче понимаеться), а не для самовыражения и для выгоды

А ты сам-то под защищенку проги писал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Писал. В школе, когда делать нечего было.

А саморазвитие тебе всё-равно нужно для дальнейшего самовыражения, что будет материально оценено (если сам постараешься) ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AL-GALI Сударь, мне очень понравилось, что для асма вы придумали "толковый алгоритм сложения целых чисел", а для ЯПВУ предложили заведомо неправильный. )))

Что же в алгоритме для ЯПВУ заведомо неправильного, учитывая, что я его не приводил...? Если вы про сложение "по цифоркам", то это как раз тот алгоритм, которым мы складываем "в столбик" с переносами. Что там заведомо неправильного? Если Вам не нравится словосочетание "сложение ... строк", то я поясню: в некоторых ЯВУ, например С++, можно определить собственное действие для операции над объектами заданного класса. Например, "+" для объекта "строка" может и сложение чисел производить, представленных в виде текстовых строк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AL-GALI Никто не сомневается в ваших познаниях в ЯП. Но складывать числа, представляя их строками... это уж как-то слишком... неправильного в нём - заранее низкое быстродействие (ведь в своём посте вы о быстродействии говорили). Спасибо за пояснение С++, конечно, хотя и не понятно кому оно нужно. Если уж говорить о сложении чисел, то и работать логичнее с числами. При чём тут вообще строки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты