Склад команд арифметичних і логічних операцій

Страницы работы

Содержание работы

Каф ЭС

Лабораторна робота №3

Склад команд арифметичних і логічних операцій

Сохоневич О.А.

Мета роботи: Ознайомлення зі складом команд арифметичних і

логічних операцій та принципами побудови лінійних обчислювальних

процесів на язику Assembler.

1. Короткі теоретичні відомості

Основні команди арифметичних операцій

Команда ADD A, <байт даних другого операнда>

Ця команда складає вміст акумулятора А з байтом даних, залишаючи

результат в акумуляторі. З появою переносів з розрядів 7 і 3, установлюється

прапори переносу (С) і додаткового переносу (АС) відповідно, інакше ці

прапори зкидаються. При складанні цілих чисел без знака прапор переносу

"С" вказує на появу переповнення. Прапор переповнення

(OV)встановлюється, якщо є перенос з бита 6 и нема переносу з бита 7, або є

перенос з бита 7 и нема - з бита 6, в протилежному випадку прапор OV

скидається. При складанні цілих чисел зі знаком, прапор OV вказує на

негативну величину, або на позитивну суму для двох негативних операндів.

Для команди складання мають місце наступні режими адресації байта

другого операнда:

1. регістровий;

2. косвено-регістровий;

3. прямий;

4. безпосередній.

1.

Асемблер: ADD A, Rn ; де n=0-7

Код: 0 0 1 0 1 rrr , де rrr=000-111

Час: 1 цикл

Алгоритм: (A) : = (A) + (Rn), де n=0-7

C : = X, OV : =X, AC : =X, де Х=(0 або 1)

Приклад: ;(A)=C3H, (R6)=AAH

ADD A,R6 ;(A)=6DH, (R6)=AAH

;(AC)=0, (C)=1, (OV)=1

2.

Асемблер: ADD A, @Ri ; де i=0,1

Код: 0 0 1 0 0 1 1 i , де i=0,1

Час: 1 цикл

Алгоритм: (A) : +(A) = ((Ri)), де i=0,1

C : = X, OV : = X, AC : = X, де Х=(0 або 1)

Приклад: ;(A)=95H, (R1)=31H, (ОЗУ [31])=4CH

ADD A,@R1 ;(A)=E1H, (ОЗУ [31])=4CH,

;(C)=0, (AC)=1, (OV)=0

3.

Асемблер: ADD A, <data address>

Код: 0 0 1 0 0 1 0 1 data adress

Час: 1 цикл

Алгоритм: (A) : =(A)+(data)

C : =X, OV : =X, AC : =X, де Х=(0 або 1)

Приклад: ;(A)=77H, (ОЗУ [90])=FFH

ADD A,90H ;(A)=76H, (ОЗУ [90})=FFH,

;(C)=1, (OV)=0, (AC)=1

4.

Асемблер: ADD A, <#data>

Код: 0 0 1 0 0 1 0 0 #data

Час: 1 цикл

Алгоритм: (A) : = (A)+#data

C : =X, OV : =X, AC : = X, де Х=(0 или 1)

Приклад: ;(A)=09H

ADD A,#0D3H ;(A)=DCH,

;(C)=0, (OV)=0, (AC)=0

Команда ADDC A, <байт даних другого операнда>

Ця команда одночасно складує вміст байту даних другого операнда,

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

акумуляторі. При цьому прапори переносу і додаткового

переносувстановлюються, якщо є перенос з бита 7 або бита 3, і скидаються в

протилежному випадку. При при складанні цілих чисел без знака прапор

переносу вказує на переповнення. Прапор переповнення (OV)

встановлюється, якщо є перенос бита 6 и нема переносу з бита 7 або є

перенос з бита 7 и нема - з бита 6, в протилежному випадку OV скидається.

При складанні цілих чисел зі знаком OV вказує на негативну величину,

отриману при складанні двох позитивних операндів або на позитивну суму

двох негативних операндів.

Для цієй команди дозволені наступні режими адресації байта даних

другого операнда:

1. регістровий;

2. косвено-регістровий;

3. прямий;

4. безпосередній.

1.

Асемблер: ADDC A, Rn ; де n=0-7

Код: 0 0 1 1 1 rrr , де rrr=000-111

Час: 1 цикл

Алгоритм: (A) : = (A) + (C) = (Rn)

(C) : =X, (AC) : =X, (OV) : =X, где Х=(0 або 1)

Приклад: ;(A)=B2H, (R3)=99,

;(C)=1

ADDC A,R3 ;(A)=4CH, (R3)=99

;(C)=1, (AC)=0, (OV)=1

2.

Асемблер: ADDC A, @Ri ; де i=0,1

Код: 0 0 1 1 0 1 1 i , де i=0,1

Час: 1 цикл

Алгоритм: (A) : =(A) + (C) + ((Ri))

(C) : =X, (AC) : =X, (OV) : = X, де Х=(0 або1)

Приклад: ;(A)=D5H, (R0)=3AH,

;(ОЗУ [3A])=1AH, (C)=1

ADDC A,@R0 ;(A)=F0H, (ОЗУ [3A])=1AH,

;(C)=0, (AC)=1, (OV)=0

3.

Асемблер: ADDC A, <data address>

Код: 0 0 1 1 0 1 0 1 data address

Час: 1 цикл

Алгоритм: (A) : =(A)+(C)+(data)

