O
OUTS Вывод строки в порт. OUTSB Вывод байта в порт. OUTSW Вывод слова в порт. OUTSD Вывод двойного слова в порт.
Команды предназначены для вывода данных в порт непосредственно из памяти. Адрес порта указывается, как и для команды out, в регистре DX, при этом задание адреса порта непосредственным значением не допускается. Данные извлекаются из памяти по адресу, находящемуся в паре регистров DS:ESI. Замена сегмента не допускается. Команда outsb передает в порт 1 байт, команда outsw – 1 слово, команда outsd – 1 двойное слово, а команда outs может быть использована для передачи байтов, слов и двойных слов.
В последнем случае размер загружаемого данного определяется описанием строки (с помощью директив db, dw или dd). После передачи данных регистр ESI получает положительное (если флаг DF=0) или отрицательное (если флаг DF=1) приращение. Величина приращения составляет 1, 2 или 4 в зависимости от размера передаваемых данных.
Вариант команды outs имеет формат:
outs DX, строка
(Что не избавляет от необходимости инициализировать регистры DS:ESI адресом строки).
Если устройство, адресуемое через порт, может принимать последовательность данных, то команды outs можно предварить префиксом повторения rep. В этом случае в порт пересылается СХ элементов данных заданного размера.
Команды outs не воздействуют на флаги процессора.
Пример 1:
; В полях данных mem dw 0FFh ;В программном сегменте mov SI, offset mem; ES:DI ® mem mov DX,303h; Адрес порта outsb; Вывод в порт 8-битового данного
Пример 2:
; В полях данных string dw 0FFh,1.5.0Bh, 0 ; В программном сегменте mov SI, off set mem; ES:DI › mem mov DX,340h Адрес порта mov CX, 5; Число данных eld; Движение по данным вперед rep outsb; Последовательный вывод в ;порт пяти 8-битовых данных