Перемещение данных


Итак, вы уже получили довольно обширное представление о при-роде языка Ассемблера, основных его концепциях и структуре прог-рамм на Ассемблере. Теперь, когда вы усвоили основы, можно сосре-доточить внимание на инструкциях языка Ассемблера, образующих ту часть программы на Ассемблере, которая и указывает процессору 8086 на необходимость выполнения конкретных действий. Давайте начнем с самой основной операции Ассемблера — перемещения данных.

Данные в процессоре 8086 перемещаются с помощью инструкции MOV. В действительности MOV (от слова переместить) — это не сов-сем удачное название данной инструкции. Более удачным было бы название COPY (копировать), так как инструкция MOV на самом деле записывает копию операнда-источника в операнд-приемник. Например, инструкции:

mov ax,0

mov bx,9

mov ax,bx

сначала записывают в регистр AX константу 0, затем в регистр BX записывается константа 9, и, наконец, содержимое BX копируется в AX, как показано на следующей схеме:

После mov ax,0: ——————————-

AX | 0 |

——————————-

——————————-

BX | ? |

——————————-

После mov bx,9: ——————————-

AX | 0 |

——————————-

——————————-

BX | 9 |

——————————-

После mov ax,bx0: ——————————-

AX | 9 |

——————————-

——————————-

BX | 9 |

——————————-

Заметим, что значение 9 не перемещается из BX в AX, оно просто копируется из регистра BX в регистр AX.

В инструкции MOV можно использовать почти любую пару операн-дов, что имеет смысл за исключением того случая, когда в качестве операнда используется сегментный регистр (этот случай мы обсудим далее в разделе «Обращение к сегментным регистрам»). В качестве операнда-источника (правого операнда) инструкции MOV можно ис-пользовать следующее: константу, выражение, при вычислении кото-рого получается константа, общий регистр или ячейку памяти, дос-тупную с помощью одного из режимов адресации, описанного в разде-ле «Режимы адресации памяти». В качестве операнда-приемника (ле-вого операнда) инструкции MOV может использоваться общий регистр или ячейка памяти.