Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

КОМАНДИ АРИФМЕТИЧНИХ ОПЕРАЦІЙ.




ЗАГАЛЬНІ ВІДОМОСТІ ПРО СИСТЕМУ КОМАНД МІКРОКОНТРОЛЕРА СІМЕЙСТВА 8х51.

Система команд мікроконтролера сімейства 8х51 включає у себе 111 основних команд. Їх довжина - один, два, або три байти, але більшість із них (94%) - це одно- або двобайтні команди. Всі команди виконуються за один або два машинні цикли ( відповідно 1 або 2 мкс при тактовій частоті 12 МГц ). Виключенням є команди множення та ділення, які виконуються за чотири машинні цикли ( 4 мкс ).

Мікроконтролери сімейства 8х51 використовують прямий, безпосередній, непрямий та неявний способи адресації даних. В якості операндів команд мікроконтролери сімейства 8х51 можуть використовувати окремі біти, чотирьохбітні цифри, байти або двобайтні слова. Всього мікроконтролер виконує 13 типів команд.

Мікроконтролер має можливість адресації окремих біт у резидентній пам’яті даних. Крім цього деякі регістри блока регістрів спеціальних функцій також використовують адресацію окремих біт.

Адреси банків регістрів загального призначення в резидентній пам’яті даних (РПД) наведені у табл. 1. Карти регістрів та адресів окремих біт в резидентній пам’яті даних і в блоці регістрів спеціальних функцій наведені відповідно у табл. 2 та 3 .

 


 

 

  D7 . . . D0        
1 КОП        
      D7 . . . D0    
2 КОП   # d    
3 КОП   ad    
4 КОП   bit    
5 КОП   rel    
6 а10а9а8 | КОП   а7 . . . а0    
          D7 . . . D0
7 КОП   ad   # d
8 КОП   ad   rel
9 КОП   ads   add
10 КОП   # d   rel
11 КОП   bit   rel
12 КОП   ad16h   ad16h
13 КОП   # d16h   # d16h

Рисунок 1.1 - Типи команд мікроконтролера сімейства 8х51.

 

При перегляді команд будуть використані наступні позначення:

Rn - регістр загального призначення (n=0, 1, ..., 7) у вибраному банку регістрів;
@Ri - регістр загального призначення (i=0, 1) у вибраному банку, який використовується як регістр непрямого адресу;
ad - адрес прямоадресованого байту;
ads - адрес прямоадресованого байта-джерела;
add - адрес прямоадресованого байта-отримувача;
ad11 - 11-розрядний абсолютний адрес переходу;
ad16h - 16-розрядний абсолютний адрес переходу;
rel - відносний адрес переходу;
# d - безпосередній операнд;
# d16h - безпосередній операнд ( 2 байти );
bit - адрес прямоадресованого біта;
/bit - інверсія прямоадресованого біта;
A - акумулятор ( регістр А );
B - регістр В;
PC - лічильник команд;
DPTR - регістр показник даних;
() - вмістиме комірки пам’яті.

Таблиця 1

Адреси банків регістрів R0-R7 загального призначення в резидентній пам’яті даних (РПД).

Адрес РПД Байт даних РПД Регістр
1Fh - 18h Банк 3 R7...R0
17h - 10h Банк 2 R7...R0
0Fh - 08h Банк 1 R7...R0
07h - 00h Банк 0 R7...R0

Таблиця 2

 Карта адресів окремих біт в резидентній пам’яті даних (РПД).

Адрес

РПД

Байт даних РПД

D7 D6 D5 D4 D3 D2 D1 D0
7Fh   30h         .   .   .    
2Fh 7F 7E 7D 7C 7B 7A 79 78
2Eh 77 76 75 74 73 72 71 70
2Dh 6F 6E 6D 6C 6B 6A 69 68
2Ch 67 66 65 64 63 62 61 60
2Bh 5F 5E 5D 5C 5B 5A 59 58
2Ah 57 56 55 54 53 52 51 50
29h 4F 4E 4D 4C 4B 4A 49 48
28h 47 46 45 44 43 42 41 40
27h 3F 3E 3D 3C 3B 3A 39 38
26h 37 36 35 34 33 32 31 30
25h 2F 2E 2D 2C 2B 2A 29 28
24h 27 26 25 24 23 22 21 20
23h 1F 1E 1D 1C 1B 1A 19 18
22h 17 16 15 14 13 12 11 10
21h 0F 0E 0D 0C 0B 0A 09 08
20h 07 06 05 04 03 02 01 00

Таблиця 3

Карта регістрів та адресів окремих біт в блоці регістрів спеціальних функцій (РСФ).

Регі-

стри

Ад-

рес

Блок РСФ

