→ Пошук по сайту       Увійти / Зареєструватися

Команди асемблера для Intel: INS, INSB, INSW, INSD

INS Введення рядка з порту

INSB Введення байта з порту

INSW Введення слова з порту

INSD Введення подвійного слова з порту


Команди призначені для введення даних з порту безпосередньо в пам'ять. Адреса порту указується, як і для команди 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
mem dw 0
;В програмному сегменті
push DS
pop ES ;ES=DS
mov Di,offset mem;ES:DI -> mem
mov Dx,303h ;Адрес порту
insw ;Ввод з порту 16-бітового даного

загрузка...
Сторінки, близькі за змістом