Иллюстрированный самоучитель по Assembler

M

MOV Пересылка данных

Команда mov замещает первый операнд (приемник) вторым (источником). При этом исходное значение первого операнда теряется. Второй операнд не изменяется. В зависимости от описания операндов, пересылается слово или байт. Если операнды описаны по-разному или режим адресации не позволяет однозначно определить размер операнда, для уточнения размера передаваемых данных в команду следует включить один из атрибутных операторов byte ptr или word ptr. Команда не воздействует на флаги процессора. В зависимости от используемых режимов адресации, команда mov может осуществлять пересылки следующих видов:

  • из регистра общего назначения в регистр общего назначения;
  • из регистра общего назначения в ячейку памяти;
  • из регистра общего назначения в сегментные регистры DS, ES и SS;
  • из ячейки памяти в регистр общего назначения;
  • из ячейки памяти в сегментный регистр;
  • из сегментного регистра в регистр общего назначения;
  • из сегментного регистра в ячейку памяти;
  • непосредственный операнд в регистр общего назначения;
  • непосредственный операнд в ячейку памяти.

Запрещены пересылки из ячейки памяти в ячейку памяти (для этого предусмотрена команда movs), а также загрузка сегментного регистра непосредственным значением, которое, таким образом, приходится загружать через регистр общего назначения:

mov AX,seg mem; Сегментный адрес ячейки mem
mov DS,AX; Загрузка его в регистр DS

Нельзя также непосредственно переслать содержимое одного сегментного регистра в другой. Такого рода операции удобно выполнять с использованием стека:

push DS
pop ES; DS копируется в ES

Примеры:

;В полях данных:
memb db 5.6
memd dd 0; Двухсловная ячейка
;В программном сегменте:
mov DX,AX; Из регистра в регистр
mov AL,memb; Из памяти в регистр
mov AX,0B800h; Непосредственное значение в
;регистр
mov ES,AX; Из регистра в сегментный
;регистр
mov word ptr memd+2,ES; Из сегментного
;регистра в память
mov word ptr memd, 2000; Непосредственное
;значение в память
mov BX,word ptr memb; Слово из памяти в
;регистр (число 0605)
mov DI,word ptr memd; Слово из памяти в
;регистр
mov ES,word ptr memd+2; Слово из памяти в
;сегментный регистр

Иллюстрированный самоучитель по Assembler › Приложение. Система команд процессоров Intel. › M Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример 1:

mov EAX,ESI

Пример 2:

; В полях данных
mem dd 0
;В программном сегменте
mov mem,EBP

386Р+ MOV Пересылка в\из специальных регистров

Этот вариант команды mov (с той же мнемоникой, но другими кодами операций) используется в защищенном режиме и предназначен для обмена данными со специальными регистрами процессора: управляющими CR0…CR3, тестирования TR6 и TR7, а также регистрами отладки DRO…DR7. Один из операндов команды mov должен быть 32-разрядным регистром общего назначения, другим – один из специальных регистров процессора.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.