Слайд 2Назначение
Команды INS, INSB, INSW, INSD позволяют несколько автоматизировать операции получения данных из
порта ввода-вывода. По сути эти команды выполняют команду IN, только результат помещается не в регистр, а в ячейку памяти, адресуемую парой регистров ES:(E)DI.
Слайд 3Основные действия
Команда INS:
Ввод из порта в строку. Команда INS как и команда
CMPS не является командой процессора. Когда в тексте программы встречается эта команда, компилятор вычисляет размерность ее операнда и на основании вычислений подставляет на ее место одну из реальных команд процессора INSB, INSW или INSD.
Команда INSB:
Ввод байтов из порта в строку. Пересылает байт данных из заданного регистром DX порта ввода в ячейку памяти по адресу ES:DI. После выполнения пересылки регистр DI увеличивается на 1.
Слайд 4Основные действия
Команда 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)