Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЕОМ тема 1.doc
Скачиваний:
5
Добавлен:
25.02.2016
Размер:
416.26 Кб
Скачать

4 Системи команд

Система команд МК містить 111 команд, що мають довжину 1, 2 або 3 байта і виконуються за один, два або чотири (множення або ділення) машинних цикла. При задаючій частоті fr=12 МГц продовжуваність циклу складає 1 мкс.

На рис. 10 наведено 13 форматів команд МК. Перший байт містить код операції (КОП), другий та третій – адреси операндів або безпосередні операнди.

Система команд наведена в табл. 2. В таблиці на рис. 10 використовуються позначення:

#d – безпосередній операнд (8-розрядне двійкове число);

#d16 – безпосередній операнд (16-розрядне двійкове число);

ad – прямо адресуєма 8-розрядна адреса комірки РПД або регістрів спеціальних функцій (можуть зустрітися abs-адреса отримувача і add-адреса джерела);

ad11, ad16 – відповідно 11- та 16-розрядна адреса;

bit(у графі “Пояснення” може зустрічатись позначення b) – адреса бітів;

re1 – 8-розрядне зміщення зі знаком;

Rn – регістр із номером n(0-7);

@Ri – операнд, косвенно адресуємий через Ri при і=0,1 (комірки РПД або зовнішньої пам'яті даних);

(X) – уміст елемента Х;

((X)) – уміст за адресою, що міститься в елементі Х;

(X)[15-8] – група розрядів елемента Х;

Операції:

+ додавання;

- віднімання;

* множення;

/ ділення;

OR логічне додавання (АБО);

AND логічне множення (І);

XOR “ВИКЛЮЧАЮЧЕ АБО”;

/X інверсія X.

В кодах команд через r, i, позначені двійкові розряди номера регістра, a[j] – розряди адреси, A[j] – розряди акумулятора.

В першій колонці таблиці 2.2 наведено мнемоніка команди й час її виконання в числі машинних циклів. В другій колонці наведено код операції і номер формату (рис. 2.10), який має відповідна команда. В колонці “Пояснення” під ВПД розуміється зовнішня пам'ять даних об'ємом 256 байт, а під розширеною ВПД – пам'ять об'ємом до 64 Кбайт.

Система команд мікроконтролера КМ1816ВЕ51 Таблиця 2

Мнемоніка

Число циклів

Код операції

Формат №

Поясненя

Команди передачі даних

MOV A, Rn

Циклів 1

11101rrr

Формат 1

Пересилка в акумулятор із регістру; (А)(Rn)

MOV A, ad

Циклів 1

11100101

Формат 3

Пересилка в акумулятор прямоадресуємого байта;(A)(ad)

MOV A, @Ri

Циклів 1

1110011i

Формат 1

Пересилка в акумулятор байта з РДП;(A)((Ri))

MOV A, #d

Циклів 1

01110100

Формат 2

Завантаження в акумулятор константи;

(A)#d

MOV Rn, A

Циклів 1

11111rrr

Формат 1

Пересилка в регістр з акумулятора; (A)#d

MOV Rn, ad

Циклів 2

10101rrr

Формат 3

Пересилка в регістр прямоадресуємого байта; (Rn)(ad)

MOV Rn, #d

Циклів 1

01111r

Формат 2

Завантаження в регістр константи;

(Rn)#d

MOV ad, A

Циклів 1

11110101

Формат 3

Пересилка за прямою адресою акумулятора; (ad)(A)

MOV ad, Rn

Циклів 2

10001rrr

Формат 3

Пересилка за прямою адресою регістра; (ad)(Rn)

MOV add, ads

Циклів 2

10000101

Формат 9

Пересилка прямоадресуємого байта за прямою адресою;

(add)(ads)

MOV ad, @Ri

Циклів 2

1000011i

Формат 3

Пересилка байта із РДП за прямою адресою; (ad)((Ri))

MOV ad, #d

Циклів 2

01110101

Формат 7

Пересилка за прямою адресою константи; (ad)#d

MOV @Ri, A

Циклів 1

1111011i

Формат 1

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

((Ri))(A)

MOV @Ri, ad

Циклів 2

1010011i

Формат 3

Пересилка в РПД прямоадресуємого байта; ((Ri))(ad)

MOV @Ri, #d

Циклів 1

0111011i

Формат 2

Пересилка в РПД константи;

((Ri))#d

MOV DPTR, #d16

Циклів 2

10010000

Формат 13

Завантаження покажчика даних; (DPTR)#d16

Продовження Таблиці 2

MOV A, @A+DPTR

Циклів 2

10010011

Формат 1

Пересилка в акумулятор байта з пам'яті програм;

(A)((A))+(DPTR)

MOV A, @A+PC

Циклів 2

10000011

Формат 1

Пересилка в акумулятор байта з пам'яті програм;

(PC)(PC)+1; (A)((A)+(PC))

MOVX A, @Ri

Циклів 2

1110001i

Формат 1

Пересилка в акумулятор байта з ВПД;(A)((Ri))

MOVX A, @DPTR

Циклів 2

11100000

Формат 1

Пересилка в акумулятор байта з розширеної ВПД; (A)((DPTR))

MOVX @Ri, A

Циклів 2

1111001i

Формат 1

Пересилка в ВПД з акумулятора; ((Ri))(A)

MOVX @DPTR, A

Циклів 2

11110000

Формат 1

Пересилка в розширену ВПД з акумулятора; ((DPTR))(A)

PUSH ad

Циклів 2

11000000

Формат 3

Завантаження в стек; (SP)(SP)+1; ((SP))(ad)

POP ad

Циклів 2

11010000

Формат 3

Витягування зі стека;

(ad)((SP)); (SP)(SP)-1

XCH A,Rn

Циклів 1

11001rrr

Формат 1

Обмін акумулятора з регістром; (A)(Rn)

XCH A, ad

Циклів 1

11000101

Формат 3

Обмін акумулятора з прямоадресуємим байтом; (A)ad

XCH A, @Ri

Циклів 1

1100011i

Формат 1

Обмін акумулятора з байтом з РПД; (A)((Ri))

XCHD A, @Ri

Циклів 1

1101011i

Формат 1

Обмін молодшої тетради акумулятора з молодшою тетрадою байта РПД;

(A[3-0])((Ri[3-0]))

Арифметичні команди

ADD A, Rn

Циклів 1

00101rrr

Формат 1

Складання акумулятора з регістром;

(A)(A)+(Rn)

ADD A, ad

Циклів 1

00100101

Формат 3

Складання акумулятора з прямоадресуємим байтом; (A)(A)+(ad)

ADD A, @Ri

Циклів 1

0010011i

Формат 1

Складання акумулятора з байтом з РПД;

(A)(A)+((Ri))

ADD A, #d

Циклів 1

00100100

Формат 2

Складання акумулятора з константою; (A)(A)+#d

ADDC A, Rn

Циклів 1

00111rrr

Формат 1

Складання акумулятора з байтом з РПД;

(A)(A)+(Rn)+(C)

ADDC A, ad

Циклів 1

00110101

Формат 3

Складання акумулятора зпрямоадресуємим байтом та переносом; (A)(A)+(ad)+(C)

ADDC A, @Ri

Циклів 1

0011011i

Формат 1

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

(A)(A)+((Ri))+(C)

ADDC A, #d

Циклів 1

00110100

Формат 2

Складання акумулятора з константою й переносом; (A)(A)+#d+C

DA A

Циклів 1

11010100

Формат 1

Десяткова корекція акумулятора: якщо ((A[3-0])>9 або (AC)=1), то (A[3-0])(A[3-0])+6;

якщо ((A[7-4])>9 або (C)=1),

то (A[7-4])(A[7-4])+6

SUBB A, Rn

Циклів 1

10011rrr

Формат 1

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

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

Продовження Таблиці 2

SUBB A, ad

Циклів 1

10010101

Формат 3

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

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

SUBB A, @Ri

Циклів 1

1001011i

Формат 1

Віднімання від акумулятора байта РПД і запозичення; (A)(A)-((Ri))-(C)

SUBB A, #d

Циклів 1

10010100

Формат 2

Віднімання з акумулятора константи та запозичення;

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

INC A

Циклів 1

00000100

Формат 1

Інкремент акумулятора; (A)(A)+1

INC Rn

Циклів 1

00001rrr

Формат 1

Інкремент регістра;

(Rn)(Rn)+1

INC ad

Циклів 1

00000101

Формат 3

Інкремент прямоадресуємого байта; (ad)(ad)+1

INC @Ri

Циклів 1

0000011i

Формат 1

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

((Ri))((Ri))+1

INC DPTR

Циклів 2

10100011

Формат 1

Інкремент покажчика даних; (DPTR)(DPTR)+1

DEC A

Циклів 1

0010100

Формат 1

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

(A)(A)-1

DEC Rn

Циклів 1

00011rrr

Формат 1

Декремент регістра;

(Rn)(Rn)-1

DEC ad

Циклів 1

00010101

Формат 3

Декремент прямоадресуємого байта; (ad)(ad)-1

DEC @Ri

Циклів 1

0001011i

Формат 1

Декремент байта в РПД; ((Ri))((Ri))-1

MUL AB

Циклів 4

10100100

Формат 1

Множення акумулятора на регістр В; (B).(A)(A)*(B)

DIV AB

Циклів 4

10000100

Формат 1

Ділення акумулятора на регістр В; (A).(B)(A)/(B)

Логічні команди

ANL A, Rn

Циклів 1

01011rrr

Формат 1

Логічне І акумулятора та регістра;

(A)(A) AND (Rn)

ANL A, ad

Циклів 1

01010101

Формат 3

Логічне І акумулятора та прямоадресуємого байта; (A)(A) AND (ad)

ANL A, @Ri

Циклів 1

0101011i

Формат 1

Логічне І акумулятора й байта з РПД; (A)(A) AND ((Ri))

ANL A, #d

Циклів 1

01010100

Формат 2

Логічне І акумулятора й константи; (A)(A) AND #d

ANL ad, A

Циклів 1

01010010

Формат 3

Логічне І прямоадресуємого байта й акумулятора;

(ad)(ad) AND (A)

ANL ad, #d

Циклів 2

01010011

Формат 7

Логічне І прямоадресуємого байта й константи;

(ad)(ad) AND #d

ORL A, Rn

Циклів 1

01001rrr

Формат 1

Логічне АБО акумулятора й регістра; (A)(A) OR (Rn)

ORL A, ad

Циклів 1

01000101

Формат 3

Логічне АБО акумулятора і прямоадресуємого байта;

(A)(A) OR (ad)

ORL A, @Ri

Циклів 1

0100011i

Формат 1

Логічне АБО акумулятора й байта з РПД; (A)(A) OR ((Ri))

Продовження Таблиці 2

ORL A, #d

Циклів 1

01000100

Формат 2

Логічне АБО акумулятора й константи; (A)(A) OR #d

ORL ad, A

Циклів 1

01000010

Формат 3

Логічне АБО прямоадресуємого байта й акумулятора; (ad)(ad) OR (A)

ORL ad, #d

Циклів 2

01000011

Формат 7

Логічне АБО прямоадресуємого байта й константи;

(ad)(ad) OR #d

XRL A, Rn

Циклів 1

01101rrr

Формат 1

Виключаюче АБО акумулятора та регістра;

(A)(A) XOR (Rn)

XRL A, ad

Циклів 1

01100101

Формат 3

Виключаюче АБО акумулятора та прямоадресуємого байта; (A)(A) XOR (ad)

XRL A, @Ri

Циклів 1

0110011i

Формат 1

Виключаюче АБО акумулятора й байта із РПД;

(A)(A) XOR ((Ri))

XRL A, #d

Циклів 1

01100100

Формат 2

Виключаюче АБО акумулятора й константи; (A)(A) XOR #d

XRL ad, A

Циклів 1

01100010

Формат 3

Виключаюче АБО прямоадресуємого байта й акумулятора; (ad)(ad) XOR

XRL ad, #d

Циклів 2

01100011

Формат 7

Виключаюче АБО прямоадресуємого байта й константи; (ad)(ad) XOR #d

CLR A

Циклів 1

11100100

Формат 1

Скид акумулятора; (А)0

CPL A

Циклів 1

11110100

Формат 1

Інверсія акумулятора; (А)/(А)

RL A

Циклів 1

00100011

Формат 1

Зсув акумулятора вліво циклічний;

(A[j+1])(A[j]) для j=0-6;

(A[0])(A[7])

RLC A

Циклів 1

00110011

Формат 1

Зсув акумулятора вліво через перенос;

(A[j+1])(A[j]) для j=0-6;

(A[0])(C), (C)(A[7])

RR A

Циклів 1

00000011

Формат 1

Зсув акумулятора вправо циклічний;

(A[j])(A[j+1]) для j=0-6;

(A[7])(A[0])

RRC A

Циклів 1

00010011

Формат 1

Зсув акумулятора вправо через перенос;

(A[j])(A[j+1]) для j=0-6;

(A[7])(C), (C)(A[0])

SWAP A

Циклів 1

11000100

Формат 1

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

(A[0-3])(A[4-7])

Команди операцій з бітами

CLR C

Циклів 1

11000011

Формат 1

Обнуління переносу; (С)0

CLR bit

Циклів 1

11000010

Формат 4

Обнуління біта; (b)0

CPL C

Циклів 1

10110011

Формат 1

Інверсія переносу; (С)/(С)

CPL bit

Циклів 1

10110010

Формат 4

Інверсія біта; (b)/(b)

SETB C

Циклів 1

11010011

Формат 1

Установка переносу; (С)1

Продовження Таблиці 2

SETB bit

Циклів 1

11010010

Формат 4

Установка біта; (b)1

ANL C, bit

Циклів 2

10000010

Формат 4

Логічне І біта та переносу; (C)(C) AND (bit)

ANL C, /bit

Циклів 2

10110000

Формат 4

Логічне І інверсія біта й переносу; (С)(С) AND (/bit)

ORL C, bit

Циклів 2

01110010

Формат 4

Логічне АБО біта й переносу;

(C)(C) OR (bit)

ORL C, /bit

Циклів 2

10100000

Формат 4

Логічне АБО інверсії біта й переносу; (С)(С) OR (/bit)

MOV C, bit

Циклів 2

10100010

Формат 4

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

(C)(bit)

MOV bit, C

Циклів 2

10010010

Формат 4

Пересилка переносу в біт; (bit)(C)

Команди передачі керування

LJMP ad16

Циклів 2

00000010

Формат 12

Довгий перехід у повному об'ємі пам'яті програм; (РС)ad16

AJMP ad11

Циклів 2

a[10]a[9]

a[8]00001

Формат 6

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

(PC)(PC)+2; (PC[10-0])ad11

SJMP re1

Циклів 2

10000000

Формат 5

Короткий перехід усередині сторінки в 256 байт; (PC)(PC)+2; (PC)(PC)+re1

JMP @A+DPTR

Циклів 2

01110011

Формат 1

Косвенний перехід; (PC)(A)+(DPTR)

JZ re1

Циклів 2

01100000

Формат 5

Перехід, якщо акумулятор дорівнює нулю; (PC)(PC)+2;

якщо (A)=0, то (PC)(PC)+re1

JNZ re1

Циклів 2

01110000

Формат 5

Перехід, якщо акумулятор не дорівнює нулю; (PC)(PC)+2;

якщо (A)<>0, то (PC)(PC)+re1

JC re1

Циклів 2

01000000

Формат 5

Перехід, якщо перенос установлено; (PC)(PC)+2;

якщо (C)=1, то (PC)(PC)+re1

JNC re1

Циклів 2

00110000

Формат 5

Перехід, якщо перенос установлено;(PC)(PC)+2;

якщо (C)=0, то (PC)(PC)+re1

JB bit,re1

Циклів 2

00010000

Формат 11

Перехід, якщо біт установлено; (PC)(PC)+3;

якщо (b)=1, то (PC)(PC)+re1

JNB bit, re1

Циклів 2

00010000

Формат 11

Перехід, якщо біт не встановлено; (PC)(PC)+3;

якщо (b)=0, то (PC)(PC)+re1

JBC bit, re1

Циклів 2

11011rrr

Формат 11

Перехід, якщо біт встановлено й обнуленя цього біта; (PC)(PC)+3;

якщо (b)=1, то (PC)(PC)+re1;

(b)0

DJNZ Rn, re1

Циклів 2

11010101

Формат 5

Декремент регістра й перехід, якщо не нуль; (PC)(PC)+2; (Rn)(Rn)-1; якщо (Rn)<>0, то (PC)(PC)+re1

DJNZ ad, re1

Циклів 2

11010101

Формат 8

Декремент прямоадресуємого байта й перехід, якщо не нуль; (PC)(PC)+2; (ad)(ad)-1;

Якщо (ad)<>0, то (PC)(PC)+re1

Продовження Таблиці 2

CJNE A,ad, re1

Циклів 2

10110101

Формат 8

Порівняння акумулятора зпрямоадресуємим байтом і перехід, якщо не дорівнює;

(PC)(PC)+3;

якщо (ad)<(A),

то (PC)(PC)+re1, (C)0;

якщо (ad)>(A),

то (PC)(PC)+re1,(C)1

CJNE A, #d, re1

Циклів 2

10110100

Формат 10

(PC)(PC)+3;

якщо #d<(Rn),

то (PC)(PC)+re1, (C)0;

якщо #d>(Rn),

то (PC)(PC)+re1, (C)1

CJNE Rn, #d, re1

Циклів 2

10111rrr

Формат 10

Порівняння байта з РПД з константою й перехід, якщо не дорівнює; (PC)(PC)+3; якщо #d<((Ri)),

то (PC)(PC)+re1, (C)0;

якщо #d>((Ri)), то (PC)(PC)+re1, (C)1

LCAL ad16

Циклів 2

00010010

Формат 12

Довгий виклик підпрограми;

(PC)(PC)+3, (SP)(SP)+1, ((SP))(PC[7-0]),(SP)(SP)+1, ((SP))(PC[15-8]),(PC)ad16

ACALL ad11

Циклів 2

a[10]a[9]

a[8]10001

Формат 6

Абсолютний виклик підпрограми в межах сторінки в 2 Кбайт;

(PC)(PC)+2, (SP)(SP)+1, ((SP))(PC[7-0]), (SP)(SP)+1, ((SP))(PC[15-8]),

(PC)[10-0]ad11

RET

Циклів 2

00100010

Формат 1

Поверненя з підпрограми;

(PC[15-8])((SP)), (SP)(SP)-1, (PC[7-0])((SP)), (SP)(SP)-1

RETI

Циклів 2

00110010

Формат 1

Повернення з переривання; (PC[15-8])((SP)), (SP)(SP)-1, (PC[7-0])((SP)), (SP)(SP)-1

NOP

Циклів 1

00000000

Формат 1

Немає операції; (PC)(PC)-1

В таблиці 3 наведено команди, що впливають на установку прапорців PSW (х – прапорець дорівнює 0 або 1).

Нижче наводиться опис особливостей деяких команд.

Арифметичні команди

При операції MUL помножаються цілі беззнакові (уміст акумулятора на вміст регістра В). Старший байт добутку поміщається в регістр У, молодший в акумулятор. Прапорець переповнення встановлюється, якщо результат перевищує 255 (0FFh).

Таблиця 3

Мнемоніка

Прапорці

Мнемоніка

Прапорці

C

OV

AC

C

OV

AC

ADD

x

x

x

CLR C

0

ADDC

x

x

x

CPL C

x

SUBB

x

x

x

ANL C, bit

x

MUL

0

x

ANL C, /bit

x

Таблиця 3. Продовження

DIV

0

x

ORL C, bit

x

DA

x

ORL C, /bit

x

RRC

x

MOV C, bit

x

RLC

x

CJNE

x

SETB C

1

Команди ділення DIV ділить цілі беззнакові числа. Ділене розміщається в акумуляторі, дільник – в регістрі В. ціла частина частки розміщується в А, а остача – в регістрі В. прапорці С та OV обнуляються. Виключення становить лише той випадок, коли дільник дорівнює нулю, тут прапорець переповнення встановлюється.

При виконанні команд додавання (ADD) або додавання з переносом (ADDC) встановлюються прапорці С та АС (при виникненні переносів відповідно із розрядів 7 і 3). Пропорець С при додаванні чисел без знаку вказує на появу переповнення. Біт OV встановлюється, якщо є перенос із біта 6 і немає переносу з біта 7. При додаванні чисел із знаком біт OV вказує на від'ємну суму при додаванні додатних операндів або на додатну суму двох від'ємних доданків.

В командах “віднімання з запозиченням” прапорці С та АС установлюються, якщо необхідне запозичення для бітів 7 та 3. Біт OV при відніманні чисел зі знаком свідчить про від'ємний результат при відніманні від'ємного числа з додатного або про додатній результат при відніманні додатного числа з від'ємного.

Команда десяткової корекції DA корегує в акумуляторі результат додавання (командами ADD та ADDC) двох змінних, що представлені у двійково-десятичному форматі. Мета операції отримати дві двійково-десяткові цифри. Команда виконує двійково-десяткове перетворення шляхом складання вмісту А з числами 06, 60h, 66h у відповідності від висхідного стану А та прапорців С, АС. Команда DA використовується лише після операції додавання і не може використовуватись, наприклад, після операції віднімання, а також виконувати просте перетворення шістнадцятирічного числа у двійково-десяткове.

Команди передачі даних

Команда завантаження покажчика даних завантажує DPTR 2-байтною константою з 2-го та 3-го байтів команди. При цьому другий байт команди пересилається в DPH, третій – в DPL.

Зчитування даних із пам'яті програм виконується командами MOVC. Адреса зчитуємого байта обчислюється як сума вмісту А (число без знака) і одного з двох 16-розрядних регістрів (DPTR або РС).

Мається два типа команд MOVX обміну із зовнішньою пам'яттю даних. Перший з них забезпечує доступ до 256 коміркам ВПД, при чому адреса розміщується в регістрах R1 або R0 поточного байта регістрів. Другий забезпечує доступ до розширеної ВПД, котра може містити до 64 Кбайт пам'яті. Адреса в цьому випадку розміщується в регістрі-покажчику даних DPTR.

Логічні команди

Ці команди виконують операції І, АБО, ВИКЛЮЧАЮЧЕ АБО і записують результат у байт призначення. Є також команди циклічного й арифметичного зсуву вправо та вліво.

Команди операцій з бітами

Працюють із бітом переносу і будь-якими іншими бітами, що дозволяють пряму адресацію. Наприклад, якщо С=0, розряд порту Р1.0=0, то виконання команди ORL С, /Р1.0 приведе до встановлення біта С.

Команди передачі керування

Указана група містить команди умовного та безумовного переходу, виклику та повернення з програм. До команд безумовного переходу відносяться:

-- довгий перехід LGMP, який дозволяє виконувати передачу керування в межах усієї пам'яті програм (до 64 Кбайт). Команда містить 3 байта. Для економії пам'яті, якщо це можливо, використовують наведені нижче команди, що мають меншу довжину;

-- абсолютний перехід AJMP для переходу в межах сторінки розміром 2048 байт, для чого в коді команди задаються 11 молодших розрядів адреси;

-- короткий перехід SJMP у межах –128/+127 байт відносно адреси команди, що слідує за SJMP. Для такого переходу в другому байті команди задається зміщення re1 – ціле число зі знаком. Такий само метод адресації використовують і всі команди умовного переходу.

-- косвенний перехід JMP @A+DPTR дозволяє виконати перехід за адресою, спочатку невідомою й обчислюємою програмою. Приклад використання цієї команди наведено нижче.

Команди умовних переходів дозволяють виконувати розгалудження за наступними умовами: уміст А дорівнює нулю (JZ), не дорівнює нулю (JNZ); перенос дорівнює нулю (JNC), не дорівнює нулю (JC); адресуємий біт дорівнює нулю (JNB), не дорівнює нулю (JB, JBC).

Команди DJNZ виконує декремент указаної комірки і виконує розгалудження, якщо результат не дорівнює нулю. У протилежному випадку виконується перехід до наступної команди. Адреса переходу визначається додаванням вмісту лічильника команд, збільшеного на 2, із зміщенням. Цю команду зручно використовувати для організації циклів.

Команда “порівняння й перехід, якщо не дорівнює” CJNE порівнює значення двох операндів і виконує розгалудження, якщо вони не рівні. Обидва операнди є цілими беззнаковими. В залежності від співвідношення операндів установлюється (обнуляється) біт С (табл. 2).

Для звернення до підпрограми використовуються команди ACALL (абсолютний виклик) і LCALL (довгий виклик). Ці команди на відміну від команд переходу AJMP, LJMP зберігають у стеку адресу звороту в основну програму. Для повернення з підпрограми використовується команда RET, після виконання якої програма продовжує виконання з команди, що йде за LCALL або ACALL.

Для повернення з підпрограми обробки переривань використовується команда RETI. Її відмінність від команди RET у тому, що вона дозволяє переривання обслуженого рівня. Якщо при виконанні команди RETI знайдено переривання з таким само чи меншим рівнем пріоритету, одна команда основної програми виконується до обробки такого переривання. Це властивість системи переривань можна використовувати для організації покрокового виконання програми, зручного при відладці контролерів.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.