Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[7]

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

Мнемокод

КОП

r

B

Ц.

Операция

Пересылка в аккумулятор байта из ВПД

MOVX A, @Ri

1110001i

1

1

2

(A) - ((Ri))

Пересылка в аккумулятор байта из расширенной ВПД

MOVX A,@DPTR

11100000

1

1

2

(A) - ((DPTR))

Пересылка в ВПД из аккумулятора

MOVX @Ri, A

1111001i

1

1

2

((Ri)) - (A)

Пересылка в расширенную ВПД из аккумулятора

MOVX @DPTR,A

11110000

1

1

2

((DPTR)) - (A)

Загрузка в стек

PUSH ad

11000000

3

2

2

(SP) - (SP) + 1, ((SP)) - (ad)

Извлечение из стека

POP ad

11010000

3

2

2

(ad) - (SP), (SP) - (SP) - 1

Обмен аккумулятора с регистром

XCH A, Rn

11001rrr

1

1

1

(A) - (Rn)

Обмен аккумулятора с прямоадресуемым байтом

XCH A, ad

11000101

3

2

1

(A) - (ad)

Обмен аккумулятора с байтом из РПД

XCH A, @Ri

1100011i

1

1

1

(A) - ((Ri))

Обмен младших тетрад аккумулятора и байта РПД

XCHD A, @Ri

1101011i

1

1

1

(A0...3) -((Ro0...3)

По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды M0VX и MOVC соответственно. Первая из них обеспечивает чтение/запись байт из внешней памяти данных, вторая - чтение байт из памяти программ.

По команде XCH выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD - обмен младшими тетрадами (битами 0 - 3).

Команды PUSH и РОР предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных. В процессе инициализации микроЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.

Группа команд пересылок микроконтроллера имеет следующую особенность - в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра. Например, чтение PSW в аккумулятор может быть выполнено командой

MOV A, PSW

которая преобразуется Ассемблером к виду MOV А, 0D0h (E5 D0),

где Е5 - код операции, а D0 - операнд (адрес PSW).

Кроме того, следует отметить, что в микро-ЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации: А - при неявной адресации (например, MOV A, R0) и АСС - при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.

4.1.7.Команды арифметических операций 8051.

В данную группу входят 24 команды, краткое описание которых приведено в таблице. Из нее следует, что микроЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.

В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Таблица.8.Арифметические операции.

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

Мнемокод

КОП

Т

Б

Ц

Операция

Сложение аккумулятора с регистром (n=0-7)

ADD A, Rn

00I01rrr

1

1

(A) - (A) + (Rn)

Сложение аккумулятора с прямоадресуемым байтом

ADD A, ad

00100101

3

2

(A) - (A) + (ad)

Сложение аккумулятора с байтом из РПД (i = 0,1)

ADD A, @Ri

0010011i

1

1

(A) - (A) + ((Ri))

Сложение аккумулятора с константой

ADD A, #d

00100100

2

2

(A) - (A) + #d

Сложение аккумулятора с регистром и переносом

ADDC A, Rn

00111m-

1

(A) - (A) + (Rn) + (C)

Сложение аккумулятора с прямоадресуемым байтом и переносом

ADDC A, ad

00110101

3

2

(A) - (A) + (ad) + (C)

Сложение аккумулятора с байтом из РПД и переносом

ADDC A, @Ri

0011011i

T

1

(A) - (A) + ((Ri)) + (C)

Сложение аккумулятора с константой и переносом

ADDC A, #d

00110100

2

2

(A) - (A) + # d + (C)

Десятичная коррекция аккумулятора

DA A

11010100

1

1

Если (А0...3)>9 или

((AC)=1),to(A0...3)- (А0...З) + 6, затем если (а4 7) >9 или ((С)=1), то (А4...7) - (А4...7) + 6

Вычитание из аккумулятора регистра и заёма

SUBB A, Rn

10011rrr

T

1

(A) - (A) - (C) - (Rn)

Вычитание из аккумулятора прямоадресуемого байта и заема

SUBB A, ad

10010101

3

2

(A) - (A) - (C) - ((ad))

Вычитание из аккумулятора байта РПД и заема

SUBB А, @Ri

1001011i

T

1

(A) - (A) - (C) - ((Ri))

Вычитание из аккумулятора константы и заема

SUBB А, d

10010100

2

2

(A) - (A) - (C) - #d

Инкремент аккумулятора

INC А

00000100

1

1


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

Мнемокод

КОП

T

Б

Ц

Операция

Инкремент регистра

INC Rn

00001rrr

1

1

1

(Rn) - (Rn) + 1

Инкремент прямоадресуемого байта

INC ad

00000101

3

2

1

(ad) - (ad) + 1

Инкремент байта в РПД

INC @Ri

0000011i

1

1

1

((Ri)) - ((Ri)) + 1

Инкремент указателя данных

INC DPTR

10100011

1

1

2

(DPTR ) - (DPTR) + 1

Декремент аккумулятора

DEC A

00010100

1

1

1

(A) - (A) - 1

Декремент регистра

DEC Rn

00011 rrr

1

1

1

(Rn) - (Rn) - 1

Декремент прямоадресуемого байта

DEC ad

00010101

3

2

1

(ad) - (ad) - 1

Декремент байта в РПД

DEC @Ri

0001011i

1

1

1

((Ri)) - ((Ri)) - 1

Умножение аккумулятора на регистр В

MUL AB

10100100

1

1

4

(B)(A) - (A)*)

