-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||A4 MOVS m8,m8 7 Пересылка байта || [(E)SI] в ES:[(E)DI] ||A5 MOVS m16,m16 7 Пересылка слова || [(E)SI] в ES:[(E)DI] ||A5 MOVS m32,m32 7 Пересылка двойного слова || [(E)SI] в ES:[(E)DI] ||A4 MOVSB 7 Пересылка байта || DS:[(E)SI] в ES:[(E)DI] ||A5 MOVSW 7 Пересылка слова || DS:[(E)SI] в ES:[(E)DI] ||A5 MOVSD 7 Пересылка двойного слова || DS:[(E)SI] в ES:[(E)DI] |----------------------------------------------------------------- Работа команды IF (команда = MOVSD) OR (команда имеет операнды -двойные слова)THEN OperandSize <- 32;ELSE OperandSize <- 16;IF AddressSize = 16THEN использовать SI как индекс-источника и DI как индекс-назначения;ELSE (* AddressSize = 32 *) использовать ESI как индекс-источника и EDI как индекс-назначения;FI;IF байтовый тип командыTHEN [индекс-назначения] <- [индекс-источника];(* Назначение байта *) IF DF = 0 THEN IncDec <- 1 ELSE IncDec <- -1; FI;ELSE IF OperandSize = 16 THEN [индекс-назначения] <- [индекс-источника];(*Назначение слова*) IF DF = 0 THEN IncDec <- 2 ELSE IncDec <- -2; FI; ELSE [индекс-назначения] <- [индекс-источника];(*Назначение двойного слова*) IF DF = 0 THEN IncDec <- 4 ELSE IncDec <- -4; FI; FI;FI;индекс-источника <- индекс-источника + IncDec;индекс-назначения <- индекс-назначения + IncDec; Описание Команда MOVS копирует байт или слово из [(E)SI] в байт или словов ES:[(E)DI]. Операнд назначения должен адресоваться из регистраES: переопределение сегмента для операнда назначения невозможно.Переопределение сегмента может быть использовано дляоперанда-источника (исходного операнда): по умолчаниюпринимается регистр DS. Адрес операндов источника и назначения определяется исключительносодержимым регистров (E)SI и (E)DI. Перед выполнением команды MOVS выдолжны загрузить в регистры (E)SI и (E)DI правильные значения. КомандыMOVS, MOVSW и MOVSD являются синонимами команды MOVS для работы с байтами,словами и двойными словами, соответственно.После пересылки данных происходит автоматическое продвижение регистров(E)SI и (E)DI. Если флаг DF равен 0 (была выполнена команда CLD), товыполняется инкремент регистров; если же флаг DF равен 1 (была выполненакоманда STD), то выполняется декремент регистров. Регистрыинкрементируются или декрементируются на единицу, если выполняласьпересылка байта, на 2, если выполнялась пересылка слова, и на 4 - двойногослова.Команде MOVS может предшествовать префикс REP для пересылки сразу CXбайтов или слов. Подробности об этом см. в описании префикса REP. Изменяемые флагиОтсутствуютИсключения защищенного режима #GP(0), если назначением является сегмент, недоступный для записи; #GP(0)в случае недопустимого исполнительного адреса операнда памяти в сегментахCS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS;#PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки кпамяти при текущем уровне привилегированности, равном 3. Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев. #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3.