Блочная пересылка

April 9, 2010 by admin Комментировать »

В дополнение к командам IN и OUT, пересылающим между процессором и устрой­ством ввода-вывода один информационный элемент, в архитектуре системы ко­манд IA-32 определены две команды блочной пересылки: REPINS и REPOUTS. Они предназначены для последовательной передачи блоков данных между памя­тью и устройством ввода-вывода. Суффикс S в кодах этих операций означает string (строка), а префикс REP — repeat (повторять [пересылку элементов, пока не будет переслан весь блок данных]). Параметры, определяющие операцию пе­ресылки, задаются не в командах REPINS и REPOUTS, а в регистрах DX (16-раз­рядный адрес устройства ввода-вывода), EDI (32-разрядный адрес начала блока в памяти) и ЕСХ (количество пересылаемых элементов данных).

Суффикс В или D в мнемоническом обозначении кода операции определяет размер элемента — байт или двойное слово. Команда REPINSB пересылает блок байтов, а команда REPINSD — блок двойных слов. Команды блочной пересылки работают так: после пересылки каждого элемента данных значение индексного ре­гистра EDI увеличивается на 1 или 4, в зависимости от размера элемента данных, а значение регистра ЕСХ уменьшается на 1. Операции пересылки повторяются до тех пор, пока содержимое регистра-счетчика ЕСХ не станет равным 0. Таким об­разом, каждая команда блочной пересылки эквивалентна целому программному циклу с регистром ЕСХ в качестве счетчика цикла.

Для примера рассмотрим ситуацию, когда блок из 128 двойных слов пересы­лается с диска в основную память. Двойное слово данных содержится в адресуе­мом буферном регистре данных дискового устройства по адресу DISKDATA. Блок данных должен размещаться в памяти начиная с адреса MEMBLOCK. В ре­гистр счетчика ЕСХ необходимо записать начальное значение 128. Для выполне­ния пересылки можно применить последовательность команд

LEA EDI.MEMBLOCK

MOV DX.DISKDATA MOV ЕСХД28 REPINSD

В ней предполагается, что метка MEMBLOCK объявлена как адресная метка, a DISKDATA — как метка данных, определенная директивой EQU и представ­ляющая 16-разрядный адрес буферного регистра данных устройства.

Теперь вы знаете, как выполняется изолированный ввод-вывод и как при по­мощи одной команды можно произвести пересылку блока, состоящего из боль­шого количества элементов данных, с использованием регистров-счетчиков адре­са (EDI) и элемента данных (ЕСХ).

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты