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

Система команд мови АСМ51

Читайте также:
  1. E согласно механизму сотрудничества с системами фермента.
  2. II. Богословская система
  3. III. Лексика как система (8 часов)
  4. IV. Алгоритм действий командира (начальника) при увольнении военнослужащего в связи с невыполнением им условий контракта
  5. Q.50 Обратитесь к выставке. НОК техником на провайдера входит в команду, показанную. Назовите две причины, чтобы использовать эту команду? (Выберите два.)
  6. SCADA как система диспетчерского управления
  7. SCADA система Citect
  8. SCADA-система: назначение и функции
  9. SCADA: требования к системам верхнего уровня
  10. Shelter (разработчик USC) – система управления отелем, гостиницей, домов отдыха, пансионатов, санаториев
  11. VI регионального слета студенческих спасательных отрядов среди команд Сибирского федерального округа
  12. VІ. Узагальнення і систематизація знань. Практична робота

 

Система команд мови АСМ51 містить 111 команд, що забезпечують реалізацію широкої номенклатури арифметичних і логічних операцій, а також операцій пересилання даних і передачі керування. У табл.2.9 приведені позначення, використовувані в описі команд.

Таблиця 2.9

Позначення Призначення
Addr Символічне ім'я адреси комірки, що обчислюється, пам'яті програм.
addr11 Символічне ім'я 11-бітової адреси комірки пам'яті програм.
addr16 Символічне ім'я 16-бітової адреси комірки пам'яті програм.
bit Символічне ім'я 8-розрядної адреси біта в області комірок резидентної пам'яті або даних регістрів спеціальних функцій, що допускає побітове звертання (див. мал.2).
data8 Символічне ім'я байта даних.
data16 Символічне ім'я 16-бітових даних.
direct Символічне ім'я 8-розрядної адреси комірки резидентної пам'яті або даних регістра спеціальних функцій.
rel Значення байта зсуву, використовуваний при обчисленні адреси addr.
(X) Вміст елемента X.
((X)) Уміст за адресою, що зберігається в елементі X.
X[M] Розряд M елемента X.
X[3-0] Група розрядів елемента X.
:= Оператор присвоювання.
Ú Диз'юнкція.
Ù Кон’юнкція.
Å Додавання по модуля 2.
X:Y Цілочисельний розподіл елемента X на елемент Y.
mod[X:Y] Залишок при цілочисельному розподілі.

Час виконання розглянутих команд вказується в машинних циклах. Нагадаємо, що тривалість одного машинного циклу визначається вираженням , де f є частота синхронізації мікроконтролера.

 

ACALL addr11 addr11[10-8] 1 0 0 0 1 addr11[7-0]

Команда "абсолютний виклик підпрограми" викликає безумовно підпрограму, розміщену за адресою addr11. При цьому вміст лічильника команд PC збільшується на 2 для одержання адреси наступної команди, після чого отримане 16-розрядне значення PC поміщається в стек, і вміст покажчика стека SP також збільшується на 2. Адреса переходу утвориться за допомогою конкатенації (зчеплення) 5-ти старших біт збільшеного вмісту лічильника команд PC, вмісту 7-5 бітів старшого байта команди і вмісту другого байта команди. Адреса переходу і зазначена команда повинні знаходитися усередині однієї сторінки пам'яті програм (ПП) обсягом 2 Кбайт, обумовленої вмістом п'яти старших біт PC. Час виконання команди 2 цикли.

Алгоритм Приклад
(PC):=(PC)+2, (SP):=(SP)+1 ((SP)):=(PC[7-0]), (SP):=(SP)+1 ((SP)):=(PC[15-8]) (PC[10-0]):=addr11[10-8] çêaddr11[7-0], де çêє знак конкатенації ;(SP)=07H, (PC)=28DH, ;MT1 відповідає адресі;345H у ПП ACALL MT1;(PC)=345H,;(SP)=09H, ;у РПД (09H)=02H, (08H)=8FH

 

ADD A,Rn;де n=0-7 0 0 1 0 1 r r r де rrr=000B-111B

Команда "додавання" додає вміст акумулятора A із вмістом заданого регістра Rn обраного банку, розміщаючи результат у A. Вміст використовуваного регістра не змінюється. З появою переносів з розрядів 7 і 3 результати встановлюються в "1" прапор переносу C і прапор додаткового переносу AC відповідно, у противному випадку ці прапори скидаються в "0". Прапор переповнення OV встановлюється, якщо є перенос з біта 6 і немає переносу з біта 7, чи є перенос з біта 7 і немає - з біта 6, у противному випадку прапор OV скидається. Час виконання команди 1 цикл.

Алгоритм Приклад
(A):=(A)+(Rn), де n=0-7 (С):=x, (OV):=x, (AC):=x, де xÎ{0,1} ;(A)=0C3H, (R6)=0AAH ADD A,R6;(A)=6DH,(R6)=0AAH, ;(AC)=0, (C)=1, (OV)=1

 

ADD A,@Ri;де iÎ{0,1} 0 0 1 0 0 1 1 i  

Команда "додавання" додає вміст акумулятора A із вмістом комірки резидентної пам'яті даних (РПД), адресовану вмістом заданого регістра Ri обраного банку. Результат розміщається в A. Вміст використовуваного осередку не змінюється. Логіка установки (скидання) прапорів і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою.

Алгоритм Приклад
(A):=(A)+((Ri)), де iÎ{0,1} (С):=x, (OV):=x, (AC):=x, де xÎ{0,1} ;(A)=95H, (R1)=31H, ;у РПД (31H)=4CH ADD A,@R1;(A)=0E1H, (C)=0,;(AC)=1, (OV)=0, (31H)=4CH

 

ADD A,direct 0 0 1 0 0 1 0 1 direct

Команда "додавання" додає вміст акумулятора A із вмістом комірки резидентної пам'яті даних (або регістра спеціальних функцій), 8-розрядна адреса якої (якого) визначається символічним ім'ям direct. Результат міститься в A. Вміст використовуваної комірки використовуваного регістра не змінюється. Логіка установки (скидання) прапорів і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою.

Алгоритм Приклад
(A):=(A)+(direct) (С):=x, (OV):=x, (AC):=x, де xÎ{0,1} ;(A)=77H, (P1)=0FFH ADD A,P1;(A)=76H, ;(AC)=1, (C)=1, (OV)=0 ;(P1)=0FFH

 

ADD A,#data8 0 0 1 0 0 1 0 0 data8

Команда "додавання" додає вміст акумулятора A з байтом даних data8, безпосередньо зазначеним у команді. Результат розміщається в A. Логіка установки (скидання) прапорів і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою.

Алгоритм Приклад
(A):=(A)+data8 (С):=x, (OV):=x, (AC):=x, де xÎ{0,1} ;(A)=09H ADD A,#0D3H;(A)=0DCH, ;(AC)=0, (C)=0, (OV)=0

 

ADDC A,Rn;де n=0-7 0 0 1 1 1 r r r де rrr=000B-111B

