logo

Главная Система команд x86 Базовая система команд CPU MOVSD

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

MOVSD

Переслать двойное слово из строки в строку

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

A4

MOVS m8,m8

Записать в ячейку по адресу ES:(E)DI байт из ячейки с адресом DS:(E)SI

8086

movsb

A5

MOVS m16,m16

Записать в ячейку по адресу ES:(E)DI слово из ячейки с адресом DS:(E)SI

8086

movsw

A5

MOVS m32,m32

Записать в ячейку по адресу ES:(E)DI двойное слово из ячейки с адресом DS:(E)SI

Intel386

movsd

A4

MOVSB

Записать в ячейку по адресу ES:(E)DI байт из ячейки с адресом DS:(E)SI

8086

movsb

A5

MOVSW

Записать в ячейку по адресу ES:(E)DI слово из ячейки с адресом DS:(E)SI

8086

movsw

A5

MOVSD

Записать в ячейку по адресу ES:(E)DI двойное слово из ячейки с адресом DS:(E)SI

Intel386

movsd

Описание:

Команда MOVSD копирует двойное слово и является соответствующим синонимом мнемоники MOVS, которая копирует байт, слово или двойное слово по адресу DS:(E)SI в байт слово или двойное слово по адресу ES:(E)DI. Операнд-назначение всегда адресуется с помощью регистра ES, замещение сегмента для назначения невозможно. Замещение сегмента может быть использовано для операнда-источника (сегментом по умолчанию является DS).

Адреса источника и назначения определяются исключительно через значения индексных регистров (E)SI, (E)DI. Регистры SI и DI используются при 16-битном атрибуте размера адреса, а ESI и EDI — при 32-битном атрибуте размера адреса. Атрибут размера операнда определяет пересылку слова (16-битный атрибут) или двойного слова (32-битный атрибут) командами MOVSW и MOVSD, код операции для которых одинаков.

Мнемоники MOVSB, MOVSW и MOVSD являются синонимами мнемоники MOVS, использующей однобайтные, двухбайтные и четырехбайтные операнды соответственно.

После пересылки данных оба регистра, (E)SI и (E)DI автоматически изменяются. Если флаг DF равен 0 (была выполнена команда CLD), то регистры увеличиваются, если флаг DF равен 1 (была выполнена команда STD), то регистры уменьшаются. Увеличение или уменьшение происходит на 1, если пересылается байт, на 2, если пересылается слово, на 4, если пересылается двойное слово.

Операция:

IF (Команда MOVSD) OR (Команда, работающая с двойными словами)

  THEN OperandSize = 32;

  ELSE OperandSize = 16;

FI;

IF AddressSize = 16

  THEN Использовать SI для source-index и DI для destination-index;

  ELSE (* AddressSize = 32 *)

     Использовать ESI для source-index и EDI для destination-index;

FI;

IF (Команда байтового типа)

  THEN

     [destination-index] = [source-index]; (* Перенос байта *)

     IF DF = 0 THEN IncDec = 1 ELSE IncDec = -1; FI;

  ELSE

     IF OperandSize = 16

     THEN

        [destination-index] = [source-index]; (* Перенос слова *)

        IF DF = 0 THEN IncDec = 2 ELSE IncDec = -2; FI;

     ELSE (* OperandSize = 32 *)

        [destination-index] = [source-index]; (* Перенос двойного слова *)

        IF DF = 0 THEN IncDec = 4 ELSE IncDec = -4; FI;

     FI;

FI;

source-index = source-index + IncDec;

destination-index = destination-index + IncDec;

Особые ситуации защищенного режима:

#GP(0), если результат находится в сегменте, запрещенном для записи, если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

Особые ситуации режима реальной адресации:

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.


Входит в группу команд: Базовая система команд CPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

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