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; Слово из памяти в ;сегментный регистр
Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.
Пример 1:
mov EAX,ESI
Пример 2:
; В полях данных mem dd 0 ;В программном сегменте mov mem,EBP
386Р+ MOV Пересылка в\из специальных регистров
Этот вариант команды mov (с той же мнемоникой, но другими кодами операций) используется в защищенном режиме и предназначен для обмена данными со специальными регистрами процессора: управляющими CR0…CR3, тестирования TR6 и TR7, а также регистрами отладки DRO…DR7. Один из операндов команды mov должен быть 32-разрядным регистром общего назначения, другим – один из специальных регистров процессора.