Предыдущий раздел | ОСНОВНЫЕ ОПЕРАТОРЫ АССЕМБЛЕРА | Следующий раздел |
Они осуществляют обмен данными между регистрами и ячейками памяти.
1)mov(переслать) пересылает содержимое второго операнда (слово или байт) в качестве содержимого первого операнда. Можно пересылать байт или слово между регистром и ячейкой памяти или между двумя регистрами. А также можно помещать непосредственное значение в регистр или в ячейку памяти. При пересылке непосредственного значения в ячейку памяти необходимо указать длину пересылаемого данного с помощью вспомогательного псевдооператора byte (байт) или word (слово). Примеры:
mov ax, [Table] ; Пересылка из ячейки ОП в регистр
mov [Table], ax ; и наоборот
mov bl, al ; Пересылка между регистрами
mov cl, -30 ; Загрузка константы в регистр
mov [Mem], byte 25h ; или в ячейку ОП
Следует отметить, что с помощью данного оператора нельзя выполнять пересылку данных из одной ячейки ОП в другую ячейку ОП. Такая пересылка может быть осуществлена двумя операторами mov с использованием регистра общего назначения.
С помощью оператора mov можно загружать в регистр общего назначения (но не в регистр сегмента) номер начального параграфа сегмента, задав в качестве второго операнда имя сегмента. Например:
mov ax, Data_seg ; Data_seg – имя сегмента данных
Для загрузки в регистр сегмента (кроме CS) номера начального параграфа сегмента требуются два оператора mov. Например:
mov ax, Data_seg ; Загрузка в AX
mov ds, ax ; Пересылка в регистр DS
Что касается регистра сегмента кода CS, то он не может быть использован в качестве первого операнда в операторе mov. Кроме того, нельзя пересылать содержимое одного регистра сегмента в другой. Такая пересылка может быть осуществлена двумя операторами mov с использованием регистра общего назначения.
2)xchg (обменять) производит обмен содержимого двух регистров или регистра и ячейки ОП. Следующие два фрагмента программ делают одно и то же – меняют местами содержимое двух байтов в ОП – Opr1 и Opr2:
а) mov al, [Opr1] ; (Opr1) ® AL
mov bl, [Opr2] ; (Opr2) ® BL
mov [Opr2], al ; (AL) ® Opr2
mov [Opr1], bl ; (BL) ® Opr1
б) mov al, [Opr1] ; (Opr1) ® AL
xchg al, [Opr2] ; (Opr2) ® AL
mov [Opr1], al ; (AL) ® Opr1
В варианте (б) потребовалось на один оператор и на один регистр меньше, чем в (а).
3) push (поместить слово в стек) помещает содержимое регистра или ячейки ОП размером в 16-битовое слово на вершину стека. Примеры:
push ax ; (AX) à стек
push [Mem] ; (Mem) à стек
4) pop (извлечь слово из стека) выбирает слово из вершины стека и помещает его в ячейку памяти или в регистр. Пример:
pop ax ; Слово из вершины стека àAX
5) lea(загрузить адрес) пересылает адрес-смещение ячейки памяти в любой 16-битовый регистр данных, регистр-указатель или индексный регистр. Оператор имеет два операнда. В качестве первого из них записывается регистр, а в качестве второго - метка ячейки ОП. Пример:
lea bx, [Mem] ; Адрес-смещение ячейки Mem à BX
Следует заметить, что данный оператор можно заменить оператором:
mov bx, Mem ; Адрес-смещение Mem àBX
Предыдущий раздел | В начало | Следующий раздел |