Любая из 256 ячеек внутреннего ОЗУ данных может быть выбрана с использованием косвенно-регистровой адресации через регистры-указатели
MOV
A, @R0 ;Скопировать число из ячейки памяти с адресом, хранящимся вMOV
@R1, А ;Скопировать число из аккумулятора, в ячейку памяти с адресом, хранящимся вКоманды пересылки между ячейками памяти, использующие прямую адресацию, позволяют заносить содержимое порта в ячейку внутреннего ОЗУ или пересылать содержимое из одной ячейки внутреннего ОЗУ в другую без использования аккумулятора:
MOV
15, 25 ;Скопировать содержимое 25-ой ячейки в 15-ю ячейкуТаблицы символов (кодов), записанные в ПЗУ программы, могут быть скопированы в аккумулятор с помощью команд передачи данных с косвенной адресацией, например:
MOVC
A, @A+DPT ;Скопировать символ в аккумуляторЯчейка адресного пространства 64-килобайтного внешнего ОЗУ также может быть выбрана с использованием косвенно-регистровой адресации через регистр-указатель данных DPTR
, например:MOVX A, @DPTR ;Скопировать число из внешней ячейки памяти с адресом, хранящимся в DPTR, в аккумулятор
Содержимое аккумулятора может быть обменено с содержимым рабочих регистров выбранного банка, например:
ХСН
A, R0.Битовые команды
Каждый бит из битового пространства внутренней памяти может быть установлен в 1, сброшен в 0 или инвертирован.
Эти операции можно выполнить при помощи следующих команд:
— установить бит (записать логическую единицу) — SETB
;— сбросить бит (записать логический ноль) — CLR
;— проинвертировать значение бита (изменить на противоположное) — CPL
;— записать бит во флаг переноса или считать из флага переноса — MOV
.По значениям бита могут быть реализованы переходы:
— если бит установлен (содержит логическую 1) — JB
;— если бит не установлен (содержит логический 0) — JNB
;— переход, если бит установлен со сбросом этого бита после выполнения команды (запись в этот бит 0) — JBC
.Между любым битом из битового пространства внутренней памяти и флагом переноса могут быть произведены логические операции «И» или «ИЛИ».
— «И» — ANL
— «ИЛИ» — ORL
Команды ветвления и передачи управления
Команды ветвления позволяют реализовывать условные операторы и операторы циклов. В микроконтроллерах семейства MCS-51 доступны следующие команды:
— безусловный переход: LJMP
, AJMP, SJMP;— вызов и возврат из подпрограммы: LCALL
, ACALL, RET, RETI;— переход в зависимости от результата проверки содержимого аккумулятора: JZ
, JNZ, CJNE, JMP;— переход в зависимости от значения флага переноса С: JC
, JNC;— переход в зависимости от значения любого бита в битовом пространстве: JB
, JNB, JBC.Команды 16-разрядных безусловных переходов и вызовов подпрограмм позволяют осуществить переход в любую точку адресного пространства памяти программ объемом до 64 Кбайт. Примеры команд:
LJMP
Metka ;Переход к команде, расположенной по адресу обозначенному меткой 'Metka'LCALL
Podprogramma ;Вызов подпрограммы по адресу, обозначенному меткой 'Podprogramma'Команды II-разрядных переходов и вызовов подпрограмм позволяют сократить объем программы, но при этом обеспечивают переходы только внутри сегмента программной памяти размером 2 Кбайт. Эти команды принципиально могут приводить к необнаруживаемым транслятором ошибкам, когда программный модуль размещается на двух соседних двух килобайтовых сегментах памяти.
AJMP
Metka ;Переход к команде, расположенной по адресу обозначенному меткой 'Metka'ACALL
Podprogramma ;Вызов подпрограммы по адресу, обозначенному меткой 'Podprogramma'В системе команд микроконтроллеров семейства MCS-51 имеются команды условных и безусловных переходов относительно начального адреса следующей команды в пределах от (PC)-127 до (PC)+127. Примеры команд: