Команды предназначены для ввода данных из порта непосредственно в память. Адрес порта указывается, как и для команды in, в регистре DX, при этом задание адреса порта непосредственным значением не допускается. Данные пересылаются по адресу, находящемуся в паре регистров ES:EDI. Замена сегмента не допускается. Команда insb переносит из порта 1 байт, команда insw - 1 слово, команда insd - 1 двойное слово, а команда ins может быть использована для передачи байтов, слов и двойных слов. В последнем случае размер загружаемого данного определяется описанием строки (с помощью директив db, dw или dd). После передачи данных регистр EDI получает положительное (если флаг DF=0) или отрицательное (если флаг DF=1) приращение. Величина приращения составляет 1, 2 или 4, в зависимости от размера передаваемых данных. Вариант команды ins имеет формат
ins строка, DX
(что не избавляет от необходимости
инициализировать регистры ES:EDI адресом строки).
Если устройство, адресуемое через порт, может передавать последовательность
данных, то команды ins можно предварить префиксом повторения
rep. В этом случае
из порта принимается СХ элементов данных заданного размера.
Команды ins не воздействуют на флаги процессора.
Пример
;В сегменте данных, адресуемых через DS