
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
![]() |
|
|
Пива всем!
Есть у нас такой предмет в универе Микропроцессорные средства, где препод нам рассказал в общих чертах (в общих, потому что мы заочники ![]() (пишу по памяти, возможны очепятки) При нажатии на кнопку RESET асинхронный сигнал RESETIN приходит на генератор тактовых импульсов (ГТИ), синхронизируется с сигналм SYNC от процессора. Синхронизированный сигнал RESET приходит на одноименную ножку процессора. Процессор при этом обнуляет программный счетчик (ProgramCount) и сбрасывает три триггера 1. триггер останова HALTA 2. триггер обработки прерывания INTA 3. триггер выполнения прямого доступа к памяти HLDA что делается дальше - не совсем ясно... А далее вопрос: что происходит при горячей перезагрузке? Мои рассуждения таковы: при нажатии на три клавиши (пусть это будет ДОС) процессору предлагается обработать какое-то прерывание, т.е. отложить выполнение так называемой основной программы и уйти на выполнение подпрограммы. Очевидно, что в данном случае в подпрограмме и будет какая-то команда перезагрузки. Поковырявшись в инете, смутно выяснил, что при этом надо просто начать заново исполнять POST, т.е. выполнить безусловный переход на какой-то там адрес. И далее строки типа Цитата DB 0EAh, 0, 0, 0FFh, 0FFh ;jmp 0FFFFh:0000h По адресу 0FFFFh:0000h (или 0F000h:0FFF0h) находится точка входа BIOS, а именно начало программы POST (Power On Self Test), которая выполняется при загрузке компьютера. Архитектура IBM-совместимых компьютеров такова, что при включении питания процессор начинает выполнение инструкций именно с этого адреса... а также Цитата Еще способы: - самый короткий - int 19h - jmp dword ptr ds:[467h], если ds=0 Проясните ситуацию, плз. С уважением и надеждой. |
Сообщ.
#2
,
|
|
|
Холодная перезагрузка эквивалентна загрузке по включению
ПЭВМ, теплая - перезагрузке по нажатию Ctrl+Alt+Del и отличается от холодной пропуском теста ОЗУ. Для выполнения теплой переза- грузки до передачи управления на F000h:FFF0h нужно заслать по адресу 00472h слово 1234h. |
Сообщ.
#3
,
|
|
|
Цитата Black Trinitron @ Да это все понятно. Это такая общая терминология: нажми на эту кнопку питания - включится этот телевизор. А что внутри-то происходит? Что выполняется после п.3?Холодная перезагрузка эквивалентна загрузке по включению ПЭВМ Цитата Black Trinitron @ Вот это бы поподробнее... Я в Асме практически ничего не понимаю, поэтому неплохо бы расшифровать, что значит Для выполнения теплой переза- грузки до передачи управления на F000h:FFF0h Цитата Желательно с точностью до каждого символа. DB 0EAh, 0, 0, 0FFh, 0FFh ;jmp 0FFFFh:0000h ![]() Цитата Black Trinitron @ А там чего хранится? Это адрес чего? Что это дает? нужно заслать по адресу 00472h слово 1234h |
Сообщ.
#4
,
|
|
|
когда-то давно я копался в коде по адресу 0FFFh:0000h - эх хорошие были времена....
![]() кароч, как оказалось, для перезагрузки (программной) достаточно послать 1 байт (0FEh) в порт 64h (притом, что это - порт контроллера клавиатуры ![]() Цитата Lerik @ Цитата Black Trinitron @ А там чего хранится? Это адрес чего? Что это дает? нужно заслать по адресу 00472h слово 1234h это просто типа флага - если по этому адресу записано 1234h, значит перезагрузка "теплая", иначе - "холодная" ![]() |
Сообщ.
#5
,
|
|
|
Цитата MichSpar, 10.02.2006, 21:54:10, 1013097 притом, что это - порт контроллера клавиатуры это-то очень просто... исторически так получилось, что у той микросхемы, которая была контроллером клавиатуры на был свободный выход... вот его и повесили на reset... не ставить же ради такой ерунды отдельную микруху... ![]() |
Сообщ.
#6
,
|
|
|
Цитата Lerik @ DB 0EAh, 0, 0, 0FFh, 0FFh ;jmp 0FFFFh:0000h Желательно с точностью до каждого символа. EA - код jmp 00 00 FF FF - Адрес ![]() |
Сообщ.
#7
,
|
|
|
Ну, значит, в общем я прав?
Вот еще нашел: Цитата В компьютерах IBM PC ROM находится по адресу FFFF0H. При включении компьютера процессор устанавливает состояние сброса, выполняет контроль четности, устанавливает в регистре CS значение FFFFH, а в регистре IP - нуль. Первая выполняемая команда поэтому находится по адресу FFFF:0 или FFFF0, что является точкой входа в BIOS. BIOS проверяет различные порты компьютера для определения и инициализации подключенных устрой ств. Затем BIOS создает в начале памяти (по адресу 0) таблицу прерываний, которая содержит адреса обработчиков прерываний, и выполняет две операции INT 11H (запрос списка присоединенного оборудования) и INT 12H (запрос размера физической памяти). Следующим шагом BIOS определяет имеется ли на диске или дискете операционная система DOS. Если обнаружена системная дискета, то BIOS выполняет прерывание INT 19H для доступа к первому сектору диска, содержащему блок начальной загрузки. Этот блок представляет собой программу, которая считывает системные файлы IBMBIO.COM, IBMDOS.COM и COMMAND.COM с диска в память. После этого память имеет следующее распределение: Таблица векторов прерываний Данные BIOS IBMBIO.COM и IBMDOS.COM Резидентная часть COMMAND.COM |