Флаги не меняются.
Команда:
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 инкрементируются (если признак направления сброшен) или декрементируются (если признак направления установлен),чтобы указатель переместился на следующее слово.
| Операнды | Такт байты (слова) | Обращения | Байты | Пример |
| нет операндов | 26 | 2 | 1 | MOVSW |
| (повтор) | 9+25/rep | 2/rep | 1 | REP 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 ;Производим пересылку