Команда "додавання з переносом" одночасно додає вміст акумулятора A, вміст прапора переносу С і вміст заданого регістра Rn обраного банку, поміщаючи результат у A. Вміст використовуваного регістра не змінюється. З появою переносів з розрядів 7 і 3 результати встановлюються в "1" прапор переносу C і прапор додаткового переносу AC відповідно, у противному випадку ці прапори скидаються в "0". Прапор переповнення OV установлюється, якщо є перенос з біта 6 і немає переносу з біта 7, або є перенос з біта 7 і немає - з біта 6, у противному випадку прапор OV скидається. Час виконання команди 1 цикл.

  Алгоритм Приклад
  (A):=(A)+(C)+(Rn), де n=0-7 (С):=x, (OV):=x, (AC):=x, де xÎ{0,1} ;(A)=0B2H, (R3)=99H, (C)=1 ADDC A,R3;(A)=4CH,(R3)=99H, ;(AC)=0, (C)=1, (OV)=1
ADDC A,@Ri;де iÎ{0,1} 0 0 1 1 0 1 1 i    
           

Команда "додавання з переносом" одночасно додає вміст акумулятора A, вміст прапора переносу C і вміст осередку резидентної пам'яті даних (РПД), адресованої вмістом заданого регістра Ri обраного банку. Результат міститься в A. Вміст використовуваної комірки не змінюється. Логіка установки (скидання) прапорів і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою.

Алгоритм Приклад
(A):=(A)+(C)+((Ri)), де iÎ{0,1} (С):=x, (OV):=x, (AC):=x, де xÎ{0,1} ;(A)=0D5H, (R0)=3AH, ;у РПД (3AH)=1AH, (C)=1 ADDC A,@R0;(A)=0F0H, ;(AC)=1, (C)=0, (OV)=0, ;(3AH)=1AH

 

ADDC A,direct 0 0 1 1 0 1 0 1 direct

Команда "додавання з переносом" одночасно додає вміст акумулятора A, вміст прапора переносу C і вміст комірки резидентної пам'яті даних (або регістра спеціальних функцій), 8-розрядна адреса якої (якого) визначається символічним ім'ям direct. Результат міститься в A. Вміст використовуваної комірки використовуваного регістра не змінюється. Логіка установки (скидання) прапорів і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою.

Алгоритм Приклад
(A):=(A)+(C)+(direct) (С):=x, (OV):=x, (AC):=x, де xÎ{0,1} ;(A)=11H, (C)=1, ;(DPH)=0DFH ADDC A,DPH;(A)=0F1H, ;(AC)=1, (C)=0, (OV)=0, ;(DPH)=0DFH

 

ADDC A,#data8 0 0 1 1 0 1 0 0 data8

Команда "додавання з переносом" одночасно додає вміст акумулятора A, вміст прапора переносу C і байт даних data8, безпосередньо зазначений у команді. Результат розміщається в A. Логіка установки (скидання) прапорів і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою.

Алгоритм Приклад
(A):=(A)+(C)+data8 (С):=x, (OV):=x, (AC):=x, де xÎ{0,1} ;(A)=55H, (C)=0 ADDC A,#55H;(A)=0AAH, ;(AC)=0, (C)=0, (OV)=1

 

AJMP addr11 addr11[10-8] 0 0 0 0 1 Addr11[7-0]

Команда "абсолютний перехід" передає керування за адресою із символічним ім'ям addr11, що утвориться за допомогою конкатенації (зчеплення) 5-ти старших біт умісту лічильника команд PC (після збільшення його на 2), умісту 7-5 бітів старшого байта команди і вмісту другого байта команди. Адреса переходу і зазначена команда повинні знаходитися усередині однієї сторінки пам'яті програм (ПП) обсягом 2 Кбайт, обумовленої вмістом п'яти старших біт PC. Час виконання команди 2 цикли.

Алгоритм Приклад
(PC):=(PC)+2 (PC[10-0]):=addr11[10-8] çêaddr11[7-0], де çêє знак конкатенації ;(PC)=28FH, ;MT2 відповідає адресі;34AH у ПП AJMP MT2;(PC)=34AH

 

ANL A,Rn;де n=0-7 0 1 0 1 1 r r r Де rrr=000B-111B

Команда "логічне І" виконує порозрядну кон’юнкцію вмісту акумулятора A із вмістом заданого регістра Rn обраного банку, поміщаючи результат у A. Вміст використовуваного регістра не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(A)Ù(Rn), де n=0-7 ;(A)=0FH, (R2)=0C5H ANL A,R2;(A)=05H,(R2)=0C5H

 

ANL A,@Ri;де iÎ{0,1} 0 1 0 1 0 1 1 i  

Команда "логічне И" виконує порозрядну кон’юнкцію вмісту акумулятора A із вмістом комірки резидентної пам'яті даних (РПД), адресованої вмістом заданого регістра Ri обраного банку. Результат розміщається в A. Вміст використовуваної комірки не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

 

 

Алгоритм Приклад
(A):=(A)Ù((Ri)), де iÎ{0,1} ;(A)=0BCH, (R0)=35H, ;у РПД (35H)=47H ANL A,@R0;(A)=04H, ;у РПД (35H)=47H

 

ANL A,direct 0 1 0 1 0 1 0 1 Direct

Команда "логічне І” виконує порозрядну кон’юнкцію вмісту акумулятора A із вмістом комірки резидентної пам'яті даних (або регістра спеціальних функцій), 8-розрядна адреса якої (якого) визначається символічним ім'ям direct. Результат міститься в A. Вміст використовуваної комірки пам’яті, чи використовуваного регістра не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(A)Ù(direct)   ;(A)=0A3H, (PSW)=85H ANL A,PSW;(A)=81H,(PSW)=85H

 

ANL A,#data8 0 1 0 1 0 1 0 0 data8

Команда "логічне І" виконує порозрядну кон’юнкцію вмісту акумулятора A з байтом даних data8, безпосередньо зазначеним у команді. Результат розміщається в A. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(A)Ùdata8 ;(A)=36H ANL A,#0DDH;(A)=14H

 

ANL direct,A 0 1 0 1 0 0 1 0 direct

Команда "логічне І" виконує порозрядну кон’юнкцію вмісту акумулятора A із вмістом комірки резидентної пам'яті даних (або регістра спеціальних функцій), 8-розрядна адреса якої (якого) визначається символічним ім'ям direct. Результат міститься відповідно у використовувану комірку або у використовуваний регістр. Вміст A не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(direct):=(direct)Ù(A)   ;(A)=55H, (P2)=0AAH ANL P2,A;(A)=55H,(P2)=00H

 

ANL direct,#data8 0 1 0 1 0 0 1 1 direct data8

Команда "логічне І" виконує порозрядну кон’юнкцію байта даних data8, безпосередньо зазначеного в команді, із вмістом комірки резидентної пам'яті даних (або регістра спеціальних функцій), 8-розрядна адреса якої (якого) визначається символічним ім'ям direct. Результат міститься відповідно у використовуваній комірці або у використовуваному регістрі. Команда на стан прапорів не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(direct):=(direct)Ùdata8 ;(P1)=0FFH ANL P1,#73H;(P1)=73H

 

ANL C,bit 1 0 0 0 0 0 1 0 bit

