Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мікропроцесорна техніка (Опис машинних команд).doc
Скачиваний:
7
Добавлен:
10.12.2018
Размер:
515.07 Кб
Скачать

1.2. Команди пересилки даних мікроконтролера mcs51.

Ця група представлена 28 командами, їх короткий опис приведено в табл. 2, де також вказані тип команди (Т) у відповідності з табл. 1, її довжина в байтах (Б) та час виконання команди в машинних циклах (Ц).

Табл. 2. Команди передачі даних

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

Мнемокод

КОП

Т

Б

Ц

Операция

Пересилка даних з регістру Rn (n=0÷7) в аккумулятор A

MOV A, Rn

11101rrr

1

1

1

(A)  (Rn)

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

MOV A, ad

11100101

3

2

1

(A)  (ad)

Пересилка даних з РПД @Ri (i=0,1) в аккумулятор А

MOV A, @Ri

1110011i

1

1

1

(A)  ((Ri))

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

MOV A, #d

01110100

2

2

1

(A)  #d

Пересилка даних з акумулятора в регістр

MOV Rn, A

11111rrr

1

1

1

(Rn)  (A)

Пересилка даних з байту ad, що прямо адресується в регистр Rn (n=0÷7)

MOV Rn, ad

10101rrr

3

2

2

(Rn)  (ad)

Завантаження в регістр Rn (n=0÷7) константи

MOV Rn, #d

01111rrr

2

2

1

(Rn)  #d

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

MOV ad, A

11110101

3

2

1

(ad)  (A)

Пересилка даних з регістру Rn (n=0÷7) в байт ad, що прямо адресується

MOV ad, Rn

10001rrr

3

2

2

(ad)  (Rn)

Пересилка даних з байту ads в байт add

MOV add, ads

10000101

9

3

2

(add)  (ads)

Пересилка даних з РПД @Ri (i=0,1) в байт ad, що прямо адресується

MOV ad, @Ri

1000011i

3

2

2

(ad)  ((Ri))

Пересилка константи в байт ad, що прямо адресується

MOV ad, #d

01110101

7

3

2

(ad)  #d

Пересилка даних з аккумулятора А в РПД @Ri (i=0,1)

MOV @Ri, A

1111011i

1

1

1

((Ri))  (A)

Пересилка даних з байту ad, що прямо адресується в РПД @Ri (i=0,1)

MOV @Ri, ad

0110011i

3

2

2

((Ri))  (ad)

Пересилка константи в РПД @Ri (i=0,1)

MOV @Ri, #d

0111011i

2

2

1

((Ri))  #d

Завантаження даних в вказівник даних DPTR

MOV DPTR, #d16

10010000

13

3

2

(DPTR)  #d16

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

MOVC A, @A + DPTR

10010011

1

1

2

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

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

MOVC A, @A + PC

10000011

1

1

2

(PC)  (PC)+1,

(A)  ((A)+(PC))

Пересилка даних з ВПД @Ri (i=0,1) в аккумулятор А

MOVX A, @Ri

1110001i

1

1

2

(A)  ((Ri))

Пересилка даних з ВПД @Ri (i=0,1) в аккумулятор А

MOVX A, @DPTR

11100000

1

1

2

(A)  ((DPTR))

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

MOVX @Ri, A

1111001i

1

1

2

((Ri))  (A)

Пересилка даних з аккумулятора А в ВПД @Ri (i=0,1)

MOVX @DPTR, A

11110000

1

1

2

((DPTR))  (A)

Завантаження даних в стек

PUSH ad

11000000

3

2

2

(SP)  (SP) + 1, ((SP))  (ad)

Витягнення даних з стеку

POP ad

11010000

3

2

2

(ad)  (SP),

(SP)  (SP) - 1

Обмін вмістимого аккумулятора А з регістром Rn (n=0÷7)

XCH A, Rn

11001rrr

1

1

1

(A) ↔ (Rn)

