Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ASSEMBLER / Система_команд_8051

.doc
Скачиваний:
116
Добавлен:
16.04.2015
Размер:
191.49 Кб
Скачать

8

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=06 (A0)  (A7)

RLC A

Сдвиг аккумулятора влево через перенос

(An+1)  (An), n=06 (A0)  (C) (C)  (A7)

RR A

Циклический сдвиг аккумулятора вправо

(An)  (An+1), n=06 (A7)  (A0)

Таблица 2.4 (продолжение)

Мнемокод

Наименование команды

Операция

RRC A

Сдвиг аккумулятора вправо через перенос

(An)  (An+1), n=06 (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