42
Стековая адресация
используется в безадресных командах и
представляет собой сочетание автоинкрементного и автодекрементно-
го способов адресации, работающее по принципу LIFO (Last Input – First
Output)- «последним вошел – первым вышел». Стек располагается в
DSEG и растет в сторону увеличения адреса. Адрес вершины стека со-
держится в указателе стека SP. При записи байта в стек сначала вы-
полняется инкремент содержимого SP, а затем по этому адресу произ-
водится запись. При чтении байта из стека сначала выполняется чте-
ние по адресу, на который указывает SP, а затем - декремент SP. При
использовании стека необходимо учитывать, что глубина стека (макси-
мальное число ячеек памяти, занятых под стек) аппаратными средст-
вами не контролируется. При чрезмерном увеличении стека могут быть
заняты не предназначенные для него ячейки памяти с потерей инфор-
мации в них. Аппаратно стек используется для сохранения адреса воз-
врата при обслуживании прерывания.
2.7.2. Система команд семейства MCS-51
Система команд представлена в таблицах П2.1...П2.6 приложе-
ния 2. В таблицах указаны наименование команды, ее мнемоника, дво-
ичный код операции, влияние выполняемой команды на флаги C, OV,
AC и P, длина команды в байтах (Б) и время выполнения в машинных
циклах (Ц), а также содержание преобразования, выполняемого коман-
дой. В качестве разделителя адресных полей в командах используется
запятая. Для улучшения читаемости можно добавить пробелы после
запятой, если их поддерживает используемый ассемблер.
Все множество команд можно разбить на 5 групп: операции пере-
дачи данных, арифметические операции, логические операции, опера-
ции с битами и операции передачи управления.
Группа команд операций передачи данных
(таблица П2.1) со-
держит команды MOV (передачи данных между DSEG и RSEG), MOVC
(между CSEG и A), MOVX (между XSEG и A), команды обращения к сте-
ку PUSH и POP, а также две команды обмена XCH и XCHD. Все коман-
ды передачи данных, у которых приемником является аккумулятор, ус-
танавливают флаг паритета P содержимого аккумулятора, а команды с
прямой адресацией, у которых приемником является регистр PSW, из-
меняют все флаги. Наиболее емкой является команда MOV, исполь-
зующая четыре способа адресации: прямой регистровый (A, Rn, DPTR),
прямой (direct), косвенный (@Ri), непосредственный (#data, #data16).
Второй операнд команды является источником, первый – приемником.
Для указания приемника служат три способа адресации (кроме непо-
средственного), а для указания источника все четыре. Трехбайтовая
команда MOV direct,direct обеспечивает пересылку между двумя лю-
быми ячейками памяти (DSEG и SFR), включая RSEG. Для обмена с
RSEG предусмотрены специальные двух- и однобайтовые форматы:
MOV Rn,direct
MOV direct,Rn
MOV A,Rn
MOV Rn,A