На главную Назад
Добро пожаловать, уважаемый посетитель!

Может показаться удобным использовать команды LODS и STOS для

пересылки данных из одного места в другое, но для этой цели

существует другая команда, пересылка строки MOVS.Эта команда

подобна комбинации команд LODS и STOS.Она берет данные из пары

регистров [DS:SI], помещает их в пару регистров [ES:DI], и изменяет

как регистр SI, так и регистр DI, чтобы они указывали на следующую

ячейку в каждой строке.Команда MOVS делает это одна, и не

загружает аккумулятор во время пересылки.Команда MOVS делает

сочетание LODS и STOS более быстрым и дающим меньше побочных

эффектов.

 

Команда MOVS указывает два операнда памяти. Только MOVS и еще

одна строковая команда CMPS работают с двумя операндами памяти. Все

остальные команды требуют, чтобы один или оба операнда находились в

регистре микропроцессора. Как и команды LODS и STOS, команда MOVS

работает как с байтами, так и со словами. Поскольку строковые

команды имеют дело с жестко заданными адресами, для определения

типов служат только операнды, написанные программистом. Команда

должна иметь оба операнда, и оба они должны быть одинаковых типов,

иначе программист может указать тип пересылки частью кода операции,

т.е. команда MOVSB и случае байтовых строк или команда MOVSW для

строк, состоящих из слов. Если в программе используется основная

форма, команда MOVS, ассемблер проверяет переменные на правильность

сегментной адресации, а также проверяет их типы.

 

Комбинация команды MOVS с префиксом REP дает эффективную

команду пересылки блока. Имея счетчик в регистре CX и показывающий

направление пересылки флаг направления, команда REP MOVS пересылает

данные из одного места памяти в другое очень быстро.

Микропроцессор, выполняющий команду REP MOVS, пересылает данные с

максимально возможной скоростью. Он больше не выбирает никакие

команды, поскольку единственное, что делается во время такой

пересылки - это пересылка.

 

Установка флага направления критична для правильной работы

команды REP MOVS. Различные виды установки флага направления

обсуждались в гл.3 именно на примере команды пересылки, и в

программе необходимо придерживаться рекомендаций, данных в этой

главе, особенно, если поля источника и результата перекрываются.


 

Mail.ru