Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Система команд МК містить 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 Формат 3 Пересилка в акумулятор прямоадресуємого байта;(A)(ad)
MOV A, @Ri Циклів 1 1110011i Формат 1 Пересилка в акумулятор байта з РДП;(A)((Ri))
MOV A, #d Циклів 1 Формат 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 Формат 3 Пересилка за прямою адресою акумулятора; (ad)(A)
MOV ad, Rn Циклів 2 10001rrr Формат 3 Пересилка за прямою адресою регістра; (ad)(Rn)
MOV add, ads Циклів 2 Формат 9 Пересилка прямоадресуємого байта за прямою адресою; (add)(ads)
MOV ad, @Ri Циклів 2 1000011i Формат 3 Пересилка байта із РДП за прямою адресою; (ad)((Ri))
MOV ad, #d Циклів 2 Формат 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 Формат 13 Завантаження покажчика даних; (DPTR)#d16
Продовження Таблиці 2
MOV A, @A+DPTR

Циклів 2

Формат 1 Пересилка в акумулятор байта з пам'яті програм; (A)((A))+(DPTR)
MOV A, @A+PC Циклів 2 Формат 1 Пересилка в акумулятор байта з пам'яті програм; (PC)(PC)+1; (A)((A)+(PC))
MOVX A, @Ri Циклів 2 1110001i Формат 1 Пересилка в акумулятор байта з ВПД;(A)((Ri))
MOVX A, @DPTR Циклів 2 Формат 1 Пересилка в акумулятор байта з розширеної ВПД; (A)((DPTR))
MOVX @Ri, A Циклів 2 1111001i Формат 1 Пересилка в ВПД з акумулятора; ((Ri))(A)
MOVX @DPTR, A Циклів 2 Формат 1 Пересилка в розширену ВПД з акумулятора; ((DPTR))(A)
PUSH ad Циклів 2 Формат 3 Завантаження в стек; (SP)(SP)+1; ((SP))(ad)
POP ad Циклів 2 Формат 3 Витягування зі стека; (ad)((SP)); (SP)(SP)-1
XCH A,Rn Циклів 1 11001rrr Формат 1 Обмін акумулятора з регістром; (A)®(Rn)
XCH A, ad Циклів 1 Формат 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 Формат 3 Складання акумулятора з прямоадресуємим байтом; (A)(A)+(ad)
ADD A, @Ri Циклів 1 0010011i Формат 1 Складання акумулятора з байтом з РПД; (A)(A)+((Ri))
ADD A, #d Циклів 1 Формат 2 Складання акумулятора з константою; (A)(A)+#d
ADDC A, Rn Циклів 1 00111rrr Формат 1 Складання акумулятора з байтом з РПД; (A)(A)+(Rn)+(C)
ADDC A, ad Циклів 1 Формат 3 Складання акумулятора зпрямоадресуємим байтом та переносом; (A)(A)+(ad)+(C)
ADDC A, @Ri Циклів 1 0011011i Формат 1 Складання акумулятора з байтом з РПД і переносом; (A)(A)+((Ri))+(C)
ADDC A, #d Циклів 1 Формат 2 Складання акумулятора з константою й переносом; (A)(A)+#d+C
DA A Циклів 1 Формат 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

Формат 3 Віднімання від акумулятора прямоадресуємого байта й запозичення; (A)(A)-(ad)-(C)
SUBB A, @Ri Циклів 1 1001011i Формат 1 Віднімання від акумулятора байта РПД і запозичення; (A)(A)-((Ri))-(C)
SUBB A, #d Циклів 1 Формат 2 Віднімання з акумулятора константи та запозичення; (A)(A)-#d-(C)
INC A Циклів 1 Формат 1 Інкремент акумулятора; (A)(A)+1
INC Rn Циклів 1 00001rrr Формат 1 Інкремент регістра; (Rn)(Rn)+1
INC ad Циклів 1 Формат 3 Інкремент прямоадресуємого байта; (ad)(ad)+1
INC @Ri Циклів 1 0000011i Формат 1 Інкремент байта в РПД; ((Ri))((Ri))+1
INC DPTR Циклів 2 Формат 1 Інкремент покажчика даних; (DPTR)(DPTR)+1
DEC A Циклів 1 Формат 1 Декремент акумулятора; (A)(A)-1
DEC Rn Циклів 1 00011rrr Формат 1 Декремент регістра; (Rn)(Rn)-1
DEC ad Циклів 1 Формат 3 Декремент прямоадресуємого байта; (ad)(ad)-1
DEC @Ri Циклів 1 0001011i Формат 1 Декремент байта в РПД; ((Ri))((Ri))-1
MUL AB Циклів 4 Формат 1 Множення акумулятора на регістр В; (B).(A)(A)*(B)
DIV AB Циклів 4 Формат 1 Ділення акумулятора на регістр В; (A).(B)(A)/(B)
Логічні команди
ANL A, Rn Циклів 1 01011rrr Формат 1 Логічне І акумулятора та регістра; (A)(A) AND (Rn)
ANL A, ad Циклів 1 Формат 3 Логічне І акумулятора та прямоадресуємого байта; (A)(A) AND (ad)
ANL A, @Ri Циклів 1 0101011i Формат 1 Логічне І акумулятора й байта з РПД; (A)(A) AND ((Ri))
ANL A, #d Циклів 1 Формат 2 Логічне І акумулятора й константи; (A)(A) AND #d
ANL ad, A Циклів 1 Формат 3 Логічне І прямоадресуємого байта й акумулятора; (ad)(ad) AND (A)
ANL ad, #d Циклів 2 Формат 7 Логічне І прямоадресуємого байта й константи; (ad)(ad) AND #d
ORL A, Rn Циклів 1 01001rrr Формат 1 Логічне АБО акумулятора й регістра; (A)(A) OR (Rn)
ORL A, ad Циклів 1 Формат 3 Логічне АБО акумулятора і прямоадресуємого байта; (A)(A) OR (ad)
ORL A, @Ri Циклів 1 0100011i Формат 1 Логічне АБО акумулятора й байта з РПД; (A)(A) OR ((Ri))
Продовження Таблиці 2
ORL A, #d

Циклів 1

Формат 2 Логічне АБО акумулятора й константи; (A)(A) OR #d
ORL ad, A Циклів 1 Формат 3 Логічне АБО прямоадресуємого байта й акумулятора; (ad)(ad) OR (A)
ORL ad, #d Циклів 2 Формат 7 Логічне АБО прямоадресуємого байта й константи; (ad)(ad) OR #d
XRL A, Rn Циклів 1 01101rrr Формат 1 Виключаюче АБО акумулятора та регістра; (A)(A) XOR (Rn)
XRL A, ad Циклів 1 Формат 3 Виключаюче АБО акумулятора та прямоадресуємого байта; (A)(A) XOR (ad)
XRL A, @Ri Циклів 1 0110011i Формат 1 Виключаюче АБО акумулятора й байта із РПД; (A)(A) XOR ((Ri))
XRL A, #d Циклів 1 Формат 2 Виключаюче АБО акумулятора й константи; (A)(A) XOR #d
XRL ad, A Циклів 1 Формат 3 Виключаюче АБО прямоадресуємого байта й акумулятора; (ad)(ad) XOR
XRL ad, #d Циклів 2 Формат 7 Виключаюче АБО прямоадресуємого байта й константи; (ad)(ad) XOR #d
CLR A Циклів 1 Формат 1 Скид акумулятора; (А)0
CPL A Циклів 1 Формат 1 Інверсія акумулятора; (А)/(А)
RL A Циклів 1 Формат 1 Зсув акумулятора вліво циклічний; (A[j+1])(A[j]) для j=0-6; (A[0])(A[7])
RLC A Циклів 1 Формат 1 Зсув акумулятора вліво через перенос; (A[j+1])(A[j]) для j=0-6; (A[0])(C), (C)(A[7])
RR A Циклів 1 Формат 1 Зсув акумулятора вправо циклічний; (A[j])(A[j+1]) для j=0-6; (A[7])(A[0])
RRC A Циклів 1 Формат 1 Зсув акумулятора вправо через перенос; (A[j])(A[j+1]) для j=0-6; (A[7])(C), (C)(A[0])
SWAP A Циклів 1 Формат 1 Обмін містами тетрад в акумуляторі; (A[0-3])®(A[4-7])
Команди операцій з бітами
CLR C Циклів 1 Формат 1 Обнуління переносу; (С)0
CLR bit Циклів 1 Формат 4 Обнуління біта; (b)0
CPL C Циклів 1 Формат 1 Інверсія переносу; (С)/(С)
CPL bit Циклів 1 Формат 4 Інверсія біта; (b)/(b)
SETB C Циклів 1 Формат 1 Установка переносу; (С)1
Продовження Таблиці 2
SETB bit

Циклів 1