Деление аккумулятора на регистр В

DIV AB

10000100

1

1

4

(B).(A) -

По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW, структура которых приведена в таблице.

Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.

Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.

Наконец, флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.

4.1.8.Команды логических операций микроконтроллера 8051.

В этой группе 25 команд, их краткое описание приведено в таблице. Нетрудно видеть, что эти команды позволяют выполнять операции над байтами: логическое И (/\ ), логическое ИЛИ ( V), исключающее ИЛИ ((+)), инверсию (NOT), сброс в нулевое значение и сдвиг. В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц). Таблица.Э.Логические операции

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

Мнемокод

КОП

r

Б

Операция

Логическое И аккумулятора и регистра

ANL A, Rn

01011rrr

1

1

(A) - (A) AND (Rn)

Логическое И аккумулятора и прямоадресуемого байта

ANL A, ad

01010101

3

2

(A) - (A) AND (ad)

Логическое И аккумулятора и байта из РПД

ANL A, @Ri

0101011i

1

1

(A) - (A) AND ((Ri))

Логическое И аккумулятора и константы

ANL A, #d

01010100

2

2

(A) - (A) AND #d

Логическое И прямоадресуемого байта и аккумулятора

ANL ad, A

01010010

3

2

(ad) - (ad) AND (A)

Логическое И прямоадресуемого байта и константы

ANL ad, #d

01010011

7

3

(ad) - (ad) AND #d

Логическое ИЛИ аккумулятора и регистра

ORL A, Rn

01001 rrr

1

1

(A) - (A) OR (Rn)

Логическое ИЛИ аккумулятора и прямоадресуемого байта

ORL A, ad

01000101

3

2

(A) - (A) OR (ad)

Логическое ИЛИ аккумулятора и байта из РПД

ORL A, @Ri

0100011i

1

1

(A) - (A) OR ((Ri))

Логическое ИЛИ аккумулятора и константы

ORL A, #d

01000100

2

2

(A) - (A) OR #d

Логическое ИЛИ прямоадресуемого байта и аккумулятора

ORL ad, A

01000010

3

2

(ad) - (ad) OR (A)

Логическое ИЛИ прямоадресуемого байта и константы

ORL ad, #d

01000011

7

3

(ad) - (ad) OR #d

Исключающее ИЛИ аккумулятора и регистра

XRL A, Rn

01101rrr

1

1

(A) - (A) XOR (Rn)

Исключающее ИЛИ аккумулятора и прямоадресуемого байта

XRL A, ad

01100101

3

2

(A) - (A) XOR (ad)

Исключающее ИЛИ аккумулятора и байта из РПД

XRL A, @Ri

0110011i

1

1

(A) - (A) XOR ((Ri))

Исключающее ИЛИ аккумулятора и константы

XRL A, #d

01100100

2

2

(A) - (A) XOR #d

Исключающее ИЛИ прямоадресуемого байта и аккумулятора

XRL ad, A

01100010

3

2

(ad) - (ad) XOR (A)

Исключающее ИЛИ прямоадресуемого байта и константы

XRL ad, #d

01100011

7

3

(ad) - (ad) XOR #d

Сброс аккумулятора

CLR A

11100100

1

1

(A) - 0

Инверсия аккумулятора

CPL A

11110100

1

1

(A) - NOT(A)

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

RL A

00100011

1

1

(An+1) - (An), n=06, (A0) - (A7)

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

RLC A

00110011

1

1

(An+1) - (An), n=06 (A0) - (C), (C) -(A7)

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

RR A

00000011

1

1

(An) - (An+1), n=06, (A7) - (A0)

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

RRC A

00010011

1

1

(An) - (An+1), n=06 (A7) - (C), (C) -(A0)

Обмен местами тетрад в аккумуляторе

SWAP A

11000100

1

1

(A0...3) (A4...7)


4.1.9.Команды операций над битами микроконтроллера 8051.

Группа состоит из 12 команд, краткое описание которых приведено в таблице. Эти команды позволяют выполнять операции над отдельными битами: сброс, установку, инверсию бита, а также логические И (Л) и ИЛИ (V). В качестве "логического" аккумулятора, участвующего во всех операциях с двумя операндами, выступает признак переноса С (разряд d7 pSw), в качестве операндов могут использоваться 128 бит из резидентной памяти данных и регистры специальных функций, допускающие адресацию отдельных бит.