(C) : =X, (AC) : =X, (OV) : =X, де Х=(0 або 1)

Приклад: ;(A)=11H, (ОЗУ [80])=DFH, (C)=1

ADDC A,80H ;(A)=F1H, (C)=0, (AC)=1 (OV)=0

4.

5.

Асемблер: ADDC A, <#data>

Код: 0 0 1 1 0 1 0 0 #data

Час: 1 цикл

Алгоритм: (A) : = (A)+(C)+ #data

(C) : =X, (AC) : = X, (OV) : =X, де Х=(0 або 1)

Приклад: ;(A)=55H, (C)=0

ADDC A,#55H ;(A)=AAH, (C)=0, (AC)=0, (OV)=1

Команда CLR A

Команда скидає (записує 0) вміст акумулятора А. На прапори команда не

впливає.

1.

Асемблер: CLR A

Код: 1 1 1 0 0 1 0 0

Час: 1 цикл

Алгоритм: (A) : = 0

Приклад: ;(A)=6DH, (C)=0, (AC)=1

CLR A ;(A)=00H, (C)=0, (AC)=1

КомандаCLR <bit>

Команда скидає вказаний біт в нуль. Ця команда працює з прапором

переносу "С" або іншим бітом з прямою адресацією.

1.

Асемблер: CLR C

Код: 1 1 0 0 0 0 1 1

Час: 1 цикл

Алгоритм: (C) : = 0

Приклад: ;(C)=1

CLR C ;(C)=0

2.

Асемблер: CLR <bit>

Код: 1 1 0 0 0 0 1 0 bit address

Час: 1 цикл

Алгоритм: (bit) : = 0

Приклад: ;(P1)=5EH (01011110B)

CLR P1.3 ;(P1)=56H (01010110B)

КомандаCPL A

Команда кожний біт акумулятора інвертує (змінює на протилежний). Біти,

що містять "одиниці", після цієї команди будуть вміщувати "нулі", и навпаки.

На прапори ця команда не впливає.

1.

Асемблер: CPL A

Код: 1 1 1 1 0 1 0 0

Час: 1 цикл

Алгоритм: (A) : = /(A)

Приклад: ;(A)=65H (01100101B)

CPL A ;(A)=9AH (10011010B)

КомандаCPL <bit>

Команда змінює на протилежне значення вказаного біту. Біт, що був

"одиницею", змінюється на "нуль" и навпаки. Команда CPL може оперувати з

прапором переносу або з іншим бітом, яки має пряму адресацію. На інші

прапори команда не впливає.

1.

Асемблер: CPL <bit>

Код: 1 0 1 1 0 0 1 0 bit address

Час: 1 цикл

Алгоритм: (bit) : = /(bit)

Приклад: ;(P1)=39H (00111001B)

CPL P1.1

CPL P1.3 ;(P1)=33H (00110011B)

2.

Асемблер: CPL C

Код: 1 0 1 1 0 0 1 1

Час: 1 цикл

Алгоритм: (C) : = /(C)

Приклад: ;(C)=0, (AC)=1, (OV)=0

CPL C ;(C)=1, (AC)=1, (OV)=0

Команда DA A

Команда десяткової корекції акумулятора для складання. Упорядковує 8-

бітовую _________величину в акумуляторі після виконання команди складання двох

операндів (кожний в упакованому двійково-десятковому форматі). Для

виконання складання може використовуватись будь-який із типів команд

ADD або ADDC. Якщо значення бітів 3-0 акумулятора (А) перевищує 9

(ХХХХ 1010-ХХХХ 1111) або, якщо прапор АС дорівнює "1", то до вмісту

(А) додається 06, для отримання відповідного двійково-десяткової цифри в

молодшій тетраді байта. Це внутрішнє побітове складання встановлюває

прапор переносу, якщо перенос з поля молодшої тетради поширюється через

усі старші біти, а в протилежному випадку - не змінює прапор переносу.

Якщо після цього прапор переносу дорівнює "1", або значення чотирьох

старших біт (7-4) перевищує 9 (1010 ХХХХ - 1111 ХХХХ), значення цих

старших біт збільшується на 6, створюючи відповідну двійково-десяткову

цифру в старшій тетраді. І знову при цьому прапор переносу встановлюється,

якщо перенос має місце з старших бітів, але не змінюється в протилежному

випадку. Таким чином, прапор переносу вказує на те, що сума двох

двійково-десяткових змінних більше ніж 100. Ця команда виконує десяткове

перетворення за допомогою складання 06, 60, 66 зі змістом акумулятора в

залежності від начального стану акумулятора і слово стану програми (PSW).

1.

Асемблер: DA A

Код: 1 1 0 1 0 1 0 0

Час: 1 цикл

Алгоритм: якщо ((A[3-0])>9 або (AC)=1), то A[3-0]:=A[3-0]+6

якщо ((A[7-4])>9 або (С)=1), то А[7-4]:=A[7-4]+6

Приклад: a) ;(A)=56H, (R3)=67H, (C)=1

ADDC A,R3

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

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

ADD A, #99H

DA A ;(A)=29, (C)=1

Команда DEC <байт>

Команда здійснює вирахування "1" з вказаного операнда. Па часткове

значення 00Н перейде в 0FFH. Команда DEC не впливає на прапори. Ця

команда може мати чотири режими адресації операнда:

1. до акумулятору;

2. регістровий;

3. прямий;

4. косвено-регістровий.

Похожие материалы

Информация о работе