Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 640
от 19.09.2003, 23:30
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 4186 Отправлено ответов: 12316 Активность: 294.2 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
dr_dolhpin Статус: Доверительный Общий рейтинг: 150.79 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 107.07 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Hangatyr Статус: Опытный Общий рейтинг: 112.19 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 122.64 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 124.36 URL: Эхоконференция по вирмейкингу Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 142.72 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.12 URL: Программирование [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 110.96 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.58 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 112.88 [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 108.59 URL: Мой сайтик... [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4139. Приветствую. Есть ли тут эксперты, у которых Линукс стоит. Я недавно поставил себе и у меня возникли... (ответов: 2)
Вопрос № 4140. Здравствуйте!!!! Меня интересует такой оспект : 1. Нужна какая-либо информация и примеры написания о... (ответов: 4)
Вопрос № 4142. Господа, уделите минутку. Вопрос опять о совместной компиляции Visual C++ Net и файлов на ассемблере... (ответов: 1)
Вопрос № 4143. Господа! Вопрос по совместной компиляции MASM и Visual Studio 2003 отпал самым найлучшим образом. Ни... (ответов: 2)
Вопрос № 4144. Уважаемые эксперты, подскажите как реализовать (разумеется на асме) вот какую вещь: как сделать перв... (ответов: 2)
Вопрос № 4145. У меня такой вопрос: В AL лежит код клавиши, как узнать какого символа? Как имея код клавиши получит... (ответов: 6)
Вопрос № 4146. .Здравствуйте, тов. эксперты! Вы - моя последняя надежда! Я уже 3 дня бьюсь над проблемой. Вот е... (ответов: 1)
Вопрос № 4147. Как вводить символы склавиатуры, потом обрабатывать и выводить на экран. Пример: -> 2; с=2+4. ... (ответов: 2)
Вопрос № 4148. Как с помощью GCC компилятора создать чистый бин файл? Спасибо. ЗЫ. Почему в форме заполнения вопрос... (ответов: 3)
Вопрос № 4149. Доброе время суток! Помогите разобраться с прерываниями в защищенном режиме!!! Мне надо чтобы IDT бы... (ответов: 2)
Вопросов: 10, ответов: 25
Вопрос № 4139 |
Приветствую.
Есть ли тут эксперты, у которых Линукс стоит. Я недавно поставил себе и у меня возникли вопросы. Можете не отправлять это в рассылку, просто дайте мне пожалуйста email этих людей. Заранее благодарен. Извините за мусор в рассылке. Мой e-mail mailto:_torvic@mail.ru mailto:uoyevoli@mail.ru
Вопрос отправлен: 14.09.2003, 22:48
Отправитель: Torvic (_torvic@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает dr_dolhpin
Добрый день, Torvic!
Пиши на dr_dolphin@mail.ru
попробую помочь.
Пока !
Ответ отправлен: 15.09.2003, 08:26
Отправитель: dr_dolhpin
Отвечает Gibbel
Доброе время суток, Torvic!
Есть же специальная рассылка Linux / Unix.
Ответ отправлен: 15.09.2003, 10:45
Отправитель: Gibbel
Вопрос № 4140 |
Здравствуйте!!!!
Меня интересует такой оспект :
1. Нужна какая-либо информация и примеры написания операционных систем.
2. Бут-загрузка программ, так, что бы они загружались вперёд операционок типа ДОС либо ВИН.
3. Нужна информация по ниписанию драйверов, в часности, сетевых и виртуальных устройств, и, если есть, примеры.
Заранее блогодарю за информацию!
Вопрос отправлен: 15.09.2003, 03:02
Отправитель: Alien
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Доброе время суток, Alien!
1. Скачай исходник MenuetOS и разбирайся в нем. Даже не знаю, что еще тут можно посоветовать.
3. Не совсем понятно для какой оси нужны примеры. Если для win, то в DDK есть.
* EMan1.3: ---===*** The Eternal Power ***===---
Ответ отправлен: 15.09.2003, 03:40
Отправитель: Hangatyr
Отвечает _vt
Приветствую Вас, Alien!
1) сходи на сайт lowlevel.ru - море интересной информации, есть рассылка (правда уже давно не выходила)
2) Это зачем? Бессмысленно...
3) > информация по ниписанию драйверов
Информация по ниписанию? нипиши! :)
Если серьезно, то сходи к примеру на сайт к Бобу Джонсону...Там есть пример, правда под 9x...
*** E-Man 1.5( edition 04) - life is just a game***
Ответ отправлен: 15.09.2003, 04:13
Отправитель: _vt
Отвечает dr_dolhpin
Добрый день, Alien!
>Здравствуйте!!!!
>Меня интересует такой оспект :
>1. Нужна какая-либо информация и примеры написания >операционных систем.
>2. Бут-загрузка программ, так, что бы они загружались >вперёд операционок типа ДОС либо ВИН.
>3. Нужна информация по ниписанию драйверов, в часности, >сетевых и виртуальных устройств, и, если есть, примеры.
>Заранее блогодарю за информацию!
для начала глянь на :
http://www.NonDot.org
http://my.execpc.com/~geezer/index.htm
http://www.wasm.ru
http://www.lowlevel.ru
потом можешь почитать исходники linux или minix,
а также других проектов которые сейчас существуют
как freeware.
а также советую почитать про protected mode, если у тебя
процессор x86.
Кроме этого желательно знание Asm и C/C++, а также умение
пользоваться GCC (GNU Compilers Collection).
Вроде все . Пока !
Ответ отправлен: 15.09.2003, 08:25
Отправитель: dr_dolhpin
Отвечает Maverick
Приветствую Вас, Alien!
2-смотри на wasm.ru в вирусологии, в вирях это помоему наиболее полно реализовано :)
Ответ отправлен: 15.09.2003, 10:55
Отправитель: Maverick
Вопрос № 4142 |
Господа, уделите минутку. Вопрос опять о совместной компиляции Visual C++ Net и файлов на ассемблере. Не хочет, подлец, собирать проект из своего говна и асма. Причина - не находит соответствующих public. Компилятор МАSM добавляет к именам свои заморочки. А Visual - свои. Причем на асме добавчные символы зависят от типа вызываемых функций (STDCALL, C, PASCAL и т.д.). В одном случае он поднимает регистр, в другом - перед именем добавляет _ , а в конце @4. Насколько я понимаю - цифра - количество байт на стеке для вызова этой функции. Visual добавляет вообще свой попандос @XYZ и т.д. Можно конечно заставить Visual компилировать как MASM (ключ /c). Но при этом он совершенно отказвается компилировать классы - он их с этим ключем не понимает. Приходиться бороться с МАСМ (чтобы он ничего не добавлял к public). Это достигается, если декларировать функции как SYSDECL. Но при этом необходимо самому писать прологи и эпилоги функции (типа ret 8 и т.д.). Т.е. не очень удобно. Может кто поделиться соображениями?
Вопрос отправлен: 15.09.2003, 12:28
Отправитель: пацюк
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Добрый день, пацюк!
Используй EQU.
Ответ отправлен: 15.09.2003, 17:59
Отправитель: Евгений Иванов
Вопрос № 4143 |
Господа! Вопрос по совместной компиляции MASM и Visual Studio 2003 отпал самым найлучшим образом. Никто наверное не собирался отвечать на такой глупый вопрос, но тем не менее, может кому будет полезным:
Итак Visual Net нам нужен, ну прежде всего для:
- компиляция DDK
- удобная интегрированная среда (к сожалению удобней чем у Борланда)
- также удобный отладчик (в интегрированной среде редактора имеется возможность отладки с просмотром кода программы в ассемблерном исполнении )
- и многое другое (решающим стал первый пункт)
МАСМ с Visual конечно же стыкуется производитель то один - Билл. Но сразу же сталкиваемся с кучей нововведений (порой даже не очень приятных). Ну, а программируя ООП - полный отпад. Но ДДК очень нужно. Возникла идея (простецкая как три рубля) - компиляция на тасме и подшивка к Visual - сработало. Так мало того, - сейчас весь проект компилируется на Visual, причем тасм запускается как внешний компилятор -не выходя из проекта. Т.е. чисто ассемблерный файл, да и в общем то и весь проект (от С++ остался только main) компилируется в Visual как обычный файл проекта, тут же линкуется и соответственно запускается, отлаживается (на счет отладки еще не пробовал, но даже если и не пойдет, это мелочь, Но я думаю пойдет. Проверил - отладка также идет )
Всем пасибо
Вопрос отправлен: 15.09.2003, 16:37
Отправитель: поцик
[Следующий вопрос >>] [Список вопросов]
Отвечает Gibbel
Приветствую Вас, поцик!
Отправляю в рассылку - может кому пригодиться...
Ответ отправлен: 15.09.2003, 16:50
Отправитель: Gibbel
Отвечает Bob Johnson
Добрый день, поцик!
Да, это один из вариантов. Причина несответствия имен совсем не в VC - это сделано для того, чтобы по имени функции уже можно было понять (компилятору), какие параметры ей должны передаваться. Например, stdcall предполагает, что функция очистит стек сама - значит ей должно быть передано именно столько параметров, сколько она ожидает (поэтому добавляется в конец имени @ и количество байт (но это для языка С - в С++ варианте совсем другой подход, который еще и типизирует параметры (т.е. то, что ты привел - @XYZ...))).
В общем возможно и это вернуть на место. Как это сделать, дословно не помню, но, например, когда имеем дело с DLL это решается созданием DEF файла, в котором указываются требуемые имена (ведь такие вещи, как kernel32.dll содержат только чистые имена функций, хотя и на VC написаны). Возможно, также можно поступить и здесь.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 15.09.2003, 23:09
Отправитель: Bob Johnson
Вопрос № 4144 |
Уважаемые эксперты, подскажите как реализовать (разумеется на асме) вот какую вещь:
как сделать первый столбец в лист-вьюве как в ехеле, чтоб при нажатии на него выделялась вся строка.
PS приношу свои извинения, что пишу в эту рассылку, т.к. я проги пишу на асме, а с С плохо знаком и не всегда все понимаю)
Вопрос отправлен: 15.09.2003, 17:21
Отправитель: Agny (agny@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Здравствуйте, Agny!
Сделай кнопку и обрабатывай нажатие ей!
Ответ отправлен: 15.09.2003, 19:12
Отправитель: Dark_Lord
Отвечает Bob Johnson
Здравствуйте, Agny!
Предположу, что когда ты нажимаешь на заголовок, тебе приходит LVN_COLUMNCLICK, где ты уже должен выделять то, что тебе нужно. Но list view - это не excel и даже не string grid, поэтому выделить столбец (я так понимаю, что он в состоянии report) у тебя вряд ли получится, т.к. list view подразумевает, что sub-item'ы связаны только с item'ом, а не являются самостоятельными объектами. Пиши свой контрол.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 15.09.2003, 23:10
Отправитель: Bob Johnson
Вопрос № 4145 |
У меня такой вопрос:
В AL лежит код клавиши, как узнать какого символа?
Как имея код клавиши получить соответствующий символ и наоборот. Короче, как реализовать на асме функции ORD и CHR. Может это и тупой вопрос, но пожалуйста ответьте!
Заранее благодарен...
Вопрос отправлен: 15.09.2003, 20:17
Отправитель: DimaS
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Доброе время суток, DimaS!
Какой еще "соответствующий символ"? Если надо вывести его на экран, то используй соответствующую функцию, если требуется оперировать с ним как с кодом, то работай с al. Это же не паскаль, правильно...
Ответ отправлен: 16.09.2003, 04:29
Отправитель: Hangatyr
Отвечает dr_dolhpin
Здравствуйте, DimaS!
>У меня такой вопрос:
>В AL лежит код клавиши, как узнать какого символа?
>Как имея код клавиши получить соответствующий символ и >наоборот. Короче, как реализовать на асме функции ORD и >CHR. Может это и тупой вопрос, но пожалуйста ответьте!
>Заранее благодарен...
Эти алгоритмы обычно должны быть основаны на таблицах
перекодировок, и с последующим преобразованием инструкцией
типа xlat. Ну например:
[0][1] [65]
table db 0,1,...код_клавиши_a
..
..
mov bx,offset table
mov al,'A' = 65
xlat
;теперь в al будет соответствующий код из table
Все нелинейные преобразования на ассемблере делаются
по этому принципу.
Линейные преобразования делаются путем обычного
вычитания/сложения кода с константой.
По поводу вашего вопроса об ORD и CHR:
машинный язык не делает разницы между символом и числом,
поэтому преобразование из символа в число лишено смысла.
вы можете записать:
mov al,'A'
и у вас в al будет равен 65
и наоборот:
mov [B800:0000],al
выведет на экран символ 'A'
Все зависит от интерпретации
Эти преобразования обычно трубуются для определения
символа, соответствующего скан-коду клавиатуры, т.к
скан-коды отличаются от ASCII кодов символов...
Пока !
Ответ отправлен: 16.09.2003, 09:35
Отправитель: dr_dolhpin
Отвечает Ayl
Доброе время суток, DimaS!
А ему типа по фигу, что такое 81h в регистре AL. Это может быть символ "Б" в альтернативной кодировке, ASCII-код символа "Б" в альтернативной кодировке, просто целое число 129 либо знаковое число -127. Все зависит от интерпретации программиста. И как именно ты будешь осуществлять вывод значения - как число или как символ.
А если тебя интересует, как реализованы функции ORD и CHR в Паскале, то очень просто:
Function Ord (ch : Char) : Byte; assembler;
asm
pop ax ; в регистре AL - код символа ch
end;
Function Chr (b : Byte) : Char; assembler;
asm
pop ax ; в регистре AL - символ с кодом b
end;
Просто в языках высокого уровня есть различия между типами данных, а в ассемблере - нет. Поэтому в ЯВУ требуются преобразования, подобные Chr и Ord, а в асме - нет.
Ответ отправлен: 15.09.2003, 21:11
Отправитель: Ayl
Отвечает Dark_Lord
Добрый день, DimaS!
в нём лежит одновременно и то и другое, если используешь al для проверки определённого символа, то он работает и как код и как символ, если используешь его для вывода на экрам он работает как символ!
Ответ отправлен: 15.09.2003, 20:30
Отправитель: Dark_Lord
Отвечает ASMодей
Здравствуйте, DimaS!
То есть у тебя в регистре AL лежит скан-код клавиши? Тогда составляй таблицу соответствия скан-кодов клавиатуры ASCII-кодам и уже по этой таблице получай коды символов.
Ответ отправлен: 16.09.2003, 07:10
Отправитель: ASMодей
Отвечает Portnov
Здравствуйте, DimaS!
У вас код клавиши или код символа? Если код символа, то ничего реализовывать не надо - на уровне асма номер и символ с этим номером - одно и то же. А вот если код клавиши, то придется потрудиться - там общей закономерности, связывающей ASCII коды со скан-кодами нет, надо переводить по таблице (мож найдете в каком справочнике, или сами экспериментальным путем составьте). Перевод по таблице удобно делать с помощью инструкции xlat, только прдварительно проверять на двухбайтовые коды (функциональные клавиши) - их переводить отдельно.
С уважением, Portnov.
Ответ отправлен: 17.09.2003, 17:15
Отправитель: Portnov
Вопрос № 4146 |
.Здравствуйте, тов. эксперты! Вы - моя последняя надежда! Я уже 3 дня бьюсь над проблемой. Вот есть такой код:
.data?
FileBuffer db 512 dup (?)
WSBuffer db 3 dup (?)
BoxBuffer db 32 dup (?)
KeyBuffer db 128 dup (?)
hKey dd ?
Disp dd ?
RType dd ?
RSize dd ?
.data
RegPath db "SoftwareMailCheckerXP",0
wsptf db "%lu",0
restore db 2,1,3,12,11,13,22,21,23
restorecount equ 9
...
mov esi, offset restore
xor edi,edi
invoke RegOpenKeyEx, HKEY_CURRENT_USER,addr RegPath, 0, KEY_ALL_ACCESS, addr hKey
restorecycle:
xor eax,eax
mov al, byte ptr [esi]
invoke wsprintf, addr KeyBuffer, addr wsptf, eax
invoke RegQueryValueEx, hKey, addr KeyBuffer, 0, addr RType, addr BoxBuffer, addr RSize
xor eax,eax
mov al, byte ptr [esi]
invoke SetDlgItemText,hDlg,eax, addr BoxBuffer
inc esi
inc edi
cmp edi, restorecount
jne restorecycle
invoke RegCloseKey, hKey
Дело в том что в реестре ключ HKEY_CURRENT_USERSoftwareMailCheckerXP имеет несколько значений: 1,2,3,11,12,13,21,22,23. Допустим значение 1="111", 2="222", 3="333", 11="444" и т.д. Олли выдаёт, что при первых двух исполнениях цикла RegQueryValueEx возвращает пустые строки(???), а затем для некоторых зачений выдаёт совсем не то что надо(например, может выдать "666" и для значения 13, и для 21). Подскажите, в чем моя ошибка!!! Заранее благодарен..
Вопрос отправлен: 15.09.2003, 20:26
Отправитель: PRO (p-r-o@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, PRO!
Перед вызовом RegQueryValueEx необходимо в RSize поместить размер буфера (после вызова функция поместит туда реально занесенное количество байт, т.е. перед следующим вызовом необходимо занести в переменную значение размера буфера еще раз).
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 15.09.2003, 23:07
Отправитель: Bob Johnson
Вопрос № 4147 |
Как вводить символы склавиатуры, потом обрабатывать и выводить на экран.
Пример: -> 2; с=2+4.
Вопрос отправлен: 15.09.2003, 21:45
Отправитель: Sezemin (sezemin@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает dr_dolhpin
Приветствую Вас, Sezemin!
>Как вводить символы склавиатуры, потом обрабатывать и >выводить на экран.
>Пример: -> 2; с=2+4.
1.Получить символ
2.Преобразовать ASCII -> Decimal
3.Выполнить операцию
Ответ отправлен: 16.09.2003, 09:35
Отправитель: dr_dolhpin
Отвечает Bob Johnson
Доброе время суток, Sezemin!
Написать процедуру перевода строки в число, небольшой калькулятор и процедуру обратного перевода. Если же ты хочешь еще и с переменными работать, то надо будет дописать некий лексико/синтаксический анализатор.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 15.09.2003, 23:08
Отправитель: Bob Johnson
Вопрос № 4148 |
Как с помощью GCC компилятора создать чистый бин файл? Спасибо.
ЗЫ. Почему в форме заполнения вопросов при нажатии пробела окно прокручивается вниз???
Вопрос отправлен: 15.09.2003, 22:06
Отправитель: Ppavel (alexpd@iolfree.ie)
[Следующий вопрос >>] [Список вопросов]
Отвечает dr_dolhpin
Добрый день, Ppavel!
>Как с помощью GCC компилятора создать чистый бин файл? >Спасибо.
>ЗЫ. Почему в форме заполнения вопросов при нажатии пробела >окно прокручивается вниз???
Создавать так:
gcc -c your_file.c
ld -o your_file.bin -Ttext адрес_загрузки --oformat binary your_file.o
в результате чистый двоичный файл your_file.bin
Только умоляю, не используй стандартных библиотек типа
stdio.h. В твоей операционке это не покатит :-)
Чтобы не прокручивалось окно, открой письмо отдельно
и не парься... Удачи
Ответ отправлен: 16.09.2003, 09:34
Отправитель: dr_dolhpin
Отвечает _vt
Добрый день, Ppavel!
Их линкер (ld.exe) в Win32 не создает чистые бинарники - возьми Linux :)
Попробуй обмануть так:
gcc -c -o -ffreeestanding prog.o prog.c
ld -Ttext 0x200000 -o prog.bin prog.o
objcopy prog.bin -O binary
*** E-Man 1.5( edition 04) - life is just a game***
Ответ отправлен: 16.09.2003, 22:38
Отправитель: _vt
Отвечает Portnov
Доброе время суток, Ppavel!
AFAIK единственный способ - это сначала сделать
gcc -S myfile.c
(создаст ассемблерный файл myfile.s в AT&T синтаксисе), а потом искать в манах по gas, как заставить его (или ld) выводить чистый бинарник:). Если честно, я сомневаюсь, что это вообще возможно. Может быть, это можно сделать с помощью специального скрипта для ld, но для этого надо сначала изучить язык его скритптов (опять же поможет man ld или info ld).
ЗЫ. Открывайте ее в браузере! TheBat, Outlook и пр. считают, что пробел - это клавиша для прокрутки. Браузеры тоже так считают, но они знают, что в текстовом поле пробел означает пробел.
С уважением, Portnov.
Ответ отправлен: 17.09.2003, 17:15
Отправитель: Portnov
Вопрос № 4149 |
Доброе время суток!
Помогите разобраться с прерываниями в защищенном режиме!!!
Мне надо чтобы IDT был в отдельном сегменте от кодового.
Обработчики тоже должні быть в отдельном сегменте от этого всего.
[ints_seg]=0400h Сегмент и офсет обработчиков прерываний
[ints_ofs]=0000h
[idt_seg]=0050h Сегмент и офсет IDT
[idt_ofs]=0000h
Напишите пожалуйста как загружать idtr (код) и как загружать в дескриптор IDT офсет, как оформлять дескриптор IDT.
И еще может у кого-то есть документированіе исходники по защищенному режиму с прерываниями или просто доки по прер. защ. реж. скиньте пожалуйста!
Большое спасибо
Вопрос отправлен: 15.09.2003, 23:21
Отправитель: Madman (yo-ho@km.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает dr_dolhpin
Приветствую Вас, Madman!
>Доброе время суток!
>Помогите разобраться с прерываниями в защищенном режиме!!!
>Мне надо чтобы IDT был в отдельном сегменте от кодового.
IDT и так должна быть в сегменте данных, а не кода.
>Обработчики тоже должны быть в отдельном сегменте от этого >всего.
Создаешь сегмент кода и размещаешь их там. Не вижу проблем.
>[ints_seg]=0400h Сегмент и офсет обработчиков прерываний
>[ints_ofs]=0000h
>[idt_seg]=0050h Сегмент и офсет IDT
>[idt_ofs]=0000h
>Напишите пожалуйста как загружать idtr (код) и как >загружать в дескриптор IDT офсет, как оформлять дескриптор >IDT.
movw Your_IDTR_Segment_Selector,%ds
lidt _idtr
_idtr: .word 256*8-1
.long _idt
а десктиптор оформляется обычным образом:
указываешь тип Interrupt Gate, селектор сегмента кода
где у тебя обработчики, и естессно смещение внутри
этого сегмента кода. И все.
Если тебе поможет вот функция инициализации дескриптора
в IDT:
//Setting interrupt gate in IDT
void set_interrupt_gate (descriptor* descr, unsigned long seg_sel,
unsigned long offset,unsigned char dpl)
{
descr->limit_0_15=(unsigned short)offset;
descr->base_0_15=(unsigned short)seg_sel;
descr->base_16_23=(unsigned char)(0);
descr->sys_1=0x80 | (dpl << 6) | 0x0 | 0xE;
descr->sys_2=(unsigned char)(offset >> 16);
descr->base_24_31=(unsigned char)(offset >> 24);
}
>И еще может у кого-то есть документированіе исходники по >защищенному режиму с прерываниями или просто доки по прер. >защ. реж. скиньте пожалуйста!
>Большое спасибо
Welcome to developer.intel.com !!!
Пока !
Ответ отправлен: 16.09.2003, 09:34
Отправитель: dr_dolhpin
Отвечает Hangatyr
Доброе время суток, Madman!
Начнем с того, что мне не кажется это хорошей идеей. Получается, что вам придется создать еще 2 дескриптора сегмента - для LDT и GDT.
Если вы работаете в чистом PM и вам нужен новый сегмент, то придется урезать какой-нибудь существующий. Если же хотите, чтобы каждый сегмент был 4 Гб и сегменты не пересекались, то придется включать страничную трансляцию, создать соответствующие таблицы преобразования, еще писать обработчик исключения отказа страницы и т.п.
Приложение:
Ответ отправлен: 16.09.2003, 05:14
Отправитель: Hangatyr
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (31) C / C++ (27) Perl (6) Builder / Delphi (21) Pascal (22) Basic / VBA (10) Java / JavaScript (12) PHP (11) Криптография (9) WinAPI (15) |
Пользователю Windows 95/98/Me (48) Windows NT/2000/XP (61) "Железо" (38) Поиск информации (21) |
Администратору Windows NT/2000/XP (28) Linux / Unix (11) |
Юристу Гражданское право (10) Семейное право (7) Трудовое право (8) КоАП (6) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||