|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.12.2017, 21:06 | #1 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
Не работают прерывания в PM
Пытаюсь настроить прерывания в защищённом режиме, перенастроил PIC(включил таймер и клавиатуру)
PC уходит в reboot после как разрешаю прерывания в Protected mode с помощью команды sti. В чем может быть проблема? boot.asm Код:
Код:
|
10.12.2017, 23:17 | #2 | |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
С этой проблемой пока разобрался. Но теперь выскакивает GP, а потом проблема с памятью и qemu завершает работу и пишет значения регистров.
Цитата:
С чем это может быть связанно? |
|
11.12.2017, 00:03 | #3 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
имхо что-то со-стеком у тебя глюки - SS зашкаливает...
вот значения сегментных регистров из твоего лога: Код:
здесь указаны результаты трейса обоих типов: и кода ядра, и кода юзера. это мои недавние эксперименты (к твоему коду отношения не имеют): Код:
эти три (как показали мои опыты) - постоянны.
Нашедшего выход - затаптывают первым..
|
11.12.2017, 00:20 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
А зачем отдельный селектор для видеопамяти?
|
11.12.2017, 00:32 | #5 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
Да как бы не зашкаливает, я для ss селектор описывал 18h, убирал (оставлял адрес из реального режима) разницы ноль. Только если селектор стека определен, то в reboot уходит. Но перед reboot #GP успевает поймать исключение.
|
11.12.2017, 00:43 | #6 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
|
11.12.2017, 00:47 | #7 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
Разобрался регистр esp переполнялся и выходил за пределы селектора стэка. Т.к. GP кладёт в стек 4 байта кода ошибки.(При #GP, забирал значение из стека) А вот теперь вопрос, что за ошибка может быть?
Последний раз редактировалось Nikolay2015; 11.12.2017 в 01:00. |
11.12.2017, 01:21 | #8 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
Прошёлся отладчиком висит на кодe jmp $ долго прыгает, но потом через (неизвестное) количество тактов выпадает #GP
|
11.12.2017, 03:18 | #9 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
Один момент. При исключении #GP код ошибки равен 0102h, что это значит не знаю.
Такого селектора у меня нет, да и нигде я его не загружал. Откуда такой код ошибки? И при чём #GP срабатывает всегда, то есть не 1 раз , а повторяется. Через некоторое количество тактов которое я не могу узнать, даже через отладчик, т.к. даже в отладчике я не дошёл до обработчика #GP Пробовал: Разрешаю NMI sti 1) jmp $ 2) hlt 3) halt: nop jmp halt Последний раз редактировалось Nikolay2015; 11.12.2017 в 05:03. |
11.12.2017, 08:53 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с циклом. Компилируется нормально,кнопки Один,Два,Три,Четыре и Пять работают хорошо,но кнопки 6 и 7 не работают. | Bananiys24 | Общие вопросы по Java, Java SE, Kotlin | 1 | 16.06.2017 17:01 |
Как в МК работают аппаратные прерывания? | седьмой | Микроконтроллеры, робототехника, схемотехника, 3D принтеры | 13 | 05.05.2017 06:39 |
Не работают прерывания | xotonic | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 24.10.2014 21:18 |
прерывания | lilek | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 14.12.2010 20:44 |
Делфи и ассемблер. Не работают прерывания типа Int | Я_и | Общие вопросы Delphi | 8 | 11.12.2010 13:13 |