Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






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

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

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

Пример. Фрагмент программы, которая выводит последовательность символов в порт ввода-вывода, соответствующего, принтеру (номер 378(lptl)).

.data

Str_pech db “Текст для печати! ”

.code

mov dx, 378h

lea di, str_pech

mov cx, 16

rep outsb

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

 

Итоги:

- Система команд микропроцессора имеет очень интересную группу команд, позволяющих производить действия над блоками элементов до 64 Кбайт или 4 Гбайт, в зависимости от установленной разрядности адреса use16 или use32.

- Эти блоки логически могут представлять собой последовательности элементов с любыми значениями, хранящимися в памяти в виде двоичных кодов. Единствешюе ограничение состоит в том, что размеры элементов этих блоков памяти имеют фиксированный размер 8, 16 или 32 бита.

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

- Каждая операция-примитив представлена тремя разными машинными командами и одной псевдокомандой, которая преобразуется транслятором в одну из трех вышеупомянутых машинных команд. Это преобразование происходит в зависимости от типа указанных в ней операндов.

- Микропроцессор всегда предполагает, что строка-приемник находится в дополнительном сегменте (адресуемом посредством сегментного регистра es), a строка-источник — в сегменте данных (адресуемом посредством сегментного регистра ds).

- Микропроцессор адресует строку-приемник через регистр edi/di, а строку-источник — через регистр esi/si.

- Допускается переопределять сегмент для строки-источника, для строки-приемника этого делать нельзя.

- Особенность работы цепочечных команд состоит в том, что они автоматически выполняют приращение или уменьшение содержимого регистров edi/di и esi/si в зависимости от используемой цепочечной команды. Что именно происходит с этими регистрами, определяется состоянием флага df, которым управляют команды сld и std. Значение, на которое изменяется содержимое индексных регистров, определяется типом элементов строки или кодом операции цепочечной команды.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.