Формат 4 Установка біта; (b)1
ANL C, bit Циклів 2 Формат 4 Логічне І біта та переносу; (C)(C) AND (bit)
ANL C, /bit Циклів 2 Формат 4 Логічне І інверсія біта й переносу; (С)(С) AND (/bit)
ORL C, bit Циклів 2 Формат 4 Логічне АБО біта й переносу; (C)(C) OR (bit)
ORL C, /bit Циклів 2 Формат 4 Логічне АБО інверсії біта й переносу; (С)(С) OR (/bit)
MOV C, bit Циклів 2 Формат 4 Пересилка біта в перенос; (C)(bit)
MOV bit, C Циклів 2 Формат 4 Пересилка переносу в біт; (bit)(C)
Команди передачі керування
LJMP ad16 Циклів 2 Формат 12 Довгий перехід у повному об'ємі пам'яті програм; (РС)ad16
AJMP ad11 Циклів 2 a[10]a[9] a[8]00001 Формат 6 Абсолютний перехід усередині сторінки в 2 Кбайт; (PC)(PC)+2; (PC[10-0])ad11
SJMP re1 Циклів 2 Формат 5 Короткий перехід усередині сторінки в 256 байт; (PC)(PC)+2; (PC)(PC)+re1
JMP @A+DPTR Циклів 2 Формат 1 Косвенний перехід; (PC)(A)+(DPTR)
JZ re1 Циклів 2 Формат 5 Перехід, якщо акумулятор дорівнює нулю; (PC)(PC)+2; якщо (A)=0, то (PC)(PC)+re1
JNZ re1 Циклів 2 Формат 5 Перехід, якщо акумулятор не дорівнює нулю; (PC)(PC)+2; якщо (A)<>0, то (PC)(PC)+re1
JC re1 Циклів 2 Формат 5 Перехід, якщо перенос установлено; (PC)(PC)+2; якщо (C)=1, то (PC)(PC)+re1
JNC re1 Циклів 2 Формат 5 Перехід, якщо перенос установлено;(PC)(PC)+2; якщо (C)=0, то (PC)(PC)+re1
JB bit,re1 Циклів 2 Формат 11 Перехід, якщо біт установлено; (PC)(PC)+3; якщо (b)=1, то (PC)(PC)+re1
JNB bit, re1 Циклів 2 Формат 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 Формат 5 Декремент регістра й перехід, якщо не нуль; (PC)(PC)+2; (Rn)(Rn)-1; якщо (Rn)<>0, то (PC)(PC)+re1
DJNZ ad, re1 Циклів 2 Формат 8 Декремент прямоадресуємого байта й перехід, якщо не нуль; (PC)(PC)+2; (ad)(ad)-1; Якщо (ad)<>0, то (PC)(PC)+re1
Продовження Таблиці 2
CJNE A,ad, re1

Циклів 2

Формат 8 Порівняння акумулятора зпрямоадресуємим байтом і перехід, якщо не дорівнює; (PC)(PC)+3; якщо (ad)<(A), то (PC)(PC)+re1, (C)0; якщо (ad)>(A), то (PC)(PC)+re1,(C)1
CJNE A, #d, re1 Циклів 2 Формат 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 Формат 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 Формат 1 Поверненя з підпрограми; (PC[15-8])((SP)), (SP)(SP)-1, (PC[7-0])((SP)), (SP)(SP)-1
RETI Циклів 2 Формат 1 Повернення з переривання; (PC[15-8])((SP)), (SP)(SP)-1, (PC[7-0])((SP)), (SP)(SP)-1
NOP Циклів 1 Формат 1 Немає операції; (PC)(PC)-1

 

 

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

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

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

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

 

Таблиця 3

Мнемоніка Прапорці Мнемоніка Прапорці
C OV AC C OV AC
ADD x x x CLR C      
ADDC x x x CPL C x    
SUBB x x x ANL C, bit x    
MUL   x   ANL C, /bit x    
Таблиця 3. Продовження  
DIV

  x   ORL C, bit x    
DA x     ORL C, /bit x    
RRC x     MOV C, bit x    
RLC x     CJNE x    
SETB C              

 

Команди ділення 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 знайдено переривання з таким само чи меншим рівнем пріоритету, одна команда основної програми виконується до обробки такого переривання. Це властивість системи переривань можна використовувати для організації покрокового виконання програми, зручного при відладці контролерів.




Поделиться с друзьями:


Дата добавления: 2015-04-29; Просмотров: 853; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.