MOVSW Пересылка строки из слов

Флаги не меняются.

Команда:

MOVSW

Логика:

(ES:DI) = (DS:SI)
if DF = 0
SI = SI + 2
DI = DI + 2
                     else
SI = SI - 2
DI = DI - 2

Эта команда пересылает слово, расположенное по адресу DS:SI, по адресу ES:DI. После пересылки SI и DI инкрементируются (если признак направления сброшен) или декрементируются (если признак направления установлен),чтобы указатель переместился на следующее слово.

Операнды Такт байты (слова)ОбращенияБайтыПример
нет операндов2621MOVSW
(повтор)9+25/rep2/rep1REP MOVSW

Пример.
Предположим, что строка BUFFER1 была где-то в программе описана следующим образом:

BUFFER1       DB      100 DUP (?)

Тогда следующий пример описывает пересылку 50 слов (100 байтов) из BUFFER1 в BUFFER2:

CLD                		;Двигаемся в прямом направлении
LEA     SI,BUFFER1 		;Адрес исходной строки засылаем в SI
LEA     DI,BUFFER2 		;Адрес строки назначения засылаем в DI
MOV     CX,50      		;CX используем в префиксе REP
                                	 ; пересылаем 50 слов
REP  MOVSW              		;Производим пересылку
Hosted by uCoz