Обмін аккумулятора А з байтом ad, що прямо адресується

XCH A, ad

11000101

3

2

1

(A) ↔ (ad)

Обмін аккумулятора А з байтом з РПД @Ri (i=0,1)

XCH A, @Ri

1100011i

1

1

1

(A) ↔ ((Ri))

Обмін молодших тетрад аккумулятора А та байту РПД @Ri (i=0,1)

XCHD A, @Ri

1101011i

1

1

1

(A0…3) ↔((Ri)0…3)

Більшість команд, приведених в табл. 2, можна представити у вигляді:

MOV  “байт-приймач”, “байт-джерело”.

Команда пересилає дані з байту-джерела в байт-приймач. Вмістиме байту-джерела не змінюється. Ця команда не впливає на прапорці та інші регістри. Команда “MOV” допускає 15 комбінацій адресації байту-джерела та байту–приймача. Нижче наведено приклади цих комбінацій:

1) (A)=DCH, (R4)=54H,

MOV  A, R4,

(A)=54H, (R4)=54H.

Вмістиме регістру R4 пересилається в аккумулятор А.

2) (A)=BFH, (40H)=15H

MOV  A, 40H

(A)=15H, (40H)=15H

Вмістиме комірки ОЗП 40H пересилається в акумулятор А.

3) (R0)=3AH, (3AH)=1FH, (A)=24H,

MOV  A, @R0,

