Справочник по языку Ассемблера IBM PC

       

Вывод элемента цепочки в порт ввода-вывода


Данная операция позволяет произвести вывод элементов цепочки в порт ввода-вывода. Она реализуется командой outs, имеющей следующий формат:


outs номер_порта,адрес_источника (Output String) — вывести элементы из цепочки в порт ввода-вывода.

Эта команда выводит элемент цепочки в порт, номер которого находится в регистре dx. Адрес элемента цепочки определяется операндом адрес_источника. Несмотря на то, что цепочка, из которой выводится элемент, адресуется указанием этого операнда, значение адреса должно быть явно сформировано в паре регистров ds:esi/si.


Размер структурных элементов цепочки должен быть согласован с размерностью порта. Он определяется директивой резервирования памяти, с помощью которой выделяется память для размещения элементов цепочки.


После пересылки команда outs производит коррекцию содержимого esi/si на величину, равную размеру элемента цепочки, участвовавшего в операции пересылки. При этом, как обычно, учитывается состояние флага df.

Подобно команде ins, транслятор преобразует команду outs в одну из трех машинных команд без операндов, работающих с цепочками элементов определенного размера:

    outsb (OUTput String Byte) — вывести цепочку байт в порт ввода-вывода;


    outsw (OUTtput String Word) — вывести цепочку слов в порт ввода-вывода;


    outsd (OUTput String Double Word) — вывести цепочку двойных слов в порт ввода- вывода.

В качестве примера рассмотрим фрагмент программы, которая выводит последовательность символов в порт ввода-вывода, соответствующего принтеру (номер 378 (lpt1)).

  .data str_pech        db      'Текст для печати' .code ...         mov     dx,378h         lea     di,str_pech         mov     cx,16 rep     outsb ...

В заключение напомню, что для организации работы с портами недостаточно знать их номера и назначение. Не менее важно знать и понимать алгоритм их работы. Эти сведения можно найти в документации на устройство (но, к сожалению, далеко не всегда). 



Содержание раздела