Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Команды пересылки данных




Основная команда пересылки данных – команда MOV (от англ. MOVe – перенести). Формат команды показан на рис.7.1.

 

Рис. 7.1. Формат команды MOV

 

Данная команда копирует значение операнда-источника в операнд-приемник. На состояние флагов выполнение команды влияния не оказывает. Пример записи команды:

 

MOV AX,BX

MOV CX,field1

MOV DX,[BX]

 

Командой MOV нельзя пересылать данные из одной области памяти в другую. Для этого необходимо использовать промежуточный регистр общего назначения. Для записи значения в сегментный регистр также необходимо использовать промежуточный регистр общего назначения или стек. В команде MOV нельзя использовать сегментный регистр CS в качестве операнда назначения. Так как пара регистров СS:IP содержит физический адрес команды, которая должна выполняться следующей, то при модификации регистра CS фактически реализуется не пересылка, а переход на другую команду, что недопустимо.

Очень важно, чтобы операнды команды MOV совпадали по размеру. Однако при работе с памятью (при косвенной адресации) возникает сложность. Пусть в регистре BX содержится адрес некоторых данных, которые необходимо записать в регистр AX. Команда MOV в данном случае будет записываться как

 

MOV AX,[BX]

 

Однако в данном случае непонятно, что адресует регистр BX в памяти – байт, слово и т.д. Транслятор сам принимает решение по размеру большего операнда, но в некоторых случаях может быть получено предупреждающее сообщение о несовпадении типов операндов.

Для переопределения и согласования размеров операндов необходимо использовать оператор ptr. Формат оператора приведен на рис.7.2.

 

Рис. 7.2. Формат оператора ptr

 

Тип может принимать одно из следующих значений: byte, word, dword, qword, short (для переходов).

Правильно команду пересылки необходимо записывать следующим образом:

 

MOV AX, word ptr [BX];Если BX адресует слово в памяти

MOV byte ptr [BX],27;Если BX адресует байт в памяти

 

per1 DD 4AFE7BA1H

MOV AL,byte ptr per1+1;Пересылка старшего байта младшего слова из;двойного слова (7BH)

 

В последнем примере реализовано обращение только к старшему байту младшего слова переменной. Если попытаться сделать это командой MOV AL,per1+1, то транслятор выведет сообщение о несовпадении типов операндов (ошибка).

Для обмена значениями двух операндов можно использовать несколько команд MOV, а можно использовать команду XCHG (от англ. eXCHanGe – обмен), формат которой приведен на рис.7.3.

 

Рис. 7.3. Формат команды XCHG

 

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

 

XCHG AX,BX;Обменять содержимое регистров AX и BX

XCHG DX, word ptr [SI];Обменять содержимое регистра AX

;и слова в памяти по смещению, хранящемуся в регистре SI

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 520 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

2307 - | 2155 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.