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






    Одной из функций, в которой в наборе команд микропроцессора 8088
    уделено особое внимание, является обработка строк.      Строка символов
    или чисел, с которыми программа работает, как с группой, является
    обычным типом данных.  Программа пересылает строку из одного места
    в другое, сравнивает ее с другими строками, а также ищет в ней
    заданное значение.  Обычным типом данных является строка символов.
    Программа представляет каждое слово, предложение либо другую
    структуру строкой символов в памяти.  Функции редактирования,
    например, в большой степени используют операции поиска и пересылки.
    Строковые команды микропроцессора 8088 выполняют эти операции с
    минимальными программными затратами, а также при минимальном
    времени исполнения.
 
      Сначала давайте обсудим принципы работы со строками. Программа
    может выполнять строковые операции как над байтами, так и над
    словами; отдельные элементы строк могут иметь 8 либо 16 бит.
    Строковые команды не используют способы адресации, используемые
    остальными командами обработки. Фактически строковые команды очень
    конкретны в адресации и не допускают каких=либо вариаций. Строковые
    команды адресуют операнды комбинациями регистров DS:SI либо ES:DI.
    Операнды источника используют регистровую пару DS:SI, а операнды
    результата регистровую пару ES:DI, откуда и названия
    индекс=регистров источника и результата. Все строковые команды
    имеют встроенную коррекцию адреса после выполнения операции. Строка
    состоит из многих элементов, но строковые команды обработки строк
    могут работать только с одним элементом в каждый момент времени,
    поэтому программа тоже работает со строкой по одному элементу в
    момент времени. Автоматическое увеличение или уменьшение адреса
    дает возможность быстрой обработки строковых данных. Флаг
    направления в регистре состояния управляет направлением обработки.
    Когда он установлен равным 1, адрес уменьшается, если флаг сброшен
    в 0, то увеличивается. Размер операнда определяет количество
    увеличений=уменьшений. Байтовые команды обработки строк изменяют
    адрес на 1 после каждой операции, а команды обработки строк над
    словами изменяют адрес на 2. Тем самым после выполнения операции
    указатель ссылается на следующий элемент строки.