Основные команды простых программ на Ассемблере
Изучаемый микропроцессор имеет 92 типа команд, которые приведены в таблице 1. Из нее видно, что некоторые команды имеют не 1 , а несколько мнемокодов. В таблице команды перечислены в алфавитном порядке, что не очень приемлемо для их изучения. Удобнее для изучения команд представить их как совокупность групп команд, выполняющих похожие функции. С этой целью можно разделить систему команд на 7 функциональных групп:
-
Команды пересылки данных, осуществляющие обмен информацией.
-
Арифметические команды, выполняющие арифметические операции над числами со знаком и без знака.
-
Команды манипулирования битами выполняющие логические операции и сдвиги содержимого регистров и ячеек памяти.
-
Команды передачи управления, управляющие последовательностью исполнения команд программы.
-
Команды обработки строк для перемещения, сравнения и сканирования символьных данных.
-
Команды прерывания, вызывающие обработку микропроцессором некоторых специфических ситуаций.
-
Команды управления процессором, устанавливающие и сбрасывающие флаги состояния, а также изменяющие режим функционирования микропроцессора.
Команды пересылки данных
Сведения об основных командах пересылки данных были приведены в предыдущей лекции. Сведения о других командах этой группы приведены в таблице 2.
Мнемокод |
Формат |
Команды общего назначения MOV |
MOV приемник, источник |
PUSH |
PUSH источник |
POP |
POP приемник |
XCHG |
XCHG приемник, источник |
XLAT |
XLAT таблица_источник |
Команды ввода-вывода IN |
IN аккумулятор, порт |
OUT |
OUT порт аккумулятор |
Команды пересылки адреса LEA |
LEA регистр (16), память (16) |
LDS |
LDS регистр (16), память (32) |
LES |
LES регистр (16), память (32) |
Команды пересылки флагов LAHF |
LAHF |
SAHF |
SAHF |
PUSHF |
PUSHF |
POPF |
POPF |
Никакие из этих команд, кроме SAHF и POPF значения флагов не изменяют.
Команды ввода-вывода будем подробнее рассматривать далее.
Относительно команд пересылки адреса следует отметить, что в отличие от MOV они пересылают не значения, а адрес операнда. Эту операцию выполняет LEA. По этой команде в приемник, каковым является 16-разрядный регистр, переносится исполнительный (эффективный) адрес данных (иначе говоря, в регистр загружается смещение адреса памяти относительно начала сегмента данных).
Для загрузки полного адреса ячейки памяти существуют команды LDS и LES. При их выполнении смещение искомого адреса пересылается в указанный командой 16-разрядный РОН, а сегментная составляющая адреса (которая потом смещается на 4 разряда при определении физического адреса) помещается в 1-ой команде в регистр данных DS, а во 2-ой команде – в дополнительный регистр данных ES.
Команды PUSH и POP помещают или извлекают указанные в них данные на вершину стека (более подробно их будем рассматривать на конкретных примерах программ).