D7 D6 D5 D4 D3 D2 D1 D0
B FOh F7 F6 F5 F4 F3 F2 F1 F0
A EOh E7 E6 E5 E4 E3 E2 E1 E0
PSW DOh D7 D6 D5 D4 D3 D2 D1 D0
IP B8h - - - BC BB BA B9 B8
P3 B0h B7 B6 B5 B4 B3 B2 B1 B0
IE A8h AF - - AC AB AA A9 A8
P2 A0h A7 A6 A5 A4 A3 A2 A1 A0
Sbuf 99h - - - - - - - -
Scon 98h 9F 9E 9D 9C 9B 9A 99 98
P1 90h 97 96 95 94 93 92 91 90
TH1 8Dh - - - - - - - -
TH0 8Ch - - - - - - - -
TL1 8Bh - - - - - - - -
TL0 8Ah - - - - - - - -
Tmod 89h - - - - - - - -
Tcon 88h 8F 8E 8D 8C 8B 8A 89 88
Pcon 87h - - - - - - - -
DPH 83h - - - - - - - -
DPL 82h - - - - - - - -
SP 81h - - - - - - - -
P0 80h 87 86 85 84 83 82 81 80

 


ФУНКЦІОНАЛЬНІ ГРУПИ КОМАНД МІКРОКОНТРОЛЕРА СІМЕЙСТВА 8х51.

Всі команди мікроконтролера сімейства 8х51 можна розбити на п’ять функціональних груп:

- переміщення даних;

- арифметичних операцій;

- логічних операцій;

- операцій над бітами;

- передачі керування.



КОМАНДИ ПЕРЕМІЩЕННЯ ДАНИХ.

Ця група включає 28 команд, короткий алгоритм яких наведено в табл. 4, де також вказано код операції ( КОП ), тип команди ( Т ) у відповідності з рис. 1, її довжина в байтах ( В ) та час виконання в машинних циклах ( С ).

Таблиця 4

Команди переміщення даних.

МНЕМОКОД КОП Т В С АЛГОРИТМ
MOV A,Rn MOV A,ad MOV A,@Ri MOV A,#d MOV Rn,A MOV Rn,ad MOV Rn,#d MOV ad,A MOV ad,Rn MOV add,ads MOV ad,@Ri MOV ad,#d MOV @Ri,A MOV @Ri,ad MOV @Ri,#d MOV DPTR,#d16 MOVC A,@A+DPTR MOVC A,@A+PC   MOVX A,@Ri MOVX A,@DPTR MOVX @Ri,A MOVX @DPTR,A PUSH ad   POP ad   XCH A,Rn XCH A,ad XCH A,@Ri XCHD A,@Ri   11101rrr 11100101 1110011i 01110100 11111rrr 10101rrr 01111rrr 11110101 10001rrr 10000101 1000011i 01110101 1111011i 0110011i 0111011i 10010000 10010011 10000011   1110001i 11100000 1111001i 11110000 11000000   11010000   11001rrr 11000101 1100011i 1101011i 1 3 1 2 1 3 2 3 3 9 3 7 1 3 2 13 1 1   1 1 1 1 3   3   1 3 1 1 1 2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 1 1   1 1 1 1 2   2   1 2 1 1 1 1 1 1 1 2 1 1 2 2 2 2 1 2 1 2 2 2   2 2 2 2 2   2   1 1 1 1 A=Rn A=(ad) A=(Ri) A=#d Rn=A Rn=(ad) Rn=#d (ad)=A (ad)=Rn (add)=(ads) (ad)=(Ri) (ad)=#d (Ri)=A (Ri)=(ad) (Ri)=#d DPTR=#d16 A=(A+DPTR) PC=PC+1 A=(A+PC) A=(Ri) A=(DPTR) (Ri)=A (DPTR)=A SP=SP+1 (SP)=(ad) (ad)=(SP) SP=SP-1 A<=>Rn A<=>(ad) A<=>(Ri) A0-3<=>(Ri0-3)

 За командою MOV виконується переміщення даних із другого операнда в перший. Ця команда не має доступу ні до зовнішньої пам’яті даних, ні до пам’яті програм. Для цього застосовують команди MOVX та MOVC відповідно. Перша з них забезпечує читання/запис байтів із зовнішньої пам’яті даних, друга - читання байт із пам’яті програм.

За командою XCH виконується обмін байтами між акумулятором і коміркою регістра пам’яті даних, а за командою XCHD - обмін молодшими тетрадами ( бітами 0-3 ) між акумулятором і коміркою регістра пам’яті даних.

Доступ до спеціальних регістрів: PSW, таймером, портами вводу-виводу і до інших регістрів спеціальних функцій, здійснюється заданням відповідного прямого адресу. Ці команди відносяться до команд типу 3. Наприклад, читання PSW в акумулятор може бути виконаний командою

MOV A, PSW ,

яка перетвориться АСЕМБЛЕРом до вигляду

MOV A, 0D0h ( E5 D0 ),

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


КОМАНДИ АРИФМЕТИЧНИХ ОПЕРАЦІЙ.

Ця група включає 24 команди, алгоритм виконання яких наведений в табл. 5.

Мікроконтролера виконує достатньо широкий набір команд для організації обробки даних, включаючи при цьому команди множення та ділення. За результатами виконання команд ADD, ADDC, SUBB, MUL, DIV встановлюється значення регістра ознак PSW, структура якого наведена на рис.2.

 

Рисунок 2 - Структура регістра ознак PSW.

Таблиця 5

Команди арифметичних операцій.

МНЕМОКОД КОП Т В С АЛГОРИТМ
   ADD A,Rn  ADD A,ad ADD A,@Ri ADD A,#d ADDC A,Rn ADDC A,ad ADDC A,@Ri ADDC A,#d DA   A   SUBB A,Rn SUBB A,ad SUBB A,@Ri SUBB A,#d INC A INC Rn INC ad INC @Ri INC DPTR DEC A DEC Rn DEC ad DEC @Ri MUL AB DIV  AB     00101rrr 00100101 0010011i 00100100 00111rrr 00110101 0011011i 00110100 11010100   10011rrr 10010101 1001011i 10010100 00000100 00001rrr 00000101 0000011i 10100011 00010100 00011rrr 00010101 0001011i 10100100 10000100     1 3 1 2 1 3 1 2 1   1 3 1 2 1 1 3 1 1 1 1 3 1 1 1   1 2 1 2 1 2 1 2 1   1 2 1 2 1 1 2 1 1 1 1 2 1 1 1   1 1 1 1 1 1 1 1 1   1 1 1 1 1 1 1 1 2 1 1 1 1 4 4   A=A+Rn A=A+(ad) A=A+(Ri) A=A+#d A=A+Rn+C A=A+(ad)+C A=A+(Ri)+C A=A+#d+C Двіково-десяткова корекція A=A-Rn A=A-(ad) A=A-(Ri) A=A-#d A=A+1 Rn=Rn+1 (ad)=(ad)+1 (Ri)=(Ri)+1 DPTR=DPTR+1 A=A-1 Rn=Rn-1 (ad)=(ad)-1 (Ri)=(Ri)-1 B A = A*B A.B = A/B

 

Ознака С встановлюється при переносі із розряду D7, тобто у випадку, коли при виконанні операції результат не поміщається у розрядній сітці акумулятора. Ознака АС встановлюється при переносі із розряду D3 в командах додавання та віднімання і використовується для реалізації десяткової арифметики. Ця ознака використовується при виконанні команди DA A.

Ознаки RS1 та RS0 застосовуються для вибору банків регістрів загального призначення R0-R7 згідно з табл. 6.

Ознака OV встановлюється при переносі із розряду D6, тобто у випадку, коли результат не поміщається у семи розрядах і восьмий не може бути використаний, як знаковий. Ця ознака необхідна для організації обробки чисел зі знаком. Ознака Р встановлюється і скидається апаратно. Якщо число одиничних біт в акумуляторі непарне, то Р=1, у іншому випадку Р=0.

Таблиця 6

Вибір банків регістрів загального призначення (РЗП) R0-R7 за ознаками RS1 та RS0.

Ознака

Банк

регістрів

РЗП

Адрес

у РПД

РЗП

Адрес

у РПД

RS1 RS0  
0 0 Банк 0 R0 00h R4 04h
      R1 01h R5 05h
      R2 02h R6 06h
      R3 03h R7 07h
0 1 Банк 1 R0 08h R4 0Ch
      R1 09h R5 0Dh
      R2 0Ah R6 0Eh
      R3 0Bh R7 0Fh
1 0 Банк 2 R0 10h R4 14h
      R1 11h R5 15h
      R2 12h R6 16h
      R3 13h R7 17h
1 1 Банк 3 R0 18h R4 1Ch
      R1 19h R5 1Dh
      R2 1Ah R6 1Eh
      R3 1Bh R7 1Fh

КОМАНДИ ЛОГІЧНИХ ОПЕРАЦІЙ.

У цій групі 25 команд, короткий алгоритм яких наведений у табл. 7. Ці команди виконують операції над байтами: логічне “І”, логічне “АБО”, логічне “Виключаючи АБО”, логічне заперечення, скид у нульове значення та зсув.


Таблиця 7

Команди логічних операцій.










Последнее изменение этой страницы: 2018-06-01; просмотров: 190.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...