|
Ушел с форума
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,769
|
|||||||||||||||||||||||||||||||||||||||||||||||||
| 18.12.2013, 14:18 [ТС] | |||||||||||||||||||||||||||||||||||||||||||||||||
|
ГЛАВА 20 Напишем программу длиной всего 9 байт, которая (если у вас BIOS AWARD) будет сбрасывать пароль и настройки SETUP’а. Теперь сбросить пароль в BIOS’е также легко, как его поставить.РАБОТА С ПОРТАМИ ВВОДА/ВЫВОДА
Дальше команда OUT 70h,AL выводит в порт с номером 70h число из регистра AL. Порт — это как бы канал связи микропроцессора с внешним миром. Через порт микропроцессор получает сигналы от устройств ввода, либо посылает сигналы на устройства вывода. Теоретически микропроцессор управляет 65536 портами, начиная с нулевого порта. Для управления вводом-выводом непосредственно на уровне порта используются команды IN и OUT. Каждое устройство (винчестер, видео-, звуковая карта и т.д.) имеет несколько портов, через которые осуществляется управление. Порты 70h и 71h соответствуют CMOS’у. Чтобы программировать CMOS, надо сначала вывести в порт 70h то, что вы хотите изменить в CMOS’е (дата, время, настройки винчестера, пароль), а затем ввести в порт 71h новое значение (дату, время, параметры винчестера и так далее). Сначала выводим в порт 70h число 5Eh, которое означает, что мы будем изменять настройку пароля ON/OFF. Затем выводим в порт 71h ноль, что соответствует отключению пароля (чтобы пароль включить, надо вывести единицу). Кроме CMOS'а, напрямую через порты ввода/вывода можно управлять клавиатурой, системным динамиком, винчестером, флоппиком, видеоадаптером, таймерами, принтером, сканером, а также микропроцессорами для управления потоком данных. Микропроцессор IA32/64 имеет два различных физических адресных пространства: ПАМЯТЬ и ВВОД/ВЫВОД. Обычно, внешние устройства помещаются в пространстве ВВОДА/ВЫВОДА, хотя микропроцессор IA32/64 также поддерживает внешние устройства распределения памяти. Объем пространства ВВОД/ВЫВОД 64Кбайт и может быть разделен на 64К 8-разрядных портов, 32К 16-разрядных портов, 16К 32-разрядных портов или другую комбинацию устройств, которые в сумме не превышают 64 Кбайт. 64К-адресное пространство ВВОД/ВЫВОДА относится к физической памяти, а не к линейному адресу, поскольку команды ввода/вывода не проходят через устройства, выполняющие сегментацию или разбиение на страницы. Для работы памяти ВВОДА/ВЫВОДА задействована дополнительная адресная линия имеют нулевое расширение (то есть не расширяются) на верхних адресных линиях. Команды ввода/вывода вызывают цикл ожидания, так как работают гораздо медленнее микропроцессора. Адреса портов ВВОД/ВЫВОДА от 0000h до 00FFh зарезервированы для внутреннего использования фирмой Intel. Цифровые сопроцессоры также постоянно хранятся в данном пространстве ВВОДА/ВЫВОДА в ячейках: 8000000F8h-800000FCh. операционной системы Windows NT/2k/XP, порты являются критически важным разделяемым ресурсом, и механизмы защиты операционной системы не могут допустить их монополизацию каким-либо приложением. Если программе удастся получить уровень привилегий ядра (такой уровень имеют драйвера устройств), то в этом случае можно беспрепятственно использовать команды IN/OUT. Существуют специальные программы, позволяющие получить доступ к портам ввода-вывода из программы пользователя, исключая необходимость написания драйверов. Команда IN Синтаксис команды:(Ввод операнда из порта = “INPUT operand from port”) IN <аккумулятор>,<номер порта> Семантика команды: ввод значения из порта ввода-вывода. Алгоритм работы: передает байт, слово, двойное слово из порта ввода-вывода в один из регистров AL/AX/EAX. Возможные варианты команды: in eax/ax/al,dx in eax/ax/al,imm Применение: команда применяется для прямого управления оборудованием компьютера посредством портов. Номер порта задается вторым операндом в виде непосредственного значения или значения в регистре DX. Непосредственным значением можно задать порт с номером в диапазоне 0-255. При использовании порта с большим номером используется регистр DX. Размер данных определяется размерностью первого операнда и может быть байтом, словом, двойным словом. В качестве примера применения рассмотрим фрагмент обработчика прерывания от клавиатуры INT 9. Это прерывание вызывается всякий раз при нажатии любой клавиши на клавиатуре. Обработчик этого прерывания должен прочитать скан-код клавиши, подтвердить микропроцессору клавиатуры факт приема скан-кода, преобразовать этот код в соответствии с клавишами-переключателями и поместить преобразованный код в буфер клавиатуры, находящийся в области BIOS. Действия чтения и подтверждения приема скан-кода могут выглядеть, к примеру, так:
Команда OUT Синтаксис команды:(Вывод операнда в порт = “OUTPUT operand to port”) OUT <номер порта>,<аккумулятор> Семантика команды: вывод значения в порт ввода-вывода. Алгоритм работы: передать байт, слово, двойное слово из регистра AL/AX/EAX в порт, номер которого определяется первым операндом. Возможные варианты команды: out dx,eax/ax/al out imm,eax/ax/al Применение: команда применяется для прямого управления оборудованием компьютера посредством портов. Номер порта задается первым операндом в виде непосредственного значения или значения в регистре DX. Непосредственным значением можно задать порт с номером в диапазоне 0...255. Для указания порта с большим номером используется регистр DX. Размер данных определяется размерностью второго операнда и может быть байтом, словом или двойным словом.
Команды INSB/INSW/INSD Синтаксис команд:(Ввод строк байтов/слов/двойных слов из порта = “INPUT String Byte/Word/Double word operands”) INS <операнд>,<порт> INSB INSW INSD Семантика команды: ввод из порта в память последовательности байт, слов, двойных слов. Возможные варианты команды: ins(b/w/d) rep ins(b/w/d) Алгоритм работы:
в которую вводятся элементы из порта ввода-вывода. Реально это символическое имя используется лишь для получения типа элемента последовательности, а его адрес должен быть предварительно загружен в пару регистров ES:RDI/EDI/DI.
Команды OUTSB/OUTSW/OUTSD Синтаксис команд: OUTS порт,операнд(Вывод строки байтов/слов/двойных слов в порт = “OUTPUT Byte/Word/Double word String to port”) OUTSB OUTSW OUTSD Семантика команды: вывод в порт из памяти последовательности байт, слов, двойных слов. Возможные варианты команды: outs(b/w/d) rep outs(b/w/d) Алгоритм работы:
Размеры вводимых элементов зависят от применяемой команды. Команда OUTS может работать с элементами размером в байт, слово или двойное слово. В качестве операнда в команде указывается символическое имя ячейки памяти, из которой элемент выводится в порт ввода-вывода. Реально символическое имя используется лишь для получения типа элемента последовательности, а ее адрес должен быть предварительно загружен в пару регистров DS:RDI/ESI/SI. Для того чтобы эти команды можно было использовать для вывода в порт последовательности элементов, имеющих размерность байт, слово или двойное слово, необходимо использовать префикс REP. Он заставляет циклически выполняться команду вывода в порт до тех пор, пока содержимое регистра ECX/CX не станет равным нулю. Пример использования команд IN, OUT, OUTS При помощи команд IN и OUT можно управлять, например, встроенным динамиком. Динамик включается и выключается при выводе специального значения в порт управления динамиком с номером 61h, связанный с микросхемой программируемого контроллера периферийного интерфейса Intel 8255. Для включения динамика нужно прочитать байт из порта 61h, установить в единицу его два младших бита (бит 0 разрешает работу канала таймера, а бит 1 включает динамик), а затем записать полученное значение в тот же порт. Чтобы отключить динамик, нужно сбросить значение двух младших битов порта 61h.Все управление таймером осуществляется путем вывода байта в порт 43h. Назначение битов порта 43h приведены в таблице.
Таблица 20.5.1
Команды IN и OUT имеют длинный и короткий форматы. Первым операндом в команде IN, то есть операндом получателем, должен быть регистр AL/AX/EAX. Если второй операнд в команде IN – непосредственное значение числа, то команда имеет длину 2 байта и адрес занимает второй байт. Когда вторым операндом указан регистр DX, команда оказывается однобайтовой (Рис. 20.6.1). В отличии от адресации памяти содержимое DX не модифицируется никаким сегментным регистром. В длинном формате команд IN и OUT адрес порта должен находится в диапазоне от 0 до 255, а в коротком формате в диапазоне от 0 до 65535.
2
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|