Последним флагом в регистре флагов является флаг направления DF.
Набор команд микропроцессора 8088 содержит несколько команд
обработки строк, которые работают с большими блоками данных. Эти
команды обработывают блоки данных побайтно или по одному слову
памяти за раз. Индексные регистры указывают на блоки данных. После
обработки байта или слова процессор изменяет индексный регистр так,
чтобы он указывал на следующий элемент блока.
Строковые операции используют флаг направления для определения
направления продвижения по блоку данных. Если флаг направления
сброшен в 0, команды обработки строк увеличивают значение
индексного регистра, а если флаг направления установлен в 1, то они
уменьшают это значение. Флаг направления позволяет одному набору
строковых команд обслуживать оба направления в зависимости от
установки флага. В некоторых случаях желательно пересылать строку с
увеличением адресов, а в других лучше всего использовать уменьшение
адреса.
В качестве примера предположим, что в программе используется
команда пересылки строк для пересылки блока данных на новое место.
Если программа пересылает блок, с большего адреса памяти на
меньший, она сбрасывает флаг направления, чтобы увеличивать
значения индексных регистров после каждой пересылки; если же
пересылка производится на больший адрес памяти, флаг направления
устанавливается в 1, показывая уменьшение индексных регистров. В
случае большинства пересылок не имеет значения, как именно
установлен этот флаг. Но если конечное положение блока перекрывает
его начальное положение, а флаг направления уствновлен неверно, то
информация в блоке будет во время пересылки испорчена.
Рисунок 3.16 иллюстрирует пример пересылки блоков. Исходный
блок данных имеет длину 200H байт и расположен от 300H до 4FFH.
Нужно переслать его на новое место, расположив от 400H до 5FFH;
исходное и результирующее поля перекрываются.