Пересылка байта | Пересылка слова | Пересылка двух слов |
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) следующими особенностями:
Назначение инструкций пересылки, имена которых состоят из пяти букв, показано в табл. 3.2. Местонахождение операндов у них фиксировано, и изменить его нельзя. Один из операндов может находиться в регистре-аккумуляторе, а другой или оба — в оперативной памяти. Последняя буква имени инструкции (b, w или d) указывает, какой из этих регистров является аккумулятором — al, ах или еах.
Адрес операнда, находящегося в оперативной памяти, задается в одной из двух пар регистров — ds:si или es:di. Содержимое этой пары должно быть определено в задаче до выполнения инструкций пересылки.