
ASSEMBLER / Система_команд_8051
.doc
addr – прямой адрес байта (число или символическое имя),
bit – прямой адрес бита (число или символическое имя),
data – значение константы (число),
rel – 8-битный относительный адрес (метка),
addr11 – 11-битный абсолютный адрес (метка),
addr16 – 16-битный абсолютный адрес (метка),
A – аккумулятор,
PC – программный счетчик,
(A), (addr), (Rn) – содержимое аккумулятора, ячейки памяти, регистра.
Таблица 2.4
СИСТЕМА КОМАНД МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS-51
Мнемокод |
Наименование команды |
Операция |
КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ |
||
MOV A,Rn |
Пересылка в аккумулятор из регистра (n = 0 7) |
(A) (Rn) |
MOV A,addr |
Пересылка в аккумулятор прямоадресуемого байта |
(A) (addr) |
MOV A,@Ri |
Пересылка в аккумулятор косвенноадресуемого байта (i = 0, 1) |
(A) ((Ri)) |
MOV A,#data |
Пересылка в аккумулятор константы |
(A) data |
MOV Rn,A |
Пересылка в регистр из аккумулятора (i = 0 7) |
(Rn) (A) |
MOV Rn,addr |
Пересылка в регистр прямоадресуемого байта (i = 0 7) |
(Rn) (addr) |
MOV Rn,#data |
Пересылка в регистр константы (i = 0 7) |
(Rn) data |
MOV addr,A |
Пересылка аккумулятора по прямому адресу |
(addr) (A) |
MOV addr,Rn |
Пересылка регистра по прямому адресу (i = 0 7) |
(addr) (Rn) |
MOV addrD,addrS |
Пересылка прямоадресуемого байта по прямому адресу |
(addrD) (addrS) |
MOV addr,@Ri |
Пересылка косвенноадресуемого байта по прямому адресу (i = 0, 1) |
(addr) ((Ri)) |
MOV addr,#data |
Пересылка константы по прямому адресу |
(addr) data |
MOV @Ri,A |
Пересылка аккумулятора по косвенному адресу (i = 0, 1) |
((Ri)) (A) |
MOV @Ri,addr |
Пересылка прямоадресуемого байта по косвенному адресу (i = 0, 1) |
((Ri)) (addr) |
MOV @Ri,#data |
Пересылка константы по косвенному адресу (i = 0, 1) |
((Ri)) data |
MOV DPTR,#data16 |
Загрузка указателя данных |
(DPTR) data16 |
MOVC A,@A+DPTR |
Пересылка косвенноадресуемого байта из памяти программ в аккумулятор |
(A) ((A)+(DPTR)) |
MOVC A,@A+PC |
Пересылка косвенноадресуемого байта из памяти программ в аккумулятор |
(PC) (PC)+1 (A) ((A)+(PC)) |
Таблица 2.4 (продолжение)
Мнемокод |
Наименование команды |
Операция |
MOVX A,@Ri |
Пересылка косвенноадресуемого байта из внешней памяти данных в аккумулятор (8-бит. адрес, i = 0, 1) |
(A) ((Ri)) |
MOVX A,@DPTR |
Пересылка косвенноадресуемого байта из внешней памяти данных в аккумулятор (16-бит. адрес) |
(A) ((DPTR)) |
MOVX @Ri,A |
Пересылка аккумулятора во внешнюю память данных по косвенному адресу (8-бит. адрес, i = 0, 1) |
((Ri)) (A) |
MOVX @DPTR,A |
Пересылка аккумулятора во внешнюю память данных по косвенному адресу (16-бит. адрес) |
((DPTR) (A) |
PUSH addr |
Загрузка в стек |
(SP) (SP)+1 ((SP)) (addr) |
POP addr |
Извлечение из стека |
(addr) ((SP)) (SP) (SP)-1 |
XCH A,Rn |
Обмен аккумулятора с регистром (i = 0 7) |
(A) (Rn) |
XCH A,addr |
Обмен аккумулятора с прямоадресуемым байтом |
(A) (addr) |
XCH A,@Ri |
Обмен аккумулятора с косвенноадресуемым байтом (i = 0, 1) |
(A) ((Ri)) |
XCHD A,@Ri |
Обмен младшей тетрады аккумулятора с младшей тетрадой косвенноадресуемого байта (i = 0, 1) |
(A0-3) ((Ri)0-3) |
КОМАНДЫ ОПЕРАЦИЙ С АККУМУЛЯТОРОМ |
||
CLR A |
Очистка аккумулятора |
(A) 0 |
CPL A |
Инверсия аккумулятора |
(A) not (A) |
INC A |
Инкремент аккумулятора |
(A) (A)+1 |
DEC A |
Декремент аккумулятора |
(A) (A) -1 |
RL A |
Циклический сдвиг аккумулятора влево |
(An+1) (An), n=06 (A0) (A7) |
RLC A |
Сдвиг аккумулятора влево через перенос |
(An+1) (An), n=06 (A0) (C) (C) (A7) |
RR A |
Циклический сдвиг аккумулятора вправо |
(An) (An+1), n=06 (A7) (A0) |
Таблица 2.4 (продолжение)
Мнемокод |
Наименование команды |
Операция |
RRC A |
Сдвиг аккумулятора вправо через перенос |
(An) (An+1), n=06 (A7) (C) (C) (A0) |
SWAP A |
Перестановка тетрад в аккумуляторе |
(A0-3) (A4-7) |
DA A |
Десятичная коррекция аккумулятора |
Если (AC)=1 или А0-3 >9, то (A0-3) (A0-3)+6, затем, если (C)=1 или А4-7 >9, то (A4-7) (A4-7)+6 |
MUL AB |
Умножение аккумулятора на регистр В |
(B)(A) (A) (B) |
DIV AB |
Деление аккумулятора на регистр В |
(A).(B) (A) / (B) |
КОМАНДЫ ОПЕРАЦИЙ С БИТАМИ |
||
CLR C |
Сброс переноса |
(C) 0 |
CLR bit |
Сброс бита |
(bit) 0 |
SETB C |
Установка переноса |
(C) 1 |
SETB bit |
Установка бита |
(bit) 1 |
CPL C |
Инверсия переноса |
(C) not (C) |
CPL bit |
Инверсия бита |
(bit) not (bit) |
ANL C,bit |
Логическое И переноса и бита |
(C) (C) & (bit) |
ANL C,/bit |
Логическое И переноса с инверсией бита |
(C) (C) & not(bit) |
ORL C,bit |
Логическое ИЛИ переноса и бита |
(C) (C) V (bit) |
ORL C,/bit |
Логическое ИЛИ переноса с инверсией бита |
(C) (C) V not(bit) |
MOV C,bit |
Пересылка бита в перенос |
(C) (bit) |
MOV bit,C |
Пересылка переноса в бит |
(bit) (C) |
КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ |
||
LJMP addr16 |
Длинный переход в полном адресном пространстве памяти программ |
(PC) addr16 |
AJMP addr11 |
Абсолютный переход в пределах страницы размером 2К байт |
(PC) (PC)+2 (PC0-10) addr11 |
SJMP rel |
Относительный переход внутри страницы размером 256 байт |
(PC) (PC)+2 (PC) (PC)+rel |
JMP @A+DPTR |
Косвенный относительный переход |
(PC) (A)+(DPTR) |
Таблица 2.4 (продолжение)
Мнемокод |
Наименование команды |
Операция |
JNB bit,rel |
Переход, если бит не установлен |
(PC) (PC)+3, если (bit)=0, то (PC) (PC)+rel |
JBC bit,rel |
Переход, если бит установлен, с последующим сбросом бита |
(PC) (PC)+3, если (bit)=1, то (bit) 0 и (PC) (PC)+rel |
DJNZ Rn,rel |
Декремент регистра и переход, если содержимое не равно нулю |
(PC) (PC)+2, (Rn) (Rn) -1, если (Rn)0, то (PC) (PC)+rel |
DJNZ addr,rel |
Декремент прямо адресуемого байта и переход, если содержимое не равно нулю |
(PC) (PC)+2, (addr) (addr) -1, если (addr) 0, то (PC) (PC)+rel |
CJNE A,addr,rel |
Переход, если аккумулятор не равен прямоадресуемому байту |
(PC) (PC)+3, если (A) (addr), то (PC) (PC)+rel, если (A) < (addr), то (C) 1, иначе (C) 0 |
CJNE A,#data,rel |
Переход, если аккумулятор не равен константе |
(PC) (PC)+3, если (A) data, то (PC) (PC)+rel, если (A) < (addr), то (C) 1, иначе (C) 0 |
CJNE Rn,#data,rel |
Переход, если регистр не равен константе |
(PC) (PC)+3, если (Rn) data, то (PC) (PC)+rel, если (Rn) < (data), то (C) 1, иначе (C) 0 |
CJNE @Ri,#data,rel |
Переход, если косвенноадресуемый байт не равен константе (i = 0, 1) |
(PC) (PC)+3, если ((Ri)) data, то (PC) (PC)+rel, если ((Ri)) < (data), то (C) 1, иначе (C) 0 |
Таблица 2.4 (продолжение)
Мнемокод |
Наименование команды |
Операция |
JZ rel |
Переход, если аккумулятор равен нулю |
(PC) (PC)+2, если (A)=0, то (PC) (PC)+rel |
JNZ rel |
Переход, если аккумулятор не равен нулю |
(PC) (PC)+2, если (A)0, то (PC) (PC)+rel |
JC rel |
Переход, если бит переноса установлен |
(PC) (PC)+2, если (С)=1, то (PC) (PC)+rel |
JNC rel |
Переход, если бит переноса не установлен |
(PC) (PC)+2, если (С)=0, то (PC) (PC)+rel |
JB bit,rel |
Переход, если бит установлен |
(PC) (PC)+3, если (bit)=1, то (PC) (PC)+rel |
LCALL addr16 |
Длинный вызов подпрограммы |
(PC) (PC)+3, (SP) (SP) + 1, ((SP)) (PC0-7), (SP) (SP) + 1, ((SP)) (PC8-15), (PC) addr16 |
ACALL addr11 |
Абсолютный вызов подпрограммы в пределах страницы размером 2К байт |
(PC) (PC)+3, (SP) (SP) + 1, ((SP)) (PC0-7), (SP) (SP) + 1, ((SP)) (PC8-15), (PC0-10) addr11 |
RET |
Возврат из подпрограммы |
(PC8-15) ((SP)), (SP) (SP) - 1 (PC0-7) ((SP)), (SP) (SP) - 1 |
RETI |
Возврат из подпрограммы обработки прерывания |
(PC8-15) ((SP)), (SP) (SP) - 1 (PC0-7) ((SP)), (SP) (SP) - 1, |
NOP |
Холостая операция |
(PC) (PC)+1 |
Таблица 2.4 (продолжение)
Мнемокод |
Наименование команды |
Операция |
КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ |
||
ADD A,Rn |
Сложение аккумулятора с регистром (n= 0 7) |
(A) (A)+(Rn) |
ADD A,addr |
Сложение аккумулятора с прямоадресуемым байтом |
(A) (A)+(addr) |
ADD A,@Ri |
Сложение аккумулятора с косвенноадресуемым байтом (i = 0, 1) |
(A) (A)+((Ri)) |
ADD A,#data |
Сложение аккумулятора с константой |
(A) (A)+data |
ADDC A,Rn |
Сложение аккумулятора с регистром и переносом |
(A) (A)+(Rn)+(C) |
ADDC A,addr |
Сложение аккумулятора с прямоадресуемым байтом и переносом |
(A) (A)+ + (addr)+(C) |
ADDC A,@Ri |
Сложение аккумулятора с косвенно-адресуемым байтом и переносом (i = 0, 1) |
(A) (A)+((Ri))+(C) |
ADDC A,#data |
Сложение аккумулятора с константой и переносом |
(A) (A)+data+(C) |
SUBB A,Rn |
Вычитание из аккумулятора регистра и заема (i = 0 7) |
(A) (A)-(Rn)-(C) |
SUBB A,addr |
Вычитание из аккумулятора прямоадресуемого байта и заема |
(A) (A)-(addr)-(C) |
SUBB A,@Ri |
Вычитание из аккумулятора косвенноадресуемого байта и заема (i = 0, 1) |
(A) (A)-((Ri))-(C) |
SUBB A,#data |
Вычитание из аккумулятора константы и заема |
(A) (A)-data-(C) |
INC A |
Инкремент аккумулятора |
(A) (A)+1 |
INC Rn |
Инкремент регистра (i = 0 7) |
(Rn) (Rn)+1 |
INC addr |
Инкремент прямоадресуемого байта |
(addr) (addr)+1 |
INC @Ri |
Инкремент косвенноадресуемого байта (i = 0, 1) |
((Ri)) ((Ri))+1 |
INC DPTR |
Инкремент указателя данных |
(DPTR) (DPTR)+1 |
DEC A |
Декремент аккумулятора |
(A) (A) -1 |
DEC Rn |
Декремент регистра (i = 0 7) |
(Rn) (Rn) -1 |
Таблица 2.4 (продолжение)
Мнемокод |
Наименование команды |
Операция |
DEC addr |
Декремент прямоадресуемого байта |
(addr) (addr) -1 |
DEC @Ri |
Декремент косвенноадресуемого байта (i = 0, 1) |
((Ri)) ((Ri)) -1 |
MUL AB |
Умножение аккумулятора на регистр В |
(B)(A) (A) (B) |
DIV AB |
Деление аккумулятора на регистр В |
(A).(B) (A) / (B) |
DA A |
Десятичная коррекция аккумулятора |
Если (AC)=1 или А0-3 >9, то (A0-3) (A0-3)+6, затем, если (C)=1 или А4-7 >9, то (A4-7) (A4-7)+6 |
КОМАНДЫ ЛОГИЧЕСКИХ ОПЕРАЦИЙ |
||
ANL A,Rn |
Логическое И аккумулятора и регистра (i = 0 7) |
(A) (A) & (Rn) |
ANL A,addr |
Логическое И аккумулятора и прямоадресуемого байта |
(A) (A) & (addr) |
ANL A,@Ri |
Логическое И аккумулятора и косвенноадресуемого байта (i = 0, 1) |
(A) (A) & ((Ri)) |
ANL A,#data |
Логическое И аккумулятора и константы |
(A) (A) & data |
ANL addr,A |
Логическое И прямоадресуемого байта и аккумулятора |
(addr) (addr) & A |
ANL addr,#data |
Логическое И прямоадресуемого байта и константы |
(addr) (addr) & & data |
ORL A,Rn |
Логическое ИЛИ аккумулятора регистра (i = 0 7) |
(A) (A) V (Rn) |
ORL A,addr |
Логическое ИЛИ аккумулятора и прямоадресуемого байта |
(A) (A) V (addr) |
ORL A,@Ri |
Логическое ИЛИ аккумулятора и косвенноадресуемого байта (i = 0, 1) |
(A) (A) V ((Ri)) |
ORL A,#data |
Логическое ИЛИ аккумулятора и константы |
(A) (A) V data |
ORL addr,A |
Логическое ИЛИ прямоадресуемого байта и аккумулятора |
(A) (addr) V (A) |
ORL addr,#data |
Логическое ИЛИ прямоадресуемого байта и константы |
(A) (addr) V data |
Таблица 2.4 (окончание)
Мнемокод |
Наименование команды |
Операция |
XRL A,Rn |
Исключающее ИЛИ аккумулятора регистра (i = 0 7) |
(A) (A) (Rn) |
XRL A,addr |
Исключающее ИЛИ аккумулятора и прямоадресуемого байта |
(A) (A) (addr) |
XRL A,@Ri |
Исключающее ИЛИ аккумулятора и косвенноадресуемого байта (i = 0, 1) |
(A) (A) ((Ri)) |
XRL A,#data |
Исключающее ИЛИ аккумулятора и константы |
(A) (A) data |
XRL addr,A |
Исключающее ИЛИ прямоадресуемого байта и аккумулятора- |
(A) (addr) (A) |
XRL addr,#data |
Исключающее ИЛИ прямоадресуемого байта и константы |
(A) (addr) data |