То, что таблица занимает такой-то диапазон в начале памяти я знаю. Опишите пошагово, что сделать-то надо? А как в безопасный режим попасть и как прочитать указанный файл? F8 при перезагрузке и искать Поиском Винды?? А разве нет в природе просто списка в формате .doc: Обработчик прерывания такого-то находится в памяти по адресу такому-то?
Partner Еще как смешно. =) Asm75 Почему нето у меня в планах есть. =) idtr.address это не файл. idtr это регистр. address - его поле. Только оброщение к этому регистру идет иначе нежеле чем к ax. Таблица для того и создона чтобы избежать постоянной базы. Вот номера они известны и известны что где и по чем.
Pavia Если уж говорить точно, то известны до определённой степени. Например, устройствам в процессе их настройки могут назначаться различные номера IRQ, а значит, и разные векторы прерываний. Жёстко зашиты лишь номера векторов, связанных с собственно процессором (деление на нуль, общее нарушение защиты и т.д.). Даже номера векторов, используемых операционной системой (если речь о Винде), можно теоретически поменять: в конце концов, Майкрософт никому не гарантировала переносимость на уровне вызовов NativeAPI через прерывания
Раз ты знаешь что адрес 00000, каждый обработчик в таблице занимает 4 байта (2 на сегмент, 2 на смещение), то можно с достаточной точностью сказать, что обработчик прерывания такого-то находится в памяти по адресу 4*[прерывание-такое-то]
А ты смог понять с его постов для какого ему надо? =) Предположил этот вариант потому что проще. А у него чтото там про безопасный режим, поиск файлов и таблицу векторов... фиг поймешь О.. всетаки перечитав несколько раз понял шутку (или не шутку?) про idtr.address. Хихикая, удаляюсь)
Great Сия тайна велика есть А вообще-то рано браться за издевательства над прерываниями -- у человека явно пока не хватает знаний по устройству и работе компутеров вообще и процессора в частности.
Pavia Откуда мне знать, что он знает, а что -- нет? Я лишь вижу, что с ассемблером он пока знаком очень слабо. А значит, заниматься прерываниями ещё рано -- всему своё время. Нельзя изучать интегралы с производными, если арифметика ещё твёрдо не усвоена
Пора и представиться: Z - специалист совсем в другой области, заинтересовался тем, как работает компьютер и программированием, в частности на асме. Как и рекомендовано человеку, который хочет во всем спокойно разобраться, читаю статью "Введение в машинный код". В этой статье говорится про таблицу векторов прерываний, по которой процессор узнает по какому адресу памяти обратиться для запуска программы-обработчика полученного прерывания. Цитата из статьи "Введение в машинный код": Вот я и подумал, где можно раздобыть такую удобную таблицу ) Я понимаю, как вам смешно, но все-таки хочу глубоко проработать тему ассемблера, разобраться в работе процессоров и научиться программировать. (под DOS и под Windows).
Asm75 Скозали ведь, инструкцию sidt заюзой, например: Code (Text): sub esp,8 sidt fword ptr ss:[esp] mov eax,dword ptr ss:[esp + 2] add esp,8
Asm75 Как уже сказали таблица в реальном режиме находится по адрессу 00000-0003ff. А чтобы узнать за что какое прерывание отвичает. Советую взять справочник Ralf Brown interrupt list. Хотя я предпочитаю PhoenixBIOS 4.0 Programmer’s Guide И help по досу. PS Линк поправил просто по дороге опостроф пропадал.
Т.е. таблица для каждого процессора своя, а как её посмотреть? я в отладчике debug.exe ввожу команду -r а регистра такого там нет. И не должно быть? Как тогда его "прочитать" А каким образом? Еще вопрос, почему цифры начинаются с 0х? для чего это? Не могли бы пояснить, как заюзать этот код и как он поможет мне, ведь цель - посмотреть таблицу векторов прерываний?
Object not found! The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error. If you think this is a server error, please contact the webmaster. Error 404
Это внутреннее имя не экспортируемое таблицы IDT в ядре NT. Ну я же не знал по столь не подробному вопросу что тебе надо, по дефолту подразумевается виндоз. Ну вернёт код этот тебе адрес таблицы, нужно её прочитать. Способ зависит от того где это будет юзатьсо. Тебе под какую ось нужно ?