Assembler - язык неограниченных возможностей


Строковые операции


Все команды для работы со строками считают, что строка-источник находится по адресу DS:SI (или DS:ESI), то есть в сегменте памяти, указанном в DS со смещением в SI, а строка-приемник — соответственно в ES:DI (или ES:EDI). Кроме того, все строковые команды работают только с одним элементом строки (байтом, словом или двойным словом) за один раз. Для того чтобы команда выполнялась над всей строкой, необходим один из префиксов повторения операций.

  • Префикс:
  • REP
  • Назначение:
  • Повторять
  • Префикс:
  • REPE
  • Назначение:
  • Повторять, пока равно
  • Префикс:
  • REPNE
  • Назначение:
  • Повторять, пока не равно
  • Префикс:
  • REPZ
  • Назначение:
  • Повторять, пока ноль
  • Префикс:
  • REPNZ
  • Назначение:
  • Повторять, пока не ноль
  • Процессор:
  • 8086

    Все эти команды — префиксы для операций над строками. Любой из префиксов выполняет следующую за ним команду строковой обработки столько раз, сколько указано в регистре ЕСХ (или СХ, в зависимости от разрядности адреса), уменьшая его при каждом выполнении команды на 1. Кроме того, префиксы REPZ и REPE прекращают повторения команды, если флаг ZF сброшен в 0, и префиксы REPNZ и REPNE прекращают повторения, если флаг ZF установлен в 1. Префикс REP обычно используется с командами INS, OUTS, MOVS, LODS, STOS, а префиксы REPE, REPNE, REPZ и REPNZ — с командами CMPS и SCAS. Поведение префиксов не с командами строковой обработки не определено.

  • Команда:
  • MOVS приемник, источник
  • Назначение:
  • Копирование строки
  • Процессор:
  • 8086
  • Команда:
  • MOVSB
  • Назначение:
  • Копирование строки байт
  • Процессор:
  • 8086
  • Команда:
  • MOVSW
  • Назначение:
  • Копирование строки слов
  • Процессор:
  • 8086
  • Команда:
  • MOVSD
  • Назначение:
  • Копирование строки двойных слов
  • Процессор:
  • 80386

    Копирует один байт (MOVSB), слово (MOVSW) или двойное слово (MOVSD) из памяти по адресу DS:ESI (или DS:SI, в зависимости от разрядности адреса) в память по адресу ES:EDI (или ES:DI). При использовании формы записи MOVS ассемблер сам определяет из типа указанных операндов (принято указывать имена копируемых строк, но можно использовать любые два операнда подходящего типа), какую из трех форм этой команды (MOVSB, MOVSW или MOVSD) выбрать. Используя MOVS с операндами, можно заменить регистр DS на другой с помощью префикса замены сегмента (ES:, GS:, FS:, CS:, SS:), регистр ES заменить нельзя. После выполнения команды регистры ESI (SI) и EDI (DI) увеличиваются на 1, 2 или 4 (если копируются байты, слова или двойные слова), если флаг DF = 0, и уменьшаются, если DF = 1. При использовании с префиксом REP команда MOVS выполняет копирование строки длиной в ЕСХ (или СХ) байт, слов или двойных слов.

  • Команда:
  • CMPS приемник, источник
  • Назначение:
  • Сравнение строк
  • Процессор:
  • 8086
  • Команда:
  • CMPSB
  • Назначение:
  • Сравнение строк байт
  • Процессор:
  • 8086
  • Команда:
  • CMPSW
  • Назначение:
  • Сравнение строк слов
  • Процессор:
  • 8086
  • Команда:
  • CMPSD
  • Назначение:
  • Сравнение строк двойных слов
  • Процессор:
  • 80386
    <


    Начало  Назад  Вперед