В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

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

Мнемокод

КОП

Т

Б

ц.

Операция

Сброс переноса

CLR С

11000011

1

1

(C) - 0

Сброс бита

CLR bit

11000010

4

2

(b) - 0

Установка переноса

SETB С

11010011

1

1

(C) - 1

Установка бита

SETB bit

11010010

4

2

(b) - 1

Инверсия переноса

CPL С

10110011

1

1

(C) - NOT(C)

Инверсия бита

CPL bit

10110010

4

2

(b) - NOT(b)

Логическое И бита и переноса

ANL С, bit

10000010

4

2

2

(C) - (C) AND (b)

Логическое И инверсии бита и переноса

ANL С, /bit

10110000

4

2

2

(C) - (C) AND (NOT(b))

Логическое ИЛИ бита и переноса

ORL С, bit

01110010

4

2

2

(C) - (C) OR (b)

Логическое ИЛИ инверсии бита и переноса

ORL С, /bit

10100000

4

2

2

(C) - (C) OR (NOT(b))

Пересылка бита в перенос

MOV С, bit

10100010

4

2

1

(C) - (b)

Пересылка переноса в бит

MOV bit, С

10010010

4

2

2

4.1.10.Команды передачи управления микроконтроллера 8051.

Группа представлена командами безусловного и условного переходов, командами вызова подпрограмм и командами возврата из подпрограмм.

В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Таблица.11.Команды передачи управления

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

Мнемокод

КОП

Т

Б

Ц

Операция

Длинный переход в полном объеме ПП

LJMP ad16

00000010

12

3

2

(PC) - ad16

Абсолютный переход внутри страницы в 2 Кб

AJMP ad11

a10a9a800001

6

2

2

(PC) - (PC) + 2, (PC0-10) - ad11

Короткий относительный переход внутри страницы в 256 байт

SJMP rel

10000000

5

2

2

(PC) - (PC) + 2, (PC) - (PC) +rel

Косвенный относительный переход

JMP @A+DPTR

01110011

1

1

2

(PC) - (A) + (DPTR)

Переход, если аккумулятор равен нулю

JZ rel

01100000

5

2

2

(PC)-(PC)+2, если (A)=0, то (PC)-(PC)+rel

Переход, если аккумулятор не равен нулю

JNZ rel

01110000

5

2

2

(PC)-(PC)+2, если (A)t0, то (PC)-(PC)+rel

Переход, если перенос равен единице

JC rel

01000000

5

2

2

(PC)-(PC)+2, если (С)=1, то (PC)-(PC)+rel

Переход, если перенос равен нулю

JNC rel

01010000

5

2

2

(PC)-(PC)+2, если (С)=0, то (PC)-(PC)+rel

Переход, если бит равен единице

JB bit, rel

00100000

11

3

2

(PC)-(PC)+3, если (b)=l, то (PC)-(PC)+rel

Переход, если бит равен нулю

JNB bit, rel

00110000

11

3

2

(PC)-(PC)+3, если (b)=0, то (PC)-(PC)+rel

Переход, если бит установлен, с последующим сбросом бита

JBC bit, rel

00010000

11

3

2

(PC) - (PC) + 3, если (b)=1, то (b) - 0 и (PC)- (PC) + rel

Декремент регистра и переход, если не нуль

DJNZ Rn, rel

11011rrr

5

2

2

(PC) - (PC) + 2, (Rn) - (Rn) - 1, если (Rn) t 0, то (PC) - (PC) + rel

Декремент прямоадресуемого байта и переход, если не нуль

DJNZ ad, rel

11010101

8

3

2

(PC) - (PC) + 2, (ad) - (ad) - 1, если (ad) t 0, то (PC) - (PC) + rel

Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно

CJNE A, ad, rel

10110101

8

3

2

(PC) - (PC) + 3,если (A) t (ad), то (PC) - (PC) + ге!,если (A) < (ad), то (c) - 1, иначе (C) - 0

Сравнение аккумулятора с константой и переход, если не равно

CJNE A, #d, rel

10110100

10

3

2

(PC) - (PC) + 3,если (A) t #d, то (PC) - (PC) + ге!,если (A) < #d, то (с) - 1, иначе (С) - 0

Сравнение регистра с константой и переход, если не равно

CJNE Rn, #d, rel

10111rrr

10

3

2

(PC) - (PC) + 3,если (Rn) t #d, то (PC) - (PC) + ге!,если (Rn) < #d, то (с) - 1, иначе (С) - 0

Сравнение байта в РПД с константой и JCJNE @Ri,#d,rej 1011011i ю3 2 (рс) - (PC) + 3,если ((Ri)) t #d, то~



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23]