Графические устройства

         

Пересылка из памяти в память



Таблица 3.1. Пересылка из памяти в память



Пересылка байта Пересылка слова Пересылка двух слов
mov al, fs:[di] mov ax, fs:[di] mov eax, fs:[di]
mov gs:[si], al mov gs:[si], ax mov gs:[si], eax

При записи операндов команды mov можно использовать имена всех сегментных регистров: cs, ds, es, fs, gs и ss. Если сегментный регистр не указан явно, то подразумевается, что это ds. В сегментном регистре должно находиться конкретное значение сегмента обычной, расширенной или видеопамяти. Смещение (относительный адрес) байта, слова или двойного слова в этом сегменте, чаще всего, указывается в индексном регистре, имя которого заключается в квадратные скобки (это признак адреса). В табл. 3.1 при чтении из памяти полный адрес операнда задается в регистрах fs:di, а при записи в память — в регистрах gs:si.

Строковые инструкции lods, movs и stos отличаются от команды пересылки (mov) следующими особенностями:

  • имя инструкции может содержать дополнительную пятую букву — ь, w или d, указывающую количество пересылаемых байтов (1,2 или 4);
  • если имя инструкции содержит пять букв, то операнды не указываются, их местонахождение определено по умолчанию и зависит от инструкции;
  • после выполнения соответствующей пересылки содержимое индексных регистров, содержащих адреса операндов, увеличивается или уменьшается;
  • увеличение или уменьшение адресов операндов зависит от состояния специального признака направления пересылки (direction flag);
  • только перед строковой инструкцией может быть указана специальная команда rep, вызывающая ее многократное повторение.

Назначение инструкций пересылки, имена которых состоят из пяти букв, показано в табл. 3.2. Местонахождение операндов у них фиксировано, и изменить его нельзя. Один из операндов может находиться в регистре-аккумуляторе, а другой или оба — в оперативной памяти. Последняя буква имени инструкции (b, w или d) указывает, какой из этих регистров является аккумулятором — al, ах или еах.

Адрес операнда, находящегося в оперативной памяти, задается в одной из двух пар регистров — ds:si или es:di. Содержимое этой пары должно быть определено в задаче до выполнения инструкций пересылки.



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