Команда "логічне І" виконує кон’юнкцію вмісту прапора переносу C із умістом біта, 8-розрядна адреса якого визначається символічним ім'ям bit в області комірок резидентної пам'яті даних (РПД) або регістрів спеціальних функцій, що допускає побітове звертання. Результат міститься в С. Вміст використовуваного біта не змінюється. Команда на стан інших прапорів не впливає і має час виконання 2 цикли.

 

 

Алгоритм Приклад
(C):=(C)Ù(bit)   ;(C)=1, (P1[0])=0, ;у РПД (24H)=0FH ANL C,P1.0;(C)=0, (P1[0])=0 ANL C,20H;(C)=0, (24H)=0FH

 

ANL C,/bit 1 0 1 1 0 0 0 0 bit

Команда "логічне І" виконує кон’юнкцію вмісту прапора переносу C з інвертованим значенням біта з області комірки резидентної пам'яті або даних регістра спеціальних функцій, що допускає побітове звертання, при цьому вміст використовуваного біта, 8-розрядний адрес якого визначається символічним ім'ям bit, не змінюється. Результат міститься в С. Команда на стан інших прапорів не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(C):=(C) Ù   ;(C)=1, (AC)=0 ANL C,/AC;(C)=1, (AC)=0
   

 

CJNE A,direct,addr 1 0 1 1 0 1 0 1 direct rel

Команда "порівняння і перехід, якщо не дорівнює" порівнює вміст акумулятора A із вмістом комірки резидентної пам'яті даних (або регістра спеціальних функцій), 8-розрядна адреса якої (якого) визначається символічним ім'ям direct, і виконує перехід за адресою addr, якщо вміст A не дорівнює вмісту використовуваної комірки або використовуваного регістра, у іншому випадку виконується наступна команда. Адреса переходу addr визначається за допомогою додавання 8-бітового числа rel (зі знаком), розміщеного в останньому байті команди, із вмістом лічильника команд PC після збільшення його на три. Таким чином, зазначений перехід можливий у межах від -128 до +127 щодо початкової адреси наступної команди, при цьому негативне значення rel представляється двійковим числом у додатковому коді. Прапор переносу C скидається в "0", якщо вміст A більше (дорівнює) вмісту використовуваної комірки чи використовуваного регістра, у іншому випадку прапор встановлюється в "1". Команда не змінює (A) і (direct) і має час виконання 2 цикли.

