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

Команди асемблера для Intel: OUTS, OUTSB, OUTSW, OUTSD

OUTS Виведення рядка в порт

OUTSB Виведення байта в порт

OUTSW Виведення слова в порт

OUTSD Виведення подвійного слова в порт

Команди призначені для виведення даних в порт безпосередньо з пам'яті. Адреса порту указується, як і для команди out, в регістрі DX, при цьому завдання адреси порту безпосереднім значенням не допускається. Дані витягуються з пам'яті за адресою, що знаходиться в парі регістрів Ds:esi. Заміна сегменту не допускається. Команда outsb передає в порт 1 байт, команда outsw - 1 слово, команда outsd - 1 подвійне слово, а команда outs може бути використана для передачі байтів, слів і подвійних слів. У останньому випадку розмір завантажуваного даного визначається описом рядка (за допомогою директив db, dw або dd). Після передачі даних регістр ESI отримує позитивний (якщо прапор Df=0) або негативний (якщо прапор Df= 1) приріст. Величина приросту складає 1, 2 або 4 залежно від розміру передаваних даних.

Варіант команди outs має формат

outs DX, рядок

(що не позбавляє від необхідності ініціалізувати регістри Ds:esi адресою рядка).

Якщо пристрій, що адресується через порт, може приймати послідовність даних, то командам outs можна передувати префіксом повторення rep. В цьому випадку в порт пересилається СХ елементів даних заданого розміру.

Команди outs не впливають на прапори процесора.

Приклад 1

; У полях даних
mem dw 0ffh
;В програмному сегменті
mov SI, offset mem;ES:DI ® mem
mov Dx,303h ;Адрес порту
outsb ;Вывод у порт 8-бітовий
;даного

Приклад 2

; У полях даних
string dw 0ffh,1,5,0bh, 0
; У програмному сегменті
mov SI, off set mem;ES:DI -> mem
mov Dx,340h Адреса порту
mov CX, 5 ;Число даних
eld ;Движение за даними вперед
rep outsb ;Последовательный вивід в
;порт п'яти 8-бітових даних

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