Команды IN и OUT используются для работы с внешними устройствами через порты ввода-вывода. Команда IN принимает данные из порта, а команда OUT записывает данные в порт. Номер порта может задаваться как числом от 0 до 255, так и значением регистра от 0 до 65535. Читать из порта или записывать в порт можно как 8-битные, так и 16- и 32-битные данные.

 

Команда IN
Синтаксис: IN op1,op2
Операнды: op1 - AL, AX, EAX
op2 - i8, DX
Назначение: Ввод из порта
Процессор: 8086+
Флаги: Не изменяются
Комментарий: Команда IN пересылает байт, слово или двойное слово из заданного числом во втором операнде порта в регистр (AL, AX или EAX), заданный первым операндом. Доступ к любому порту от 0 до 65535 выполняется путем помещения номера порта в регистр DX и использования команды IN с регистром DX в качестве второго параметра. Эти команды ввода/вывода могут быть несколько короче при использовании ввода/вывода через 8-битовый порт в команде. Старшие восемь битов адреса порта при использовании ввода/вывода через 8-битовый порт будут равны 0.
Ограничения: Нет
Примеры:
mov	dx,03DFh
in	al,dx
in	ax,60h
Команда OUT
Синтаксис: OUT op1,op2
Операнды: op1 - i8, DX
op2 - AL, AX, EAX
Назначение: Ввод из порта
Процессор: 8086+
Флаги: Не изменяются
Комментарий: Команда OUT пересылает байт, слово или двойное слово из заданного вторым операндом регистра (AL, AX или EAX) в выходной порт, номер которого задан первым операндом. Доступ к любому порту от 0 до 65535 выполняется путем помещения номера порта в регистр DX и использования команды OUT с регистром DX в качестве первого операнда. Если команда содержит идентификатор 8-битового порта, то значение расширяется нулем до 16 битов.
Ограничения: Нет
Примеры:
sub	ax,ax
mov	dx,03DFh
out	dx,ax
out	60h,al