Алгоритм Приклад
якщо (direct)((A), то (PC)(((PC)+3+rel і (C)((0 якщо (direct)>(A), то (PC):=(PC)+3+rel і (C):=1 якщо (direct)=(A), то (PC):=(PC)+3 і (C):=0 ;(A)=97H, (P2)=0F0H, (C)=0, ;(PC)=3FFH, MT3 відповідає адресі 41FH, rel=1DH CJNE A,P2,MT3;(C)=1, ;(A)=97H, (P2)=0F0H, ;(PC)=41FH

 

CJNE A,#data8,addr 1 0 1 1 0 1 0 0 data8 Rel

Команда "порівняння і перехід, якщо не дорівнює" порівнює вміст акумулятора A з байтом даних data8, безпосередньо зазначеним у команді, і виконує перехід за адресою addr, якщо вміст A не дорівнює data8, у противному випадку виконується наступна команда. Процедура обчислення адреси переходу, вплив на (A) і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою. Прапор переносу C скидається в "0", якщо вміст A більше (дорівнює) data8, у противному випадку прапор встановлюється в "1".

Алгоритм Приклад
якщо data8((A), то (PC)(((PC)+3+rel і (C)((0 якщо data8>(A), то (PC):=(PC)+3+rel і (C):=1 якщо data8=(A), то (PC):=(PC)+3 і (C):=0 ;(A)=0FCH, (C)=1, (PC)=3FFH,;MT4 відповідає адресі ;3F0H, rel=0EEH CJNE A,#0BFH,MT4;(C)=0, ;(A)=0FCH, (PC)=3F0H

 

CJNE Rn,#data8,addr 1 0 1 1 1 r r r data8 rel
де n=0-7 де rrr=000B-111B

Команда "порівняння і перехід, якщо не дорівнює" порівнює вміст заданого регістра Rn обраного банку з байтом даних data8, безпосередньо зазначеним у команді, і виконує перехід за адресою addr, якщо вміст Rn не дорівнює data8, у противному випадку виконується наступна команда. Процедура обчислення адреси переходу і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою. Прапор переносу C скидається в "0", якщо вміст Rn більше (рівне) data8, у противному випадку прапор встановлюється в "1". Команда не впливає на (Rn).

 

Алгоритм Приклад
якщо data8((Rn), то (PC)(((PC)+3+rel і (C)((0 якщо data8>(Rn), то (PC):=(PC)+3+rel і (C):=1 якщо data8=(Rn), то (PC):=(PC)+3 і (C):=0 ;(R7)=80H, (C)=0, (PC)=300H,;MT5 відповідає адресі ;30FH, rel=0CH CJNE R7,#81H,MT5;(C)=1, ;(R7)=80H, (PC)=30FH

 

 

CJNE @Ri,#data8,addr 1 0 1 1 0 1 1 i data8 rel
де iÎ{0,1}  

 

Команда "порівняння і перехід, якщо не дорівнює" порівнює вміст осередку резидентної пам'яті даних (РПД), адресованої вмістом заданого регістра Ri обраного банку, з байтом даних data8, безпосередньо зазначеним у команді, і виконує перехід за адресою addr, якщо вміст використовуваної комірки не дорівнює data8, у противному випадку виконується наступна команда. Процедура обчислення адреси переходу і час виконання такі ж, як у розглянутої вище команди з аналогічною мнемонікою. Прапор переносу C скидається в "0", якщо вміст використовуваної комірки більше (рівне) data8, у противному випадку прапор встановлюється в "1". Команда не впливає на ((Ri)).

 

Алгоритм Приклад
якщо data8(((Ri)), то (PC)(((PC)+3+rel і (C)((0 якщо data8>((Ri)), то (PC):=(PC)+3+rel і (C):=1 якщо data8=((Ri)), то (PC):=(PC)+3 і (C):=0 ;(R0)=41H, (C)=1, (PC)=200H, ;у РПД (41H)=57H, ;MT6 відповідає адресі ;22AH, rel=27H CJNE @R0,#29H,MT6;(C)=0, ;(PC)=22AH, ;у РПД (41H)=57H

 

CLR A 1 1 1 0 0 1 0 0  

Команда "скидання акумулятора" скидає (обнулює) вміст акумулятора A, на стан прапорів не впливає і має час виконання 1 цикл.

 

Алгоритм Приклад
(A):=0 ;(A)=6CH, (C)=0, (AC)=1 CLR A;(A)=00H, (C)=0, (AC)=1

 

CLR C 1 1 0 0 0 0 1 1  

Команда "скидання прапора переносу" скидає (обнуляє) уміст прапора переносу C, на стан інших прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(C):=0 ;(C)=1 CLR C;(C)=0

 

CLR bit 1 1 0 0 0 0 1 0 bit

Команда "скидання біта" скидає (обнуляє) вміст біта, 8-розрядна адреса якого визначається символічним ім'ям bit в області комірок резидентної пам'яті даних (РПД) або регістрів спеціальних функцій, що допускає побітове звертання. Команда на стан не використовуваних прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(bit):=0 ;(P1)=5EH=01011110B ;у РПД (28H)=31H CLR P1.3;(P1)=56H=01010110B CLR 40H;(28H)=30H

 

CPL A 1 1 1 1 0 1 0 0  

Команда "інверсія акумулятора" інвертує вміст кожного біта акумулятора A, на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):= ;(A)=65H=01100101B CPL A;(A)=9AH=10011010B

 

CPL C 1 0 1 1 0 0 1 1  

Команда "інверсія прапора переносу" інвертує вміст прапора переносу C, на стан інших прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(C):= ;(C)=1, (AC)=1, (OV)=0 CPL C;(C)=0, (AC)=1, (OV)=0

 

 

CPL bit 1 0 1 1 0 0 1 0 bit

Команда "інверсія біта" інвертує вміст біта, 8-розрядна адреса якого визначається символічним ім'ям bit в області комірок резидентної пам'яті даних регістрів спеціальних функцій, що допускає побітове звертання. Команда на стан не використовуваних прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(bit):= ;(P1)=39H=00111001B CPL P1.1 CPL P1.3;(P1)=33H=00110011B

 

DA A 1 1 0 1 0 1 0 0  

Команда "десяткова корекція акумулятора" упорядковує 8-бітову величину в акумуляторі A, отриману в результаті виконаної раніше команди додавання двох перемінних, представлених у двоїчно-десятковому форматі. Для виконання додавання може використовуватися кожна з типів команд ADD чи ADDC. Якщо значення бітів 3-0 акумулятора перевищує 9 (xxxx1010B-xxxx1111B) або, якщо вміст прапора AC встановлене в "1", то до вмісту A додається 06H, при цьому виходить відповідна двоїчно-десяткова цифра в молодшому напівбайті A. Зазначене додавання не змінює вміст прапора AC, але встановлює в "1" уміст прапора переносу C, якщо перенос з полючи молодших чотирьох біт поширюється через усі старші біти A, у противному випадку - не змінює (C). Далі, якщо вміст прапора C дорівнює "1", чи якщо значення битов 7-4 акумулятора перевищує 9 (1010xxxxB-1111xxxx), те це значення збільшується на 6, створюючи відповідну двоїчно-десяткову цифру в старшому напівбайті A. При цьому прапор C установлюється (не змінюється), якщо мається (відсутній) перенос з біта 7 акумулятора. Час виконання команди 1 цикл.

Алгоритм Приклад
якщо (A[3-0])(9 чи (AC)=1, те (A):=(A)+6 якщо (A[7-4])>9 чи (C)=1, те (A[7-4]):=(A[7-4])+6 ;(A)=30H, (R3)=99H ADD A,R3;(A)=0C9H, ;(AC)=0, (C)=0 DA A;(C)=1, (A)=29H, (AC)=0

 

DEC A 0 0 0 1 0 1 0 0  

Команда "декремент" робить вирахування "1" із вмісту акумулятора A, на прапори не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(A)-1 ;(A)=00H, (C)=1, (AC)=1 DEC A;(A)=0FFH, (C)=1, (AC)=1

 

DEC Rn;де n=0-7 0 0 0 1 1 r r r де rrr=000B-111B

Команда "декремент" робить вирахування "1" із умісту заданого регістра Rn обраного банку, на прапори не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(Rn):=(Rn)-1, де n=0-7 ;(R1)=35H, (C)=0, (AC)=1 DEC R1;(R1)=34H, (C)=0, (AC)=1

 

DEC direct 0 0 0 1 0 1 0 1 Direct

Команда "декремент" робить вирахування "1" із вмісту комірки, 8-розрядний адрес якої визначається символічним ім'ям direct в області резидентної пам'яті даних у середовищі регістрів спеціальних функцій. Команда на прапори не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(direct):=(direct)-1 ;(SCON)=0A0H, (C)=1, (AC)=0 DEC SCON;(SCON)=9FH, ;(C)=1, (AC)=0

 

DEC @Ri;де iÎ{0,1} 0 0 0 1 0 1 1 i  

Команда "декремент" робить вирахування "1" із вмісту осередку резидентної пам'яті даних (РПД), адресованої вмістом заданого регістра Ri обраного банку, на прапори не впливає і має час виконання 1 цикл.

Алгоритм Приклад
((Ri)):=((Ri))-1, де iÎ{0,1} ;(R1)=7FH, у РПД (7FH)=40H DEC @R1;(R1)=7FH, ;у РПД (7FH)=3FH

 

DIV AB 1 0 0 0 0 1 0 0  

Команда "розподіл" поділяє 8-бітову перемінну з акумулятора A на 8-бітову перемінну з регістра B. Акумулятору привласнюється ціла частина частки (старші розряди), а регістру B - залишок. Вміст прапора переносу C скидається в "0". Вміст прапора переповнення OV також скидається, а у випадку розподілу на нуль - встановлюється в "1". Вміст прапора AC не змінюється. Команда має час виконання 4 цикли.

 

Алгоритм Приклад
(A):=(A):(B), (B):=mod[(A):(B)], (C):=0 якщо (У)¹0, то (OV):=0 якщо (У)=0, то (OV):=1 ;(A)=0FBH=251, (B)=12H=18, ;(C)=1, (OV)=1 DIV AB;(C)=0, (OV)=0, ;(A)=0DH=13, (B)=11H=17

 

DJNZ Rn,addr;де n=0-7 1 1 0 1 1 r r r Rel де rrr=000-111B

Команда "декремент і перехід, якщо не дорівнює нулю" виконує вирахування "1" із умісту заданого регістра Rn обраного банку і здійснює перехід за адресою addr, якщо вміст Rn не дорівнює нулю, у противному випадку виконується наступна команда. Адреса переходу addr визначається за допомогою додавання 8-бітового числа rel (зі знаком), розміщеного в останньому байті команди, із умістом лічильника команд PC після збільшення його на 2. Таким чином, зазначений перехід можливий у межах від -128 до +127 щодо початкової адреси наступної команди, при цьому негативне значення rel представляється двійковим числом у додатковому коді. Команда DJNZ Rn,addr на стан прапорів не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(Rn):=(Rn)-1, де n=0-7 якщо (Rn)¹0, то (PC):=(PC)+2+rel якщо (Rn)=0, то (PC):=(PC)+2 ;(R3)=0AH, rel=0FEH MT5: DJNZ R3,MT5;команда;виконається 10 разів

 

DJNZ direct,addr 1 1 0 1 0 1 0 1 Direct rel

Команда "декремент і перехід, якщо не дорівнює нулю" виконує вирахування "1" із вмісту осередку, 8-розрядна адреса якої визначається символічним ім'ям direct в області резидентної пам'яті або даних у середовищі регістрів спеціальних функцій, і здійснює перехід за адресою addr, якщо вміст використовуваної комірки не дорівнює нулю, у противному випадку виконується наступна команда. Адреса переходу addr визначається за допомогою додавання 8-бітового числа rel (зі знаком), розміщеного в останньому байті команди, із умістом лічильника команд PC після збільшення його на 3. Команда на стан прапорів не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(direct):=(direct)-1 якщо (direct)¹0, то (PC):=(PC)+3+rel якщо (direct)=0, то (PC):=(PC)+3 ;(P1)=0AH, rel=0FDH MT5: DJNZ P1,MT5;команда;виконається 10 разів

 

INC A 0 0 0 0 0 1 0 0  

Команда "інкремент байта" робить додаток "1" до вмісту акумулятора A, на прапори не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(A)+1 ;(A)=0FFH, (C)=1, (AC)=1 INC A;(A)=00H, (C)=1, (AC)=1

 

INC Rn;де n=0-7 0 0 0 0 1 r r r де rrr=000B-111B

Команда "інкремент байта" робить додаток "1" до вмісту заданого регістра Rn обраного банку, на прапори не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(Rn):=(Rn)+1, де n=0-7 ;(R1)=35H, (C)=0, (AC)=1 INC R1;(R1)=36H, (C)=0, (AC)=1

 

INC direct 0 0 0 0 0 1 0 1 direct

Команда "інкремент байта" робить додаток "1" до вмісту комірки, 8-розрядна адреса якої визначається символічним ім'ям direct в області резидентної пам'яті даних (РПД) чи в середовищі регістрів спеціальних функцій. Команда на прапори не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(direct):=(direct)+1 ;(TMOD)=0A5H, (C)=1, (AC)=0 ;у РПД (23H)=0FFH INC TMOD;(TMOD)=0A6H, ;(C)=1, (AC)=0 INC 23H;у РПД (23H)=00H, ;(C)=1, (AC)=0

 

INC @Ri;де iÎ{0,1} 0 0 0 0 0 1 1 i  

Команда "інкремент байта" робить додаток "1" до вмісту комірки резидентної пам'яті даних (РПД), адресованої умістом заданого регістра Ri обраного банку, на прапори не впливає і має час виконання 1 цикл.

Алгоритм Приклад
((Ri)):=((Ri))+1, де iÎ{0,1} ;(R0)=44H, у РПД (44H)=55H INC @R0;(R0)=44H, ;у РПД (44H)=56H

 

INC DPTR 1 0 1 0 0 0 1 1  

Команда "інкремент двох байтів" робить додаток "1" до вмісту 16-бітового покажчика даних DPTR, причому переповнення молодшого байта DPTR (DPL) приводить до збільшення на "1" умісту старшого байта DPTR (DPH). Команда на прапори не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(DPTR):=(DPTR)+1 ;(DPH)=12H, (DPL)=0FFH, INC DPTR;(DPH)=13H,;(DPL)=00H

 

JB bit,addr 0 0 1 0 0 0 0 0 Bit rel

Команда "перехід, якщо біт установлений" виконує перехід за адресою addr, якщо вміст біта, 8-розрядна адреса якого визначається символічним ім'ям bit в області комірок резидентної пам'яті чи даних у середовищі регістрів спеціальних функцій, встановлене в "1", у противному випадку виконується наступна команда. Уміст використовуваного біта не змінюється. Адреса переходу addr визначається за допомогою додавання 8-бітового числа rel (зі знаком), розміщеного в останньому байті команди, із умістом лічильника команд PC після збільшення його на 3. Таким чином, зазначений перехід можливий у межах від -128 до +127 щодо початкової адреси наступної команди, при цьому негативне значення rel представляється двійковим числом у додатковому коді. Команда на прапори не впливає і має час виконання 2 цикли.

Алгоритм Приклад
якщо (bit)=1, то (PC):=(PC)+3+rel якщо (bit)=0, то (PC):=(PC)+3 ;MT6 відповідає ;адресі 2FFH, ;(PC)=2F0H, rel=0CH, (A)=96H JB A.2,MT6;(PC)=2FFH,;(A)=96H

 

JBC bit,addr 0 0 0 1 0 0 0 0 Bit rel

Команда "перехід, якщо біт встановлений і скидання цього біта" виконує перехід за адресою addr, якщо вміст біта, 8-розрядна адреса якого визначається символічним ім'ям bit в області комірки резидентної пам'яті чи даних у середовищі регістрів спеціальних функцій, встановлене в "1", у противному випадку виконується наступна команда. Вміст використовуваного біта скидається в "0". Процедура обчислення адреси переходу addr, вплив на прапори і час виконання такі ж, як у розглянутої вище команди JB bit,addr.

Алгоритм Приклад
якщо (bit)=1, то (PC):=(PC)+3+rel і (bit):=0 якщо (bit)=0, то (PC):=(PC)+3 ;MT8 відповідає адресі 400H, ;(PC)=3F1H, rel=0CH, (A)=78H JBС A.3,MT8;(PC)=400H, (A)=70H

 

JC addr 0 1 0 0 0 0 0 0 Rel

Команда "перехід, якщо прапор переносу встановлений" виконує перехід за адресою addr, якщо вміст прапора переносу C встановлене в "1", у противному випадку виконується наступна команда. Адреса переходу addr визначається за допомогою додавання 8-бітового числа rel (зі знаком), розміщеного в молодшому байті команди, із умістом лічильника команд PC після збільшення його на 2. Таким чином, зазначений перехід можливий у межах від -128 до +127 щодо початкової адреси наступної команди, при цьому негативне значення rel представляється двійковим числом у додатковому коді. Команда на прапори не впливає і має час виконання 2 цикли.

Алгоритм Приклад
якщо (З)=1, то (PC):=(PC)+2+rel якщо (C)=0, то (PC):=(PC)+2 ;MT1 відповідає адресі 1F0H, ;(PC)=1FFH, rel=0EFH, (C)=1 JС MT1;(PC)=1F0H, (C)=1

 

JMP @A+DPTR 0 1 1 1 0 0 1 1  

Команда "непрямий перехід" складає 8-бітовий вміст акумулятора A з 16-бітовим умістом покажчика даних DPTR і завантажує отриманий результат у лічильник команд PC. Зазначене додавання виконується таким чином, що перенос з молодших 8-ми біт поширюється на старші біти результату. Вміст A і DPTR не змінюється. Команда на прапори не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(PC):=(DPTR[15-0])+(A[7-0]) ;(PC)=34EH, (DPTR)=329H, (A)=86H JMP @A+DPTR;(PC)=3AFH

 

JNB bit,addr 0 0 1 1 0 0 0 0 bit rel

Команда "перехід, якщо біт не встановлений" виконує перехід за адресою addr, якщо вміст біта, 8-розрядна адреса якого визначається символічним ім'ям bit в області комірок резидентної пам'яті або даних у середовищі регістрів спеціальних функцій, скинуте в "0", у противному випадку виконується наступна команда. Вміст використовуваного біта не змінюється. Процедура обчислення адреси переходу addr, вплив на прапори і час виконання такі ж, як у розглянутої вище команди JB bit,addr.

Алгоритм Приклад
якщо (bit)=0, то (PC):=(PC)+3+rel якщо (bit)=1, то (PC):=(PC)+3 ;MT2 відповідає адресі 2FFH, ;(PC)=2F0H, rel=0CH, (A)=96H JNB A.0,MT2;(PC)=2FFH, (A)=96H

 

JNC addr 0 1 0 1 0 0 0 0 rel

Команда "перехід, якщо прапор переносу не встановлений" виконує перехід за адресою addr, якщо вміст прапора переносу C скинуте в "0", у противному випадку виконується наступна команда. Процедура обчислення адреси переходу addr, вплив на прапори і час виконання такі ж, як у розглянутої вище команди JC addr.

Алгоритм Приклад
Якщо (З)=0, то (PC):=(PC)+2+rel Якщо (C)=1, то (PC):=(PC)+2 ;MT1 відповідає адресі 200H, ;(PC)=1F0H, rel=0EH, (C)=0 JNС MT1;(PC)=200H, (C)=0

 

JNZ addr 0 1 1 1 0 0 0 0 rel

Команда "перехід, якщо вміст акумулятора не дорівнює нулю" виконує перехід за адресою addr, якщо вміст A не нуль, у противному випадку виконується наступна команда. Адреса переходу addr визначається за допомогою додавання 8-бітового числа rel (зі знаком), розміщеного в молодшому байті команди, із умістом лічильника команд PC після збільшення його на 2. Таким чином, зазначений перехід можливий у межах від -128 до +127 щодо початкової адреси наступної команди, при цьому негативне значення rel представляється двійковим числом у додатковому коді. Команда на прапори і (A) не впливає і має час виконання 2 цикли.

Алгоритм Приклад
Якщо (A)¹0, то (PC):=(PC)+2+rel Якщо (A)=0, то (PC):=(PC)+2 ;MT4 відповідає адресі 183H, ;(PC)=200H, rel=81H, (A)=01H JNZ MT4;(PC)=183H, (A)=01H

 

JZ addr 0 1 1 0 0 0 0 0 rel

Команда "перехід, якщо вміст акумулятора дорівнює нулю" виконує перехід за адресою addr, якщо всі біти акумулятора дорівнюють нулю, у противному випадку виконується наступна команда. Вміст A не змінюється. Процедура обчислення адреси переходу addr, вплив на прапори і час виконання такі ж, як у розглянутої вище команди JNZ addr.

Алгоритм Приклад
якщо (A)=0, то (PC):=(PC)+2+rel якщо (A)¹0, то (PC):=(PC)+2 ;MT4 відповідає адресі 231H, ;(PC)=200H, rel=2FH, (A)=00H JZ MT4;(PC)=231H, (A)=00H

 

LCALL addr16 0 0 0 1 0 0 1 0 addr16[15-8] addr16[7-0]

Команда "довгий виклик підпрограми" викликає безумовно підпрограму з початковою адресою addr16. При цьому 16-розрядний вміст лічильника команд PC збільшується на 3 для одержання адреси наступної команди і міститься в стек (спочатку випливає молодший байт), а вміст покажчика стека SP збільшується на 2. Адреса addr16 виходять за допомогою другого і третього байтів команди, що завантажуються відповідно в старший і молодший байти PC. Виконання програми продовжується командою, що знаходиться по отриманій адресі. Підпрограма, отже, може починатися в будь-якім місці адресного простору пам'яті програм обсягом до 64 Кбайт. Команда на прапори не впливає і має час виконання 2 цикли.

 

 

Алгоритм Приклад
(PC):=(PC)+3 (SP):=(SP)+1, ((SP)):=(PC[7-0]) (SP):=(SP)+1, ((SP)):=(PC[15-8]) (PC):=addr16[15-0] ;(SP)=10H, (PC)=135H, ;MT відповідає адресі 300H LCALL MT;(SP)=12H, (PC)=300H, ;у РПД (11H)=38H, (12H)=01H

 

LJMP addr16 0 0 0 0 0 0 1 0 addr16[15-8] addr16[7-0]

Команда "довгий перехід" виконує безумовний перехід за адресою addr16. Ця адреса виходить за допомогою другого і третього байтів команди, що завантажуються відповідно в старший і молодший байти програмного лічильника PC. Перехід, таким чином, може здійснюватися по будь-якій адресі простору пам'яті програм обсягом до 64 Кбайт. Команда на прапори не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(PC):=addr16[15-0] ;(PC)=234H LJMP 12CH;(PC)=12CH

 

MOV A,Rn;де n=0-7 1 1 1 0 1 r r r де rrr=000B-111B

Команда "переслати байт" виконує завантаження акумулятора A умістом заданого регістра Rn обраного банку, при цьому вміст Rn не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(Rn), де n=0-7 ;(A)=0FAH, (R6)=93H MOV A,R6;(A)=93H, (R6)=93H

 

MOV A,@Ri;де iÎ{0,1} 1 1 1 0 0 1 1 i  

Команда "переслати байт" виконує завантаження акумулятора A вмістом комірки резидентної пам'яті даних (РПД), адресованої умістом заданого регістра Ri обраного банку, при цьому вміст використовуваної комірки не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=((Ri)), де iÎ{0,1} ;(A)=0FDH, (R1)=30H, ;у РПД (30H)=17H MOV A,@R1;(A)=17H, (R1)=30H, ;у РПД (30H)=17H

 

MOV A,direct 1 1 1 0 0 1 0 1 direct

Команда "переслати байт" виконує завантаження акумулятора A вміст комірки, 8-розрядна адреса якої визначається символічним ім'ям direct в області резидентної пам'яті чи даних у середовищі регістрів спеціальних функцій. При цьому вміст використовуваної комірки не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(direct)   ;(A)=24H, (DPL)=3DH MOV A,DPL;(A)=3DH,(DPL)=3DH

 

MOV A,#data8 0 1 1 1 0 1 0 0 Data8

Команда "переслати байт" виконує завантаження акумулятора A байтом даних data8, безпосередньо зазначеним у команді, на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=data8 ;(A)=81H MOV A,#0FFH;(A)=0FFH

 

MOV Rn,A;де n=0-7 1 1 1 1 1 r r r де rrr=000B-111B

Команда "переслати байт" виконує завантаження заданого регістра Rn обраного банку вмістом акумулятора A, при цьому вміст A не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(Rn):=(A), де n=0-7 ;(A)=55H, (R6)=93H MOV R6,A;(A)=55H, (R6)=55H

 

MOV Rn,direct;де n=0-7 1 0 1 0 1 r r r direct де rrr=000-111B

Команда "переслати байт" виконує завантаження заданого регістра Rn обраного банку вмістом комірки, адреса якого визначаються символічним ім'ям direct в області резидентної пам'яті даних (РПД) чи в середовищі регістрів спеціальних функцій. При цьому вміст використовуваної комірки не змінюється. Команда на стан прапорів не впливає і має час виконання 2 цикли.

 

Алгоритм Приклад
(Rn):=(direct), де n=0-7   ;(R5)=81H, у РПД (16H)=22H MOV R5,16H;(R5)=22H, ;у РПД (16H)=22H

 

 

MOV Rn,#data8;де n=0-7 0 1 1 1 1 r r r Data8 де rrr=000-111B

Команда "переслати байт" виконує завантаження заданого регістра Rn обраного банку байтом даних, безпосередньо зазначеним у команді і який має символічне ім’я data8. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(Rn):=data8, де n=0-7 ;(R2)=5DH MOV R2,#0FCH;(R2)=0FCH

 

MOV direct,A 1 1 1 1 0 1 0 1 direct

Команда "переслати байт" пересилає вміст акумулятора A в комірку, адрес якогї визначається символічним ім'ям direct в області резидентної пам'яті чи даних у середовищі регістрів спеціальних функцій. При цьому вміст A не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

 

Алгоритм Приклад
(direct):=(A)   ;(A)=3CH, (B)=4DH MOV B,A;(A)=3CH,(B)=3CH

 

MOV direct,Rn;де n=0-7 1 0 0 0 1 r r r direct де rrr=000-111B

Команда "переслати байт" пересилає вміст заданого регістра Rn обраного банку в комірки, адрес якогї визначається символічним ім'ям direct в області резидентної пам'яті чи даних у середовищі регістрів спеціальних функцій. При цьому вміст Rn не змінюється. Команда на стан прапорів не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(direct):=(Rn), де n=0-7   ;(R7)=5EH, (P1)=0FFH MOV P1,R7;(R7)=5EH, (P1)=5EH

 

MOV direct,direct 1 0 0 0 0 1 0 1 direct direct

Команда "переслати байт" пересилає байт даних між двома осередками, розташованими в області резидентной пам'яті даних (РПД) чи (і) у середовищі регістрів спеціальних функцій. Адреса осередку-джерела (осередку-приймача) визначається другим (першим) операндом і розміщається в другому (у третьому) байті команди. Необхідно відзначити, що при пересиланні вміст осередку-джерела не змінюється. Команда на стан прапорів не впливає і виконується за 2 цикли.

Алгоритм Приклад
(direct):=(direct)   ;у РПД (4CH)=7AH, (B)=0F4H MOV 4CH,B;(B)=0F4H, ;у РПД (4CH)=0F4H

 

MOV direct,@Ri;де iÎ{0,1} 1 0 0 0 0 1 1 i direct

Команда "переслати байт" пересилає вміст комірки резидентної пам'яті даних (РПД), адресованої вмістом заданого регістра Ri обраного банку, в комірку, адрес якогї визначається символічним ім'ям direct в області РПД чи в середовищі регістрів спеціальних функцій. При цьому вміст осередку-джерела не змінюється. Команда на стан прапорів не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(direct):=((Ri)), де iÎ{0,1}   ;у РПД (6FH)=57H, ;(R0)=6FH, (PSW)=0C2H MOV PSW,@R0;(PSW)=57H,;(R0)=6FH, у РПД (6FH)=57H

 

MOV direct,#data8 0 1 1 1 0 1 0 1 Direct data8

Команда "переслати байт" копіює байт даних, безпосередньо зазначений у команді і який має символічне ім’я data8, в комірку, адрес якогї визначається символічним ім'ям direct в області резидентної пам'яті чи даних у середовищі регістрів спеціальних функцій. Команда на стан прапорів не впливає і має час виконання 2 цикли.

  Алгоритм Приклад
  (direct):=data8   ;(P2)=0FFH MOV P2,#33H;(P2)=33H
MOV @Ri,A;де iÎ{0,1} 1 1 1 1 0 1 1 i    
           

Команда "переслати байт" пересилає вміст акумулятора A в осередок резидентної пам'яті даних (РПД), адресовану вмістом заданого регістра Ri обраного банку, при цьому вміст A не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
((Ri)):=(A), де iÎ{0,1} ;(A)=11H, (R1)=25H, ;у РПД (25H)=48H MOV @R1,A;(A)=11H, (R1)=25H, ;у РПД (25H)=11H

 

MOV @Ri, direct;де iÎ{0,1} 1 0 1 0 0 1 1 i direct

Команда "переслати байт" завантажує комірку резидентної пам'яті даних (РПД), адресовану вмістом заданого регістра Ri обраного банку, вмістом комірки, адрес якогї визначається символічним ім'ям direct в області РПД чи в середовищі регістрів спеціальних функцій. При цьому вміст осередку-джерела не змінюється. Команда на стан прапорів не впливає і має час виконання 2 цикли.

Алгоритм Приклад
((Ri)):=(direct), де iÎ{0,1}   ;у РПД (55H)=31H, ;(R0)=55H, (TH1)=0CDH MOV @R0,TH1;(TH1)=0CDH,;(R0)=55H, у РПД (55H)=0CDH

 

MOV @Ri,#data8;де iÎ{0,1} 0 1 1 1 0 1 1 i data8

Команда "переслати байт" копіює байт даних data8, безпосередньо зазначений у команді, в комірку резидентної пам'яті даних (РПД), адресовану вмістом заданого регістра Ri обраного банку. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
((Ri)):=data8, де iÎ{0,1} ;(R1)=53H, у РПД (53H)=86H MOV @R1,#77H;(R1)=53H, ;у РПД (53H)=77H

 

MOV C,bit 1 0 1 0 0 0 1 0 bit

Команда "переслати біт" завантажує прапор переносу C умістом біта, 8-розрядна адреса якого визначається символічним ім'ям bit в області осередків резидентной пам'яті даних (або регістрів спеціальних функцій), що допускає побітове звертання. Команда на стан інших прапорів, а також використовуваного битка не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(C):=(bit)   ;(C)=0, (P1[4])=1 MOV C,P1.4;(C)=1, ;(P1[4])=1

 

MOV bit,C 1 0 0 1 0 0 1 0 bit

Команда "переслати біт" копіює вміст прапора переносу C у біт, 8-розрядну адресу якого визначається символічним ім'ям bit в області комірок резидентної пам'яті даних (РПД) чи регістрів спеціальних функцій, що допускає побітове звертання. Команда має час виконання 2 цикли і на стан прапорів не впливає, за винятком случаючи, коли прапор є операндом-передавачем.

Алгоритм Приклад
(bit):=(C)   ;у РПД (22H)=0D0H, (C)=1 MOV 10H,C;(C)=1, ;у РПД (22H)=0D1H

 

MOV DPTR,#data16 1 0 0 1 0 0 0 0 data16[15-8] data16[7-0]

Команда "переслати два байти" завантажує покажчик даних DPTR 16-бітовою константою data16, безпосередньо зазначеної в команді, причому вміст другого і третього байтів команди завантажується відповідно в старший (DPH) і молодший (DPL) байти DPTR. Команда на прапори не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(DPTR):=data16 ;(DPH)=23H, (DPL)=0DFH MOV DPTR,#1234H;(DPH)=12H, (DPL)=34H

 

MOVC A,@A+DPTR 1 0 0 1 0 0 1 1  

Команда "переслати байт" завантажує акумулятор A умістом комірки пам'яті програм (ПП), причому адреса використовуваної комірки обчислюються як сума вихідного вмісту A і вмісту 16-бітового покажчика даних DPTR. Таким чином, у зазначеному пересиланні може брати участь будь-яка комірка з пам'яті програм обсягом до 64 Кбайт. Вміст DPTR не змінюється. Команда на стан прапорів не впливає і має час виконання 2 цикли.

Алгоритм Приклад
(A):=((A)+(DPTR)) ;(A)=01H, (DPTR)=30FFH, ;у ПП (3100H)=22H MOVC A,@A+DPTR;(A)=22H,;(DPTR)=30FFH

 

MOVC A,@A+PC 1 0 0 0 0 0 1 1  

Команда "переслати байт" завантажує в акумулятор A уміст комірки пам'яті програм (ПП), причому адреса використовуваної комірки обчислюються як сума вихідного вмісту A і вмісту програмного лічильника PC, що збільшена на одиницю. Таким чином, у зазначеному пересиланні може брати участь будь-яка комірка з пам'яті програм обсягом до 64 Кбайт. Команда на стан прапорів не впливає і має час виконання 2 цикли.

 

Алгоритм Приклад
(A):=((A)+(PC)+1) ;(A)=11H, (PC)=2300H, ;у ПП (2312H)=44H MOVC A,@A+PC;(A)=44H, ;(PC)=2301H

 

MOVX A,@Ri;де iÎ{0,1} 1 1 1 0 0 0 1 i  

Команда "переслати байт" виконує завантаження акумулятора A вмістом комірки зовнішньої пам'яті даних (ЗПД), адресованої умістом заданого регістра Ri обраного банку, при цьому уміст використовуваної комірки не змінюється. Команда на стан прапорів не впливає, має час виконання 2 цикли і забезпечує доступ до ЗПД обсягом до 256 байт.

Алгоритм Приклад
(A):=((Ri)), де iÎ{0,1} ;(A)=0CCH, (R0)=44H, ;у ЗПД (44H)=3EH MOVX A,@R0;(A)=3EH, (R0)=44H, ;у ЗПД (44H)=3EH

 

MOVX A,@DPTR 1 1 1 0 0 0 0 0  

Команда "переслати байт" виконує завантаження акумулятора A вмістом комірки зовнішньої пам'яті даних (ЗПД), адресованої умістом 16-бітового покажчика даних DPTR, при цьому уміст використовуваної комірки не змінюється. Команда на стан прапорів не впливає, має час виконання 2 цикли і забезпечує доступ до ЗПД обсягом до 64 Кбайт.

Алгоритм Приклад
(A):=((DPTR)) ;(A)=76H, (DPTR)=6D44H, ;у ЗПД (6D44H)=88H MOVX A,@DPTR;(DPTR)=6D44H, ;(A)=88H, у ЗПД (6D44H)=88H

 

MOVX @Ri,A;де iÎ{0,1} 1 1 1 1 0 0 1 i  

Команда "переслати байт" копіює вміст акумулятора A в комірку зовнішньої пам'яті даних (ЗПД), адресовану вмістом заданого регістра Ri обраного банку. Команда на стан прапорів не впливає, має час виконання 2 цикли і забезпечує доступ до ЗПД обсягом до 256 байт.

Алгоритм Приклад
((Ri)):=(A), де iÎ{0,1} ;(A)=0C6H, (R1)=22H, ;у ЗПД (22H)=33H MOVX @R1,A;(A)=0C6H, (R1)=22H, ;у ЗПД (22H)=0C6H

 

MOVX @DPTR,A 1 1 1 1 0 0 0 0  

Команда "переслати байт" копіює вміст акумулятора A в комірку зовнішньої пам'яті даних (ЗПД), адресовану вмістом 16-бітового покажчика даних DPTR. Команда на стан прапорів не впливає, має час виконання 2 цикли і забезпечує доступ до ЗПД обсягом до 64 Кбайт.

 

Алгоритм Приклад
((DPTR)):=(A) ;(A)=55H, (DPTR)=1234H, ;у ЗПД (1234H)=11H MOVX @DPTR,A;(DPTR)=1234H, ;(A)=55H, ;у ЗПД (1234H)=55H

 

MUL AB 1 0 1 0 0 1 0 0  

Команда "множення" множить 8-бітову перемінну з акумулятора A на 8-бітову перемінну з регістра B, при цьому старший і молодший байти добутку завантажуються відповідно в B і A. Уміст прапора переносу C скидається в "0". Уміст прапора переповнення OV встановлюється в "1" якщо результат множення більше 0FFH, у противному випадку - також скидається. Вміст прапора AC не змінюється. Команда має час виконання 4 цикли.

Алгоритм Приклад
(A)×(B)=data16 (A):=data16[7-0], (B):=data16[15-8] (C):=0 якщо data16 £ 0FFH, то (OV):=0 якщо data16 > 0FFH, то (OV):=1 ;(A)=50H=80, (B)=0A0H=160, ;(C)=1, (OV)=0 MUL AB;(C)=0, (OV)=1, ;(A)=00H, (B)=32H

 

NOP 0 0 0 0 0 0 0 0  

Команда "немає операції" збільшує вміст програмного лічильника PC на одиницю, при цьому стан всіх інших програмно доступних елементів мікроконтролера не змінюється. Команда має час виконання 1 цикл.

Алгоритм Приклад
(PC):=(PC)+1   ;(PC)=1FFH NOP NOP;(PC)=201H

 

ORL A,Rn;де n=0-7 0 1 0 0 1 r r r де rrr=000B-111B

Команда "логічне ЧИ" виконує порозрядну диз'юнкцію вмісту акумулятора A із умістом заданого регістра Rn обраного банку, поміщаючи результат у A. Вміст використовуваного регістра не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(A)Ú(Rn), де n=0-7 ;(A)=0FH, (R4)=0F3H ORL A,R4;(A)=0FFH, ;(R4)=0F3H

 

ORL A,@Ri;де iÎ{0,1} 0 1 0 0 0 1 1 i  

Команда "логічне АБО" виконує порозрядну диз'юнкцію вмісту акумулятора A із вмістом комірки резидентної пам'яті даних (РПД), адресованої вмістом заданого регістра Ri обраного банку. Результат розміщається в A. Вміст використовуваної комірки не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(A)Ú((Ri)), де iÎ{0,1} ;(A)=22H, (R0)=55H, ;у РПД (55H)=11H ORL A,@R0;(A)=33H, (R0)=55H,;у РПД (55H)=11H

 

ORL A,direct 0 1 0 0 0 1 0 1 direct

Команда "логічне АБО" виконує порозрядну диз'юнкцію вмісту акумулятора A із вмістом комірки резидентної пам'яті даних (або регістра спеціальних функцій), 8-розрядна адреса якої (якого) визначається символічним ім'ям direct. Результат міститься в A. Вміст використовуваної комірки або використовуваного регістра не змінюється. Команда на стан прапорів не впливає і має час виконання 1 цикл.

Алгоритм Приклад
(A):=(A)Ú(direct)   ;(A)=23H, (PSW)=14H ORL A,PSW;(A)=37H, ;(PSW)=14H

 


1 | 2 | 3 | 4 | 5 | 6 | 7 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.049 сек.)