Команды INS и OUTS пересылают блоки данных между портами ввода/вывода и памятью. Блочные команды ввода/вывода используют для адресации порта в адресном пространстве ввода/вывода регистр DX. Эти команды задают через регистр DX:
Блочные команды ввода/вывода используют для адресации памяти либо регистр SI, либо DI. При каждой пересылке регистр SI или DI инкрементируется или декрементируется, что определяется флагом направления приращений DF.
Будучи использованы с префиксами повторения, команды INS и OUTS выполняют операции блочного ввода или вывода. Префикс повторения REP модифицирует команды INS и OUTS таким образом, что они выполняют пересылку между портом ввода/вывода и оперативной памятью блоков данных. Эти блочные команды ввода/вывода являются строковыми командами (более подробное описание строковых команд см. в Главе 3). Они упрощают программирование и увеличивают скорость пересылки данных, исключая необходимость в использовании отдельных команд LOOP или промежуточных регистров для хранения данных.
Строковые команды ввода/вывода работают со строками байтов, слов или двойных слов. После каждой пересылки адрес памяти, находящийся в регистрах ESI или EDI, инкрементируется или декрементируется на 1 для байтовых операндов, на 2 для операндов-слов или на 4 для операндов-двойных слов. Флаг DF управляет тем, выполняется ли инкремент (флаг DF очищен) или декремент (Флаг DF установлен) регистра.
INS (Ввод строки из порта) пересылает элемент строки байтов, слов или двойных слов из порта ввода в оперативную память. Команда INSB пересылает байт из выбранного порта в область памяти, адресуемую регистрами ES и EDI. Команда INSW пересылает слово. Команда INSD пересылает двойное слово. Префикс переопределения сегмента для задания альтернативного сегмента назначения использоваться не может. В комбинации с префиксом повторения REP команда INS реализует циклическое считывание порта и помещение считанных данных в последовательно расположенные адреса памяти.
OUTS (Вывод строки в порт) пересылает элемент строки байтов, слов или двойных слов в порта вывода из оперативной памяти. Команда OUTSB пересылает байт в выбранный порта из области памяти, адресуемой регистрами ES и EDI. Команда OUTSW пересылает слово. Команда OUTSD пересылает двойное слово. Префикс переопределения сегмента для задания альтернативного сегмента источника использоваться не может. В комбинации с префиксом повторения REP команда OUTS реализует циклическое считывание данных в последовательно расположенных адресах оперативной памяти и запись их в порт вывода.