Флаги не меняются.
Команда:
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 ;Производим пересылку