Таблица векторов прерываний

Тема в разделе "WASM.BEGINNERS", создана пользователем Asm75, 4 янв 2009.

  1. Asm75

    Asm75 New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2009
    Сообщения:
    28
    Где взять таблицу векторов прерываний?
     
  2. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    в реальном режиме - 0x00000000 - 0x00000400, в безопасном читай idtr.address.
     
  3. Asm75

    Asm75 New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2009
    Сообщения:
    28
    То, что таблица занимает такой-то диапазон в начале памяти я знаю. Опишите пошагово, что сделать-то надо? А как в безопасный режим попасть и как прочитать указанный файл? F8 при перезагрузке и искать Поиском Винды?? А разве нет в природе просто списка в формате .doc: Обработчик прерывания такого-то находится в памяти по адресу такому-то?
     
  4. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Не смешно.
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Partner
    Еще как смешно. =)

    Asm75
    Почему нето у меня в планах есть. =)
    idtr.address это не файл. idtr это регистр. address - его поле.
    Только оброщение к этому регистру идет иначе нежеле чем к ax.

    Таблица для того и создона чтобы избежать постоянной базы. Вот номера они известны и известны что где и по чем.
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Pavia
    Если уж говорить точно, то известны до определённой степени. Например, устройствам в процессе их настройки могут назначаться различные номера IRQ, а значит, и разные векторы прерываний. Жёстко зашиты лишь номера векторов, связанных с собственно процессором (деление на нуль, общее нарушение защиты и т.д.). Даже номера векторов, используемых операционной системой (если речь о Винде), можно теоретически поменять: в конце концов, Майкрософт никому не гарантировала переносимость на уровне вызовов NativeAPI через прерывания :)
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Раз ты знаешь что адрес 00000, каждый обработчик в таблице занимает 4 байта (2 на сегмент, 2 на смещение), то можно с достаточной точностью сказать, что обработчик прерывания такого-то находится в памяти по адресу 4*[прерывание-такое-то]
     
  9. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Great
    Так это только для реального режима...
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А ты смог понять с его постов для какого ему надо? =)
    Предположил этот вариант потому что проще. А у него чтото там про безопасный режим, поиск файлов и таблицу векторов... фиг поймешь

    О.. всетаки перечитав несколько раз понял шутку (или не шутку?) про idtr.address. Хихикая, удаляюсь)
     
  11. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Great
    Сия тайна велика есть :)

    А вообще-то рано браться за издевательства над прерываниями -- у человека явно пока не хватает знаний по устройству и работе компутеров вообще и процессора в частности.
     
  12. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    SII
    Что ты хочешь человек второй день ассемблер изучает, а до этого на бесике писал.
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Pavia
    Откуда мне знать, что он знает, а что -- нет? Я лишь вижу, что с ассемблером он пока знаком очень слабо. А значит, заниматься прерываниями ещё рано -- всему своё время. Нельзя изучать интегралы с производными, если арифметика ещё твёрдо не усвоена :)
     
  14. Asm75

    Asm75 New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2009
    Сообщения:
    28
    Пора и представиться: Z - специалист совсем в другой области, заинтересовался тем, как работает компьютер и программированием, в частности на асме. Как и рекомендовано человеку, который хочет во всем спокойно разобраться, читаю статью "Введение в машинный код". В этой статье говорится про таблицу векторов прерываний, по которой процессор узнает по какому адресу памяти обратиться для запуска программы-обработчика полученного прерывания. Цитата из статьи "Введение в машинный код":
    Вот я и подумал, где можно раздобыть такую удобную таблицу :)) Я понимаю, как вам смешно, но все-таки хочу глубоко проработать тему ассемблера, разобраться в работе процессоров и научиться программировать. (под DOS и под Windows).
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Asm75
    Скозали ведь, инструкцию sidt заюзой, например:
    Код (Text):
    1.     sub esp,8
    2.     sidt fword ptr ss:[esp]
    3.     mov eax,dword ptr ss:[esp + 2]
    4.     add esp,8
     
  16. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Asm75
    Здесь цикл статей есть "Процессор Intel в защищенном режиме",
    почитай их для начала, чтоль...
     
  17. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Asm75
    Как уже сказали таблица в реальном режиме находится по адрессу 00000-0003ff.
    А чтобы узнать за что какое прерывание отвичает. Советую взять справочник Ralf Brown interrupt list. Хотя я предпочитаю PhoenixBIOS 4.0 Programmer’s Guide И help по досу.

    PS Линк поправил просто по дороге опостроф пропадал.
     
  18. Asm75

    Asm75 New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2009
    Сообщения:
    28
    Т.е. таблица для каждого процессора своя, а как её посмотреть?

    я в отладчике debug.exe ввожу команду -r а регистра такого там нет. И не должно быть? Как тогда его "прочитать"
    А каким образом?

    Еще вопрос, почему цифры начинаются с 0х?


    для чего это?


    Не могли бы пояснить, как заюзать этот код и как он поможет мне, ведь цель - посмотреть таблицу векторов прерываний?
     
  19. Asm75

    Asm75 New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2009
    Сообщения:
    28
    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
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Это внутреннее имя не экспортируемое таблицы IDT в ядре NT. Ну я же не знал по столь не подробному вопросу что тебе надо, по дефолту подразумевается виндоз.
    Ну вернёт код этот тебе адрес таблицы, нужно её прочитать. Способ зависит от того где это будет юзатьсо.
    Тебе под какую ось нужно ?