Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Вывод элемента цепочки в порт ввода-вывода ⇐ ПредыдущаяСтр 7 из 7
Данная операция позволяет произвести вывод элементов цепочки в порт ввода-вывода. Она реализуется командой 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. Значение, на которое изменяется содержимое индексных регистров, определяется типом элементов строки или кодом операции цепочечной команды.
|