![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 25.12.2007
Сообщений: 7
|
![]()
Не знаю уж у кого спросить, чтоб подсказали. Перенесите, если уж совсем не в той теме.
В университете задали задание вытащить программу базового обработчика прерываний BIOS для клавиатуры(09H) Сказали использовать пакет программ RunBIOS: вроде как прога intview должна выдавать адрес сегмента и адрес смещения, а потом в sourcere вбиваешь этот адрес и получаешь текст программы обработчика. Если так делать, то выдается какая-то ерунда, не похожая на то, что нужно! Есть подозрение, что обработчик прерывания int 9 не указывает в BIOS, а указывает в DOS, так как DOS устанавливает свой обработчик Чел из параллельной группы сказал посмотреть команду JMP в сегменте F000 со смещением E987, которая перескакивает на начало обработчика прерываний (им так объяснил их преподаватель). Вот только откуда берется этот адрес непонятно. Наш препод требует объяснений. Может кто-нибудь знает откуда этот(F000 E987) адрес берется? |
![]() |
![]() |
![]() |
#2 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Таблица векторов прерываний валяется в первом килобайте памяти начиная со смещения 0000:0000 в виде массива из 256 dword'ов. Соответственно адрес обработчика прерывания int9 лежит по адресу 9*4=36 он же 0000:0024h
пыщь
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
![]()
Ну вот, набросал быстренько boot сектор для дискеты, создал пустой образ дискетки с этим загрузчиком и загрузил в виртуальной машине Virtual PC 2007. Удивительно, но адрес и в правду совпал с вышеуказанным. В архиве прикладываю файл-образ дискеты (testimg.img), который можно записать на обычную 1,44Mb дискету и загрузиться на реальном компе с нее, а можно подцепить образ в любую виртуальную машину. Так же в архиве исходный код загрузчика (boot.asm) и уже скомпилированная версия (boot.bin).
Исходный код загрузчика: Код:
tasm boot.asm tlink /t boot.obj
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 25.12.2007
Сообщений: 7
|
![]()
Tronix, огромное спасибо за помощь! Это было как раз то, что нужно! =)
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перехват прерываний от клавиатуры и работа с видеопамятью | sunlightik | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 26.02.2010 00:32 |
Обработчик клавиатуры | Raven77 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 28.09.2009 09:04 |
обработчик прерываний по таймеру | Петруха | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 26.03.2009 20:57 |