| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для Windows/Dos > обращение к PCI |
| Автор: qwerty1122 23.4.2014, 14:57 | ||
привет!вот по книжке одной написал программку для обращения к PCI:
прогоняю ее через tasm и tlink и все хорошо в итоге создается exe-шник,запускаю его и вылазиет ошибка(на прикрепленой картинке)...подскажите как исправить это недоразумение? |
| Автор: tzirechnoy 23.4.2014, 18:39 |
| Для начала, разумеется, начать обрабатывать ошыбки. Тогда будет заметно понятнее, в каком месте произошли неприятности. |
| Автор: qwerty1122 23.4.2014, 19:31 | ||||
как я буду обрабатывать ошибки если прогоняя через tasm и tlink все хорошо от части послушал ваш совет,и не обращая внимания на книгу осторожно по шагам начал заново...вот что получилось
и в итоге,ошибка исчезла...но вот теперь доходит до JNE и в конец...у меня даж слов нет...подскажите мож гдето что то неправильно делаю с инициализацией PCI |
| Автор: tzirechnoy 24.4.2014, 02:08 | ||
Ошыбки периода исполнения (run-time) никак себя особенно не проявляют в tasm и tlink. Обрабатывать их надо, предусматривая соответствующие ветки программ, код в которых выполняется при ошыбках, и делает что-то разумное (например, сообщает пользователю о месте возникновения ошыбки). А не, как у вас, улетает в неиницыализированные области при любом неожыданном ответе системных вызовов. PS А, да, вижу, начали обрабатывать. Замечательно, Вам выдан вполне корректный ответ, что PCI BIOS не найден. Видимо, NTVDM (Вы его ведь под NTVDM запускаете? Ну, запускалка DOS-программ под win32?) не поддержывает функцыи PCI BIOS. Да и, действительно, что ему там поддержывать? Непосредственного доступа к устройствам из NTVDM никогда не было, по соображэниям безопасности и разделения ресурсов. Корректно эмулировался набор из древних таймеров с контроллером прерываний, клавиатуры, PC спикера, старого но всё-таки 16-битного саунд бластера и VGA-адаптэра с VESA-функцыями. Ни одного устройства, требуещего PCI не эмулировалось, потому и поддержка PCI BIOS ему низачем не нужна. |
| Автор: qwerty1122 24.4.2014, 14:04 |
| да запускаю в DOS программе под win32...раз такая тема что не смогу получить доступ к PCI т.к. не поддерживается то подскажите пожалуйста каким образом я смогу проверить работоспособность программы?(вчера весь вечер голову ломал мож что в коде не так а оказалось вот в чем дело) Добавлено через 3 минуты и 34 секунды а вот если сделать загрузочную флешку на DOS то это сможет помочь? |
| Автор: LeonidPr 24.4.2014, 14:14 |
| Можете установить дос в какой-нибудь эмулятор типа VMWare и там поиграться. |
| Автор: tzirechnoy 24.4.2014, 22:59 | ||
Да, вполне вариант. Тут, правда, есть сложности что ужэ появляются материнские платы, которые не поддержываются ни одним DOSом из-за своих глюков, но это всё-таки ещё пока редкость. Другой вариант -- взять эмулятор более нового писюка, например, qemu или, действительно, vmWare. Там, вполне вероятно, что будут эмулироваться какие-то PCI-устройства, и, в частности, скорее всего будет эмулироваться еhci-контроллер USB на PCI. Особенно если указать, что будет эмулироваться или пробрасываться какое-то USB-устройство. Такжэ в некоторые виртуальные машыны можно пробросить реальное PCI-устройство (хотя поддержка этого довольно кривая). |
| Автор: qwerty1122 25.4.2014, 18:15 | ||
| попробовал через DOS,есть прогресс,срабатывает...но вот теперь загвоздка при выводе значения регистра выводится какието невообразимые символы вот сам код
|
| Автор: tzirechnoy 28.4.2014, 01:14 |
| Выводится символ с ASCII-кодом, соответствующим... В общем, херня выводится, через 2102 печатаются символы, числа печатаются заметно сложнее. |