(для вывода), а для адресации ячеек памяти – любые адресные команды.
Для доступа к порту ввода/вывода, расположенному в адресном пространстве памяти могут использоваться любые работающие с памятью команды. Это дает некоторую гибкость работы с портами. Например, команда MOV позволяет пересылать данные между портом и любым регистром. Команды AND, OR, и TEST позволяют манипулировать с отдельными битами управляющих регистров портов при программировании процедур ввода/вывода. Сегменты логической памяти, порты ввода/вывода и их отображение (возможное размещение) в памяти представлены на рис. 3. 1.
Если при отображении портов на адресное пространство памяти используется сегментация, то поля AVL в дескрипторах сегментов позволяют отметить сегменты как неперемещаемые и не подлежащие подкачке.
Все сегменты (включая сегменты портов) в плоской памяти задаются двумя независимыми параметрами: сегментом (базовый адрес сегмента) и адресом объекта в сегменте (смещением в сегменте).
Адресное пространство портов:
216 65 536 однобайтных портов с нумерацией от 0 до 65 535 или
215 32 768 двухбайтных портов с нумерацией от 0 до 65 534 или
214 16 384 четырехбайтовых портов с нумерацией от 0 до 65 532.
В командах ввода/вывода адреса портов от 1 до 255 могут задаваться прямыми адресами:
IN al, 24 – ввод байта из 24-го порта в регистр al,
IN ax, 24 – ввод слова из 24-го порта в регистр ax,
IN eax, 24 – ввод двойного слова из 24-го порта в регистр eax,
Задание в командах портов с адресами больших 255 производится с использованием регистра dx:
MOV dx, 1024 ;засылка адреса порта в dx
IN al, dx ;ввод байта из 1024-го порта в регистр al,
IN ax, 24 ;ввод слова из 1024-го порта в регистр ax,
Вопросы для самопроверки:
1. Понятие
Страницы: << < 3 | 4 | 5 | 6 | 7 > >>