Команды пересылки данных
Команды пересылки данных осуществляют обмен данными и адресами между регистрами и ячейками памяти или портами ввода-вывода. Эти команды разделены на четыре подгруппы: команды общего назначения, команды ввода-вывода, команды пересылки адреса и команды пересылки флагов.
Команды общего назначения
Основная команда общего назначения MOV (move - переслать) может пересылать байт или слово между регистром и ячейкой памяти или между двумя регистрами. Она может также пересылать непосредственно адресуемое значение в регистр или в ячейку памяти.
Команда MOV имеет следующий формат:
MOV приемник, источник
В ней допустимо большинство из возможных сочетаний операндов.
Приведем несколько примеров:
MOV AX,TABLE ; Пересылка иэ памяти в регистр
MOV TABLE,AX ; и наоборот
MOV ES:[BX],АХ ; Можно заменить используемый регистр сегмента
MOV DS,AХ ; Пересылка между 16-битовыми регистрами
MOV BL.AL ; Пересылка между 8-битовыми регистрами
MOV CL,-30 ; Пересылка константы в регистр
MOV DE5T,25H ; или в память
В команде MOV исключаются следующие сочетания операндов:
1. Вы не можете осуществить непосредственную пересылку данных из одной ячейки памяти в другую. Чтобы выполнить такую пересылку, данные источника надо загрузить в регистр общего назначения, а затем запомнить содержимое этого регистра в приемнике. Например, если POUNDS и WEIGHT - переменные, находящиеся в памяти, то для пересылки значения из одной переменной в другую можно воспользоваться командами
MOV AX,POUNDS
MOV WEIGHT,AX
2. Вы не можете загрузить непосредственно адресуемый операнд в регистр сегмента. Как и в случае 1, сначала надо загрузить его в регистр общего назначения. Например, следующие команды загружают номер блока сегмента данных (DATA_SEG) в регистр DS:
MOV HX,DATA_SEG
MOV DS,AX
Подобные команды обычно сопутствуют оператору ASSUME в сегменте команд. Они указывают Ассемблеру, где размещен сегмент данных.
3. Вы не можете непосредственно переслать значение одного регистра сегмента в другой. Делайте подобные пересылки через регистр общего назначения. Например, чтобы регистр DS указывал на тот же сегмент, что и регистр ES, воспользуйтесь командами
MOV AX,ES
MOV DS,AX
(Для выполнения этой операции можно воспользоваться командами PUSH и POP, которые будут описаны в следующем разделе.)
4. Вы не можете использовать регистр CS в качестве приемника в команде пересылки.