(A)=1FH, (R0)=3AH, `(3AH)=1FH.

Вмістиме комірки ОЗП 3АН, яка адресується регістром R0, пересилається в аккумулятор А.

4) (A)=A5H=1010 0101B,

MOV  A, #49H,

(A)=49H=0100 1001B.

Константа 49Н заноситься в аккумулятор А.

5) (А)=2DH, (R7)=5BH,

MOV  R7, A,

(A)=2DH, (R7)=2DH.

Вмістиме регістру R7 пересилається в аккумулятор А.

6) (R2)=6DH, (P2)=CCH,

MOV  R2, P2,

(R2)=CCH, (P2)=CCH.

Вмістиме порта P2 пересилається в регістр R2.

7) (R3)=FDH,

MOV  R3, #49H

(R3)=49H.

Константа 49Н заноситься в регістр R3.

8) (A)=3CH, (P1)=BBH,

MOV  P1, A,

(P1)=3CH, (A)=3CH.

Вмістиме аккумулятора А пересилається в порт Р1.

9) (R5)=57H, (30H)=9FH,

MOV  30H, R5,

(30H)=57H, (R5)=57H.

Вмістиме регістра R5 пересилається в комірку ОЗП 30Н.

10) (33H)=45H, (38H)=50H,

MOV  38H, 33H,

(38H)=45H, (33H)=45H.

Вмістиме комірки 33Н пересилається в комірку 38Н.

11) (R0)=25H, (52H)=DFH, (25H)=CCH

MOV  52H, @R0,

(52H)=CCH, (25H)=CCH, (R0)=25H.

Вмістиме комірки ОЗП 25Н, що адресується регістром R0, пересилається в комірку ОЗП 52Н.

12) (4FH)=8DH,

MOV  4FH, #13H

(4FH)=13H.

Константа 13Н заноситься в комірку ОЗП 4FH.

13) (R0)=40H, (40H)=6DH, (A)=88H,

MOV  @R0, A,

(40H)=88H, (A)=88H, (R0)=40H.

Вмістиме аккумулятора А пересилається в комірку ОЗП 40Н, що адресується регістром R0.

14) (R1)=37H, (37H)=F5H, (P2)=8CH,

MOV  @R1, P2,

(37H)=8CH, (P2)=8CH, (R1)=37H.

Вмістиме порта Р2 пересилається в комірку ОЗП 37Н, що адресується регістром R1.

15) (R0)=40H, (40H)=76H,

MOV  @R0, #AAH,

(R0)=40H, (40H)=AAH.

В комірку 40Н, що адресується регістром R0, засилається константа ААН.

16) (DPTR)=35ACH,

MOV  DPTR, #1456H,

(DPTR)=1456H, (DPH)=14H, (DPL)=56H.

В регістр DPTR (вказівник даних) завантажується 16-бітна константа 1456Н, вказана в другому та третьому байтах команди. Другий байт команди завантажується в старший байт вказівника даних (DPH), а третій байт – в молодший байт вказівника даних (DPL). Ця команда на прапорці не впливає і є єдиною командою, яка одночасно завантажує 16 біт даних.

17) MOVC  A, @A+DPTR

18) MOVC A, @A+PC

Ці команди завантажують в аккумулятор байтом коду чи константою з ПП. Адрес цього байту обчислюється як сума 8-бітного вихідного вмістимого аккумулятора без знаку та вмістимого 16-бітного регістру. В якості 16-бітного регістру може бути як вказівник даних DPTR так і програмний лічильник PC. У випадку, коли використовується PC, програмний лічильник збільшується до адресу наступної команди, перед тим як його вмістиме додається з вмістимим аккумулятора. 16-бітне додавання виконується так, що перенос з молодших восьми біт може поширюватися через старші біти. Ця команда на прапорці не впливає.

(A)=1BH, (DPTR)=1020H, ПП(103BH)=48H, ОЗП(103BН)=88Н,

MOVС  A, @A+DPTR

(A)=48H, (DPTR)=1020H.

(A)=FAH, (PC)=0289H, ПП(0384Н)=9BH,

MOVC  A, @A+PC

(A)=9BH, (PC)=028AH.

19) MOVX  A, @Ri.

20) MOVX  A, @DPTR.

Ці команди пересилають дані з ЗПД (зовнішньої пам’яті даних) в аккумулятор. Вони відрізняються тим, що забезпечують 8-бітну або 16-бітну непряму адресацію до ЗПД. В першому випадку, вмістиме R0 або R1 вибраного банку регістрів забезпечує 8-бітний адрес, який мультиплексується з даними порта P0. Якщо використовуються ОЗП ненабагато більші, ніж 256 байт, то для фіксації старших байтів адресу можна використовувати будь-які інші виходи портів, які переключаються командою, розміщеною перед командою MOVX. В другому випадку, при виконанні команди MOVX, вказівник даних генерує 16-бітний адрес. Порт P2 виводить старші 8 біт адресу (DPH), а порт P0 мультиплексує молодші 8 біт (DPL) з даними. Остання команда є більш швидкою та ефективною при доступі до великих масивів даних (до 64K байт), так як для встановлення портів виводу не потрібно додаткових команд.

21) MOVX   @Ri, A. 

22) MOVX   @DPTR, A.

Ці команди пересилають дані з аккумулятора в ЗПД.

(A)=95H, (R1)=FDH, ЗПД(FDH)=00H,

MOVX  @R1, A,

(A)=95H, (R1)=FDH, ЗПД(FDH)=95H.

(A)=97H, (DPTR)=1FFFH, ЗПД(1FFFH)=00H,

MOVX  @DPTR, A,

(A)=97H, (DPTR)=1FFFH, ЗПД(1FFFH)=97H.

23) PUSH  ad

Команда “запису в стек” збільшує вказівник стеку SP на одиницю, і після цього, вмістиме вказаної змінної, що прямо адресується, копіюється в комірку ВПД, що адресується з допомогою вказівника стеку. На прапорці ця команда не впливає і використовується для запису проміжних даних в стек.

(SP)=09H, (DPTR)=4567H

PUSH  DPH

PUSH  DPL

(SP)=0BH, ВПД(0AH)=45H, ВПД(0BH)=67H, (DPTR)=4567H.

24) POP  ad

Команда “читання з стеку” зчитує вмістиме комірки ВПД, яка адресується з допомогою вказівника стеку в комірку ВПД, що прямо адресується, при цьому, вказівник стеку зменшується на одиницю. Ця команда не впливає на прапорці і використовується для читання з стеку проміжних даних.

(SP)=32H, ВПД(32H)=12H, ВПД(31H)=56H,

(DPH)=01H, (DPL)=ABH, ВПД(30H)=20H,

POP  DPH

POP  DPL

(SP)=30H, (DPH)=12H, (DPL)=56H,

ВПД(32H)=12H ВПД(31H)=56H.

25) XCH  A, Rn

26) XCH  A, ad

27) XCH  A, @Ri

Останні команди здійснюють обмін між вмістимим аккумулятора та вмістимим джерела, вказаного в команді. Операнд джерела може використовувати такі режими адресації: регістрову, пряму та непряму.

(A)=3CH, (R4)=15H,

XCH  A, R4,

(A)=15H, (R4)=3CH.

(A)=FFH, (P3)=DAH,

XCH  A, P3

(A)=DAH, (P3)=FEH.

(R1)=39H, ВПД(39H)=44H, (A)=BCH,

XCH  A, @R1

ВПД(39H)=BCH, (A)=44H.

28) XCHD  A, @Ri

Команда “обмін тетрадою” виконує обмін молодшої тетради (біти 3...0) акумулятора А з вмістимим тетради комірки ВПД, непряма адресація до якої здійснюється з допомогою вказаного регістру. На старші біти (біти 7...4) ця команда не впливає.

(R0)=55H, (A)=89H, ВПД(55Н)=А2Н,

XCHD  A, @R0,

(A)=82H, ВПД(55H)=A9H.

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

До даної групи відносяться 24 команди, короткий опис яких наведено в табл. 3. З неї випливає, що мікроконтролери сімейства MCS-51 виконують достатньо широкий набір команд для організації обробки даних цілого типу, включаючи команди множення та ділення. В табл. 3 також приведені типи команд (Т) у відповідності з табл. 1, їх довжина в байтах (Б) та час виконання в машинних циклах (Ц).

Табл. 3. Арифметичні операції

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

Мнемокод

КОП

Т

Б

Ц

Операция

Додавання вмістимого аккумулятора з регістром Rn, (n=0÷7)

ADD A, Rn

00l01rrr

1

1

1

(A)  (A) + (Rn)

Додавання вмістимого аккумулятора з адресом, що прямо адресується

ADD A, ad

00100101

3

2

1

(A)  (A) + (ad)

Додавання вмістимого аккумулятора з байтом з РПД @Ri, (i=0,1)

ADD A, @Ri

0010011i

1

1

1

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

Додавання аккумулятора з константою

ADD A, #d

00100100

2

2

1

(A)  (A) + #d

Додавання аккумулятора з регістром та переносом

ADDC A, Rn

00111rrr

1

1

1

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

Додавання аккумулятора з адресом, що прямо адресується та переносом

ADDC A, ad

00110101

3

2

1

(A)  (A) + (ad) + (C)

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

ADDC A, @Ri

0011011i

1

1

1

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

Додавання аккумулятора з константою та переносом

ADDC A, #d

00110100

2

2

1

(A)  (A) + # d + (C)

Десяткова корекція аккумулятора

DA A

11010100

1

1

1

Якщо (А0…3)>9 або ((AC)=1), то (А0…3) (А0…З) + 6. Якщо (А4…7) >9 або ((С)=1), то (А4…7)  (А4…7) + 6

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

SUBB A, Rn

10011rrr

1

1

1

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

Віднімання від вмістимого аккумулятора адресу, що прямо адресується, та позички

SUBB A, ad

10010101

3

2

1

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

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

SUBB А, @Ri

1001011i

1

1

1

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

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

SUBB А, d

10010100

2

2

1

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

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

INC А

00000100

1

1

1

(A)  (A) + 1

Інкремент регістру

INC Rn

00001rrr

1

1

1

(Rn)  (Rn) +1

Інкремент байту, що прямо адресується

INC ad

00000101

3

2

1

(ad)  (ad) + 1

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

INC @Ri

0000011i

1

1

1

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

Інкремент вказівника даних

INC DPTR

10100011

1

1

2

(DPTR)(DPTR) + 1

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

DEC A

00010100

1

1

1

(A)  (A) – 1

Декремент регістру

DEC Rn

00011rrr

1

1

1

(Rn)  (Rn) – 1

Декремент байту, що прямо адресується

DEC ad

00010101

3

2

1

(ad)  (ad) – 1

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

DEC @Ri

0001011i

1

1

1

((Ri))  ((Ri)) – 1

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

MUL AB

10100100

1

1

4

(B)(A)  (A)*(В)

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

DIV AB

10000100

1

1

4

(B).(A)  (A)/(В)

При виконанні команд ADD, ADDC, SUBB, MUL, DIV встановлюються прапорці регістру PSW. Прапорець С встановлюється при переносі з розряду D7, тобто у випадку, коли результат не вміщується в вісім розрядів. Прапорець АС встановлюється при переносі з розряду D3 в командах додавання та віднімання і використовується при реалізації десяткової арифметики. Цей прапорець використовується командою DA A. Прапорець 0V встановлюється при переносі з розряду D6, тобто, якщо результат не вміщується в сім розрядів і восьмий може бути інтерпретований як знаковий. Цей прапорець використовується при організації обробки чисел зі знаком. Прапорець P встановлюється та скидається апаратно. Якщо число одиничних біт в акумуляторі непарне, то P=1, в іншому випадку P=0.

29) ADD  A, Rn

Ця команда (“додавання”) додає вмістиме аккумулятора А з вмістимим байта-джерела, залишаючи результат в аккумуляторі. При виникненні переносів з байтів 7 та 3 встановлюються прапорці переносу (С) та додаткового переносу (AC) відповідно. В іншому випадку ці прапорці скидаються. При додаванні цілих чисел без знаку прапорець переносу “С” вказує на появу переповнення. Прапорець переповнення (0V) встановлюється, якщо є перенос з 6-го біту і немає з біту 7, або є перенос з біту 7 та немає з біту 6. В іншому випадку 0V скидається. При додаванні цілих чисел зі знаком 0V вказує на від’ємну величину, одержану при додаванні двох додатних операндів або на додатну суму для двох від’ємних операндів.

(A)=C3H, (R6)=AAH

ADD  A, R6

(A)=6DH, (R6)=AAH, (AC)=0, (C)=1, (0V)=1.

30) ADD  A, @Ri

(A)=95H, (R1)=31H, (31H)=4CH

ADD  A, @R1

(A)=E1H, (31H)=4CH, (C)=0, (AC)=1, (0V)=0.

31) ADD  A, ad

(A)=77H, (90H)=FFH

ADD  A, 90H

(A)=76H, (90H)=FFH, (C)=1, (0V)=0, (AC)=1.

32) ADD  A, #d

(A)=09H

ADD  A, #D3H

(A)=DCH, (C)=0, (0V)=0, (AC)=0.

33) ADDC  A,  Rn

Ця команда (“додавання з переносом” одночасно додає вмістиме байта-джерела, прапорець переносу та вмістиме аккумулятора А, залишаючи результат в аккумуляторі. При цьому прапорці переносу та додаткового переносу встановлюються, якщо є перенос з біту 7 або біту 3, і скидаються в іншому випадку. При додаванні цілих без знаку, прапорець переповнення вказує на переповнення. Прапорець переповнення (0V) встановлюється, якщо є перенос з біту 6 і немає переносу з 7 біту, або є перенос з біту 7 і немає з біту 6, в іншому випадку прапорець 0V скидається. При додаванні цілих зі знаком, 0V вказує на від’ємну величину, одержану при додаванні двох додатних операндів або на додатну суму від двох від’ємних операндів.

(A)=B2H, (R3)=99, (C)=1

ADDC  A, R3

(A)=4CH, (R3)=99H, (C0=1, (AC)=0, (0V)=1.

34) ADDC  A, @Ri

(A)=D5H, (R0)=3AH, (3AH)=1AH, (C)=1

ADDC  A, @R0

(A)=F0H, (3AH)=1AH, (C)=0, (AC)=1, (0V)=0.

35) ADDC  A, ad

(A)=11H, (80H)=DFH, (C)=1,

ADDC  A, 80H,

(A)=F1H, (C)=0, (AC)=1, (0V)=0.

36) ADDC  A, #d

(A)=55H, (C)=0

ADDC  A, #55H

(A)=AAH, (C)=0, (AC)=0, (0V)=1.

37) DA  A

Команда “десяткової корекції аккумулятора при додаванні” впорядковує 8-бітну величину аккумулятора після попередньо виконаної команди додавання двох змінних (кожна з них в двійково-десятковому форматі). Для виконання додавання може використовуватись будь-яка з типів команд ADD або ADDC. Якщо значення бітів 3-0 аккумулятора перевищує 9 (XXXX 1010 … XXXX1111) або якщо прапорець AC рівний “1”, то до вмістимого (A) додається 06, одержуючи відповідну двійково-десяткову цифру в молодшому півбайті. Це внутрішнє побітне додавання встановлює прапорець переносу, якщо перенос з поля молодших чотирьох біт поширюється через всі старші біти. В іншому випадку прапорець переносу не не змінюється. Якщо після цього прапорець переносу рівний “1”, або якщо значення чотирьох старших біт (7-4) перевищує 9 (1010 ХХХХ ... 1111 ХХХХ), значення цих старших біт збільшується на 6, створюючи відповідну двійково-десяткову цифру в старшому півбайті. І знову при цьому прапорець переносу встановлюється, якщо перенос одержується з старших біт, але не змінюється в іншому випадку. Таким чином, прапорець переносу вказує на те, що сума двох вихідних двійково-десяткових змінних більше ніж 100. Ця команда виконує десяткове перетворення з допомогою додавання 06, 60, 66 з вмістимим аккумулятора в залежності від початкового стану аккумулятора та слову стану програми (PSW). Команда DA  A не може просто перетворити шістнадцяткове значення в аккумуляторі в двійково-десяткове представлення і не використовується для десяткового віднімання.

(A)=56H, (R3)=67H, (C)=1

ADDC  A, R3

DA  A

(A)=24H, (R3)=67H, (C)=1

(A)=30H, (C)=0

ADD  A, #99H

DA  A

(A)=29H, (C)=1

38) SUBB  A, Rn

Команда “віднімання з позичкою” віднімає вказану змінну разом з прапорцем переносу від вмістимого аккумулятора, результат заноситься в аккумулятор. Ця команда встановлює прапорець переносу (позички), якщо при відніманні для біту 7 необхідна позичка, в іншому випадку прапорець переносу скидається. Якщо прапорець переносу встановлений перед виконанням цієї команди, то це вказує на те, що позичка потрібна при виконанні з збільшеною точністю на попередньому кроці, - тому прапорець переносу віднімається від вмістимого аккумулятора разом з операндом джерела. Прапорець АС встановлюється, якщо позичка необхідна для біту 3 і скидається в іншому випадку. Прапорець переповнення (0V) встановлюється, якщо позичка необхідна для біту 6, але немає його для біту 7, або є для біту 7, але немає для біту 6. При відніманні цілих зі знаком прапорець 0V вказує на від’ємне число, яке одержується при відніманні від’ємної величини від додатної, або додатне число, яке отримується при відніманні додатного числа від від’ємного. Операнд джерела допускає чотири режими адресації, які розглянемо на прикладах.

(A)=C9H, (R2)=54H, (C)=1,

SUBB  A, R2,

(A)=74H, (R2)=54H, (C)=0, (0V)=1.

39) SUBB  A, @Ri,

(A)=49H, (33H)=68H, (C)=1, (R0)=33H,

SUBB  A, @R0,

(A)=E1H, (C)=1, (AC)=0, (0V)=0.

40) SUBB  A, ad

(A)=97H, (B)=25H, (AC)=0, (0V)=1,

SUBB  A, B,

(A)=72H, (B)=25H, (C)=0, (AC)=0, (0V)=1.

41) SUBB  A, #d

(A)=BEH, (C)=0,

SUBB  A, #3FH

(A)=7FH, (C)=0, (0V)=1.

42) INC  A

Команда “інкремент” виконує додавання “1” до вказаної змінної і не впливає на прапорці. Ця команда допускає чотири режими адресації.

(A)=1FH, (AC)=0,

INC  A,

(A)=20H, (AC)=0.

43) INC  Rn,

(R4)=FFH, (C)=0, (AC)=0.

INC  R4,

(R4)=00H, (C)=0, (AC)=0.

44) INC  ad

(43H)=22H,

INC  43H,

(43H)=23H.

45) INC  @Ri

(41H)=4FH, (R1)=41H, (AC)=0,

INC @R1,

(R1)=41H, (41H)=50H, (AC)=0.

46) INC  DPTR

Команда “інкремент вказівника даних” виконує інкремент (додавання “1”) 16-бітного вказівника даних. Додавання “1” здійснюється до 16-ти бітів. Якщо виникає переповнення молодшого байту вказівника даних (DPL) з FFH в 00H, то це приводить до інкременту старшого байту (DPH). На прапорці ця команда не впливає.

(DPH)=12H, (DPL)=FFH,

INC  DPTR,

(DPH)=13H, (DPL)=00H.

47) DEC  A

Команда “декремент” проводить віднімання “1”від вказаного операнду. Команда DEC не впливає на прапорці. Ця команда допускає чотири режими адресації операнду.

(A)=11H, (C)=1, (AC)=1,

DEC  A

(A)=10H, (C)=1, (AC)=1.

48) DEC  @Ri

(R1)=7FH, (7EH)=40H, (7FH)=00H,

DEC  @R1

DEC  R1

DEC  @R1

(R1)=7FH, (7EH)=3FH, (7FH)=FFH.

49) DEC  Rn

(R4)=5CH,

DEC  R4,

(R4)=5BH.

50) DEC  ad

(SCON)=A0H, (C)=1, (AC)=1,

DEC  SCON,

(SCON)=9FH, (C)=1, (AC)=1.

51) MUL  AB

Команда ”множення”, множить 8-бітні цілі числа без знаку з аккумулятора та регістру В. Старший байт 16-бітного добутку заноситься в регістр В, а молодший в аккумулятор А. Якщо результат добутку більший ніж FFH (255), то встановлюється прапорець переповнення (0V), в іншому випадку він скидається. Прапорець переносу завжди скидається.

(A)=50H, (B)=A0H, (C)=1, (0V)=0,

MUL  AB

(A)=20H, (B)=03H, (C)=0, (0V0=1.

52) DIV  AB

Команда “ділення” ділить 8-бітне ціле число без знаку з акумулятора А на 8-бітне ціле без знаку з регістру В. В аккумулятор заноситься ціла частина частки, а в регістр В – остача. Прапорці переносу (С) та переповнення (0V) скидаються. Якщо (A)<(B), то прапорець додаткового переносу (AC) не скидається. Прапорець переносу скидається в будь-якому випадку.

(A)=FBH, (B0=12H, (C)=1,

DIV  AB

(A)=0DH, (B)=11H, (C)=0.

Якщо регістр В містить 00, то після виконання команди DIV вмістиме аккумулятора А та регістру В будуть невизначені. Прапорець переносу скидається, а прапорець переповнення встановлюється в “1”.