Порт ввода-вывода 0x80 традиционно используется для POST-кодов. (POST = Самотестирование при включении)
Во время загрузки системы BIOS выводит серию отладочных кодов на порт ввода-вывода 0x80. Они предназначены для отладки не загружающейся системы.
В большинстве настольных ПК вы можете установить плату отладки кода POST, которая в основном представляет собой небольшую слотную плату PCI (или ISA), которая декодирует записи ввода / вывода в порт ввода / вывода 0x80 и отображает значение с помощью 7-сегментных светодиодов. .
Обычно POST-коды очень быстро вспыхивают. Однако, если ваша система зависает во время загрузки, вы можете увидеть, какой был последний код POST, и использовать эту информацию для устранения неполадок в системе.
Этот сайт содержит список стандартных POST-кодов для большинства BIOS. Однако производитель компьютеров / материнских плат может вставить свои собственные коды POST, поэтому этот список не является на 100% полным.
После того, как система начала загружать операционную систему, коды POST не очень актуальны. Однако некоторые поставщики ОС могут использовать кодовые платы POST в качестве средства отладки, особенно для тех мест в коде, где printf () может быть непрактичным (например, процедуры обработки прерываний).
Некоторые операционные системы будут использовать операции чтения и записи в порт ввода-вывода 0x80 в качестве механизма задержки. Если вам нужно подождать несколько микросекунд, чтобы что-то завершилось, может быть нецелесообразно использовать полноценные таймеры sleep () или delay (), поэтому выполнение «фиктивной» операции чтения / записи на «безопасный» адрес ввода-вывода облегченное решение. Чтение и запись в 0x80 в основном гарантированно не оказывают негативного влияния на работу системы, поэтому это хороший выбор для таких фиктивных операций.
Вы обнаружите, что на многих старых / более медленных периферийных устройствах (например, на вашем чипе RTC) иногда необходимо подождать несколько секунд, чтобы операция ввода-вывода «вступила в силу». Фиктивный доступ к 0x80 - это удобный способ сделать это.
Вы также можете найти код, который выполняет фиктивную запись в 0x80, чтобы "очистить" шину от любого электрического "эха". На некоторых платформах можно записать значение в неиспользуемый / недопустимый адрес ввода-вывода, прочитать обратно с этого адреса и посмотреть значение, которое вы только что написали, , даже если по этому адресу на самом деле нет оборудования . Однако, если вы делаете фиктивную запись по другому промежуточному адресу (скажем, порт ввода-вывода 0x80), вы можете защититься от этого.