Команды INS, INSB, INSW, INSD позволяют несколько автоматизировать операции получения данных из порта ввода-вывода. По сути эти команды выполняют команду IN, только результат помещается не в регистр, а в ячейку памяти, адресуемую парой регистров ES:(E)DI, после чего производится сдвиг адреса для записи следующей порции данных в следующую ячейку памяти.

 

Команда INS
Синтаксис: INS op1,DX
Операнды: op1 - m8, m16, m32
Назначение: Ввод из порта в строку
Процессор: 80186+
Флаги: Не изменяются
Комментарий: Команда INS как и команда CMPS не является командой процессора. Когда в тексте программы встречается эта команда, компилятор вычисляет размерность ее операнда и на основании вычислений подставляет на ее место одну из реальных команд процессора INSB, INSW или INSD.
Ограничения: Нет
Примеры:
ins	es:str1, dx
Команда INSB
Синтаксис: INSB
Операнды: Нет
Назначение: Ввод байтов из порта в строку
Процессор: 80186+
Флаги: Не изменяются
Комментарий: Команда INSB пересылает байт данных из заданного регистром DX порта ввода в ячейку памяти по адресу ES:DI. Аналогична по действию команде IN. После выполнения пересылки регистр DI увеличивается на 1, если флаг DF=0 или уменьшается на 1, если флаг DF=1. Если команда используется в 32-разрядном режиме адресации, то используется регистр EDI.
Ограничения: Нет
Примеры:
mov	dx,03DFh
sub	di,di
insb
Команда INSW
Синтаксис: INSW
Операнды: Нет
Назначение: Ввод 2-байтовых значений из порта в строку
Процессор: 80186+
Флаги: Не изменяются
Комментарий: Команда INSW пересылает слово данных из заданного регистром DX порта ввода в ячейку памяти по адресу ES:DI. Аналогична по действию команде IN. После выполнения пересылки регистр DI увеличивается на 2, если флаг DF=0 или уменьшается на 2, если флаг DF=1. Если команда используется в 32-разрядном режиме адресации, то используется регистр EDI.
Ограничения: Нет
Примеры:
mov	dx,03DFh
sub	di,di
insw
Команда INSD
Синтаксис: INSD
Операнды: Нет
Назначение: Ввод 4-байтовых значений из порта в строку
Процессор: 80386+
Флаги: Не изменяются
Комментарий: Команда INSD пересылает байт данных из заданного регистром DX порта ввода в ячейку памяти по адресу ES:DI. Аналогична по действию команде IN. После выполнения пересылки регистр DI увеличивается на 4, если флаг DF=0 или уменьшается на 4, если флаг DF=1. Если команда используется в 32-разрядном режиме адресации, то используется регистр EDI.
Ограничения: Нет
Примеры:
mov	dx,03DFh
sub	di,di
insd