Слайд 2

Назначение

Команды INS, INSB, INSW, INSD позволяют несколько автоматизировать операции получения данных из

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

Слайд 3

Основные действия

Команда INS:
Ввод из порта в строку. Команда INS как и команда

Основные действия Команда INS: Ввод из порта в строку. Команда INS как
CMPS не является командой процессора. Когда в тексте программы встречается эта команда, компилятор вычисляет размерность ее операнда и на основании вычислений подставляет на ее место одну из реальных команд процессора INSB, INSW или INSD.
Команда INSB:
Ввод байтов из порта в строку. Пересылает байт данных из заданного регистром DX порта ввода в ячейку памяти по адресу ES:DI. После выполнения пересылки регистр DI увеличивается на 1.

Слайд 4

Основные действия

Команда INSW:
Ввод 2-байтовых значений из порта в строку. Пересылает слово данных

Основные действия Команда INSW: Ввод 2-байтовых значений из порта в строку. Пересылает
из заданного регистром DX порта ввода в ячейку памяти по адресу ES:DI. После выполнения пересылки регистр DI увеличивается на 2.
Команда INSD:
Ввод 4-байтовых значений из порта в строку. Пересылает байт данных из заданного регистром DX порта ввода в ячейку памяти по адресу ES:DI. После выполнения пересылки регистр DI увеличивается на 4.

Слайд 5

Пример реализации

Выбор команды будет зависеть от того, какое значение нужно передать из

Пример реализации Выбор команды будет зависеть от того, какое значение нужно передать
порта байт, 2-байт, 4-байт или строку.
Со строчкой все легко:
ins es:str1, dx
А с байтами в зависимости от кол-во байт:
mov dx,03DFh
sub di,di
in(s/b/w/d)