Меню сайта

Урок 41. Флаг направления

Последним флагом в регистре флаговявляется флаг направления DF.
— — — Набор команд микропроцессора 8088 содержитнесколько команд
— — — обработки строк, которые работают сбольшими блоками данных. Эти
— — — команды обработывают блоки данных побайтноили по одному слову
— — — памяти за раз. Индексные регистрыуказывают на блоки данных. После
— — — обработки байта или слова процессоризменяет индексный регистр так,
— — — чтобы он указывал на следующий элементблока.

— — — — — Строковые операции используют флагнаправления для определения
— — — направления продвижения по блоку данных.Если флаг направления
— — — сброшен в 0, команды обработки строкувеличивают значение
— — — индексного регистра, а если флагнаправления установлен в 1, то они
— — — уменьшают это значение. Флаг направленияпозволяет одному набору
— — — строковых команд обслуживать обанаправления в зависимости от
— — — установки флага. В некоторых случаяхжелательно пересылать строку с
— — — увеличением адресов, а в других лучше всегоиспользовать уменьшение
— — — адреса.

— — — — — В качестве примера предположим, что впрограмме используется
— — — команда пересылки строк для пересылкиблока данных на новое место.
— — — Если программа пересылает блок, с большегоадреса памяти на
— — — меньший, она сбрасывает флаг направления,чтобы увеличивать
— — — значения индексных регистров после каждойпересылки- если же
— — — пересылка производится на больший адреспамяти, флаг направления
— — — устанавливается в 1, показывая уменьшениеиндексных регистров. В
— — — случае большинства пересылок не имеетзначения, как именно
— — — установлен этот флаг. Но если конечноеположение блока перекрывает
— — — его начальное положение, а флагнаправления уствновлен неверно, то
— — — информация в блоке будет во времяпересылки испорчена.

— — — — — Рисунок 3.16 иллюстрирует пример пересылкиблоков. Исходный
— — — блок данных имеет длину 200H байт ирасположен от 300H до 4FFH.
— — — Нужно переслать его на новое место,расположив от 400H до 5FFH-
— — — исходное и результирующее поля перекрываются.

— — — — — — — — — — — — — — — — — — — — — 300 ГДДДДДДДДДДДЕДДД Указатель — — — 300 ГДДДДДДДДДДДґ
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — источника — — і — — — — — — — і
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — — — SI — — — — — — — — — — — — — і — — — — — — — і
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — — — — — — — — — — — — — — і — — — — — — — і
— — — — — — — — — — — -Источник — — 400 ГДДДДДДДДДДДЕДДДУказатель — — — 400 ГДДДДДДДДДДДґ
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — назначения — — — — — — — і — — — — — — — і
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — — — DI — — — — — — — — — — — — — і — — — — — — — і
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — — — — — — — — — — — — — — і — — — — — — — і
— — — — Назначение — — — — — -500 ГДДДДДДДДДДДґ — — — — — — — — — — — — -500 ГДДДДДДДДДДДґ&lt— Указатель
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — — — — — — — — — — — — — — і — — — — — — — і — — -источника
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — — — — — — — — — — — — — — і — — — — — — -і
— — — — — — — — — — — — — — — — — — — — — — — -і — — — — — — — і — — — — — — — — — — — — — — — — — — — і — — — — — — — і
— — — — — -&nb
sp- — — — — — — — — — — — — — — 600 ГДДДДДДДДДДДґ — — — — — — — — — — — — — 600 ГДДДДДДДДДДДґ&lt— Указатель

— — — — — — — — — — — Фиг. 3.16 Флаг направления

— — — — — В примере на Фиг.3.16(а) указателиисточника и результата
— — — установлены на начала соответствующихблоков: указатель источника
— — — на 300H, а указатель результата на 400H.Флаг направления в примере
— — — сброшен, так, чтобы указателиувеличивались после каждой пересылки.
— — — Как показано на рисунке, после пересылки спомощью строковой
— — — операции 100H байт, указатель источникапереместится на блок
— — — результата, а эта область блока ужезаполнена данными после
— — — пересылки. Пересылка последних 100H байтбудет неправильной, так
— — — как потеряны исходные данные блока.

— — — — — В части (b) примера указатели и источника,и результата
— — — установлены на концы блоков. Флагнаправления установлен так, что
— — — содержимое указателей уменьшается послепересылки. При таком
— — — способе данные пересылаются верно.

— — — — — Программы ввода-вывода для IBM PC даютхарактерный пример
— — — использования флага направления дляперемещения изображения на
— — — экране дисплея. Программа ввода-выводаиспользует команды пересылки
— — — строк микропроцессора 8088 для пересылкиданных внутри буфера
— — — дисплея. Когда программа передвигаетизображение на экране вверх,
— — — команды пересылают данные в меньшие адресапамяти. Когда программа
— — — опускает символы на экране вниз, командыпересылают данные в
— — — большие адреса памяти. В каждом случаепрограмма устанавливает или
— — — сбрасывает флаг направления в соответствиис направлением
— — — пересылаемых данных.

Категория: Программирование на Ассемблере | Дата: 14.02.13

Меню раздела
Блок