Assembler для начинающих

Флаг направления


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


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


ааааааааааааааааа аааа 300 +-----------+--- LърчрЄхы№ааа 300 +-----------+
ааааааааааааааааааааааа а¦ааа аааа ¦ааааа а шёЄюўэшър аа ¦а аааааа ¦
ааааааааааааааааааааааа а¦ааа аааа ¦ааааа ааа SIааааааааааа аа ¦а аааааа ¦
ааааааааааааааааааааааа а¦ааа аааа ¦ааааааааааааааааа аа ¦а аааааа ¦
ааааааааааа а LёЄюўэшъаа 400 +-----------+--- LърчрЄхы№ааа 400 +-----------+
ааааааааааааааааааааааа а¦ааа аааа ¦ааааа а эрчэрўхэш ааааа аа ¦а аааааа ¦
ааааааааааааааааааааааа а¦ааа аааа ¦ааааа ааа DIааааааааааа аа ¦а аааааа ¦
ааааааааааааааааааааааа а¦ааа аааа ¦ааааааааааааааааа аа ¦а аааааа ¦
аааа =рчэрўхэшх а ааааа500 +-----------+ааааааа аааааа 500 +-----------+<-- LърчрЄхы№
ааааааааааааааааааааааа а¦ааа аааа ¦ааааааааааааааааа аа ¦а аааааа ¦ааа шёЄюўэшър
ааааааааааааааааааааааа а¦ааа аааа ¦ааааааааааааааааа аа ¦а а ааааа¦
ааааааааааааааааааааааа а¦ааа аааа ¦ааааааааааааааааа аа ¦а аааааа ¦
ааааааааааааааааа аааа 600 +-----------+ааааааа аааааа 600 +-----------+<-- LърчрЄхы№
 
ааааааааааа Lшу. 3.16 Lыру эряЁртыхэш 
 
ааааа T яЁшьхЁх эр Lшу.3.16(р) єърчрЄхыш шёЄюўэшър ш Ёхчєы№ЄрЄр
ааа єёЄрэютыхэv эр эрўрыр ёююЄтхЄёЄтє¦•шї сыюъют: єърчрЄхы№ шёЄюўэшър
ааа эр 300H, р єърчрЄхы№ Ёхчєы№ЄрЄр эр 400H. Lыру эряЁртыхэш  т яЁшьхЁх
ааа ёсЁю°хэ, Єръ, ўЄюсv єърчрЄхыш єтхышўштрышё№ яюёых ърцфющ яхЁхёvыъш.
ааа ¦ръ яюърчрэю эр Ёшёєэъх, яюёых яхЁхёvыъш ё яюью•№¦ ёЄЁюъютющ
ааа юяхЁрЎшш 100H срщЄ, єърчрЄхы№ шёЄюўэшър яхЁхьхёЄшЄё  эр сыюъ
ааа Ёхчєы№ЄрЄр, р ¤Єр юсырёЄ№ сыюър єцх чряюыэхэр фрээvьш яюёых
ааа яхЁхёvыъш. ¦хЁхёvыър яюёыхфэшї 100H срщЄ сєфхЄ эхяЁртшы№эющ, Єръ
ааа ъръ яюЄхЁ эv шёїюфэvх фрээvх сыюър.
 
ааааа T ўрёЄш (b) яЁшьхЁр єърчрЄхыш ш шёЄюўэшър, ш Ёхчєы№ЄрЄр
ааа єёЄрэютыхэv эр ъюэЎv сыюъют. Lыру эряЁртыхэш  єёЄрэютыхэ Єръ, ўЄю
ааа ёюфхЁцшьюх єърчрЄхыхщ єьхэ№°рхЄё  яюёых яхЁхёvыъш. ¦Ёш Єръюь
ааа ёяюёюсх фрээvх яхЁхёvыр¦Єё  тхЁэю.
 
ааааа ¦ЁюуЁрььv ттюфр-тvтюфр фы  IBM PC фр¦Є їрЁръЄхЁэvщ яЁшьхЁ
ааа шёяюы№чютрэш  Їырур эряЁртыхэш  фы  яхЁхьх•хэш  шчюсЁрцхэш  эр
ааа ¤ъЁрэх фшёяых . ¦ЁюуЁрььр ттюфр-тvтюфр шёяюы№чєхЄ ъюьрэфv яхЁхёvыъш
ааа ёЄЁюъ ьшъЁюяЁюЎхёёюЁр 8088 фы  яхЁхёvыъш фрээvї тэєЄЁш сєЇхЁр
ааа фшёяых . ¦юуфр яЁюуЁрььр яхЁхфтшурхЄ шчюсЁрцхэшх эр ¤ъЁрэх ттхЁї,
ааа ъюьрэфv яхЁхёvыр¦Є фрээvх т ьхэ№°шх рфЁхёр ярь Єш. ¦юуфр яЁюуЁрььр
ааа юяєёърхЄ ёшьтюыv эр ¤ъЁрэх тэшч, ъюьрэфv яхЁхёvыр¦Є фрээvх т
ааа сюы№°шх рфЁхёр ярь Єш. T ърцфюь ёыєўрх яЁюуЁрььр єёЄрэртыштрхЄ шыш
ааа ёсЁрёvтрхЄ Їыру эряЁртыхэш  т ёююЄтхЄёЄтшш ё эряЁртыхэшхь
ааа яхЁхёvырхьvї фрээvї.

Содержание раздела