Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТ МП.doc
Скачиваний:
170
Добавлен:
10.02.2016
Размер:
5.13 Mб
Скачать

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

AND.B D1,D3 ; Операція логічного ТА над молодшими

; байтами операндів , розташованих у D1

; та D3; результат записується до D3

ANDI #$FBFB,SR ; Задання маски переривань відповідно до

; рівня 4

ОRI.B #4,CCR ; Встановлення біта Z = 1 у регістрі

; прапорців ССR

EOR.L DO,D2 ; Виконання операції виключного АБО над

; довгими словами, які зберігаються у D2 та

; D0

EORІ.B #$55,$400700.L ; Інвертування парних бітів у байті, який

; зберігається у комірці пам’яті з адресою

; $400700

Прапорець Nу регістріССRпри виконуванні логічних операцій встановлюється залежно від знаку результату. ПрапорецьZ= 1, якщо результат є нульовий . ПрапорціVтаCзавжди встановлюються такими, що дорівнюють нулю. ПрапорецьХне змінюється.

12.2.4 Команди зсувів

Команди арифметичних та логічних зсувів зреалізовуються за схемами рис. 12.3...12.5:

Рисунок 12.3 – Арифметичний та логічний зсуви ліворуч

(команди ASL, LSL)

Рисунок 12.4 – Арифметичний зсув праворуч (команда ASR)

Рисунок 12.5 – Логічний зсув праворуч (команда LSR)

Команди циклічних зсувів зреалізовуються за схемами рис. 12.6...12.9:

Рисунок 12.6 – Циклічний зсув ліворуч (команда ROL)

Рисунок 12.7 – Циклічний зсув праворуч (команда ROR)

Рисунок 12.8 – Циклічний зсув ліворуч через прапорець Х

(команда ROXL)

Рисунок 12.9 – Циклічний зсув праворуч через прапорець Х

(команда ROXR)

Кількість розрядів, на яку зреалізовується зсув, записується або безпосередньо у команді (1...8) або у регістрі даних, лічильнику зсувів. Операнд, який записано у пам’яті, можна зсувати тільки на 1 біт і його розмір має бути не більше за слово.

ASR #3,D4 ; Арифметичний зсув молодшого слова у регістрі

; D4 праворуч на 3 розряди

ASL.L D0,D6 ; Зсув ліворуч довгого слова у регістрі D6 на

; кількість розрядів, зазначену у D0

ASR (-2,A3,D2,L) ; Зсув праворуч на один розряд слова, яке

; зберігається у комірках пам’яті, ефективну

; адресу першої зазначено за типом “непряме

; регістрове адресування зі зміщенням та

; індексуванням” та наступною

За арифметичного та логічного зсувів ліворуч за допомогою команд ASLтаLSLмолодші розряди операнда, які звільнюються, заповнюються нулями. За арифметичного зсуву праворуч за допомогою командиASRстарші розряди операнда, які звільнюються, заповнюються значенням його старшого (знакового) розряду. Це дозволяє зберегти значення знаку та форми подання операнда (двійковий код або доповняльний код). За логічного зсуву праворуч за командоюLSRстарші розряди операнда заповнюються нулями. При виконанні командиASLзначенняV= 1 встановлюється, якщо відбулося хоча б одне змінення знакового розряду за кількох зсувів. За виконання командиASRстарший розряд не змінюється. За виконання усіх видів циклічних зсувів останній розряд операнда, що він висувається, зберігається як прапорецьС.

12.2.5 Команди безумовних переходів

Команди безумовних переходів (БП) дозволяють перейти у програмі на команду із заданою адресою без запам’ятовування адреси повернення. Команди безумовних переходів зреалізовуються у МП МС68000 з коротким та довгим зміщеннями та різними типами адресування. Короткі зміщення становлять 28адрес, а довгі – 216адрес.Команда безумовного переходу JMPзавантажує до програмного лічильникаРСефективну адресуЕА, яка подається за типами адресування: прямим, непрямим регістровим зі зміщенням, з індексуванням, відносним та відносним з індексуванням. Ця ефективна адреса і є адресою команди, якій передається керування програмою.

Команда безумовного переходу BRAвідрізняється відJMPспособом формування нового вмісту програмного лічильника. Він формується як сума вмісту програмного лічильникаРС(адреса першого байта наступної команди програми) та зміщеннямDs, яке задається у команді. ВеличинаDs, яка вміщує до 16-ти розрядів, задається числом зі знаком, тому нове значенняРСможе бути більше чи менше за його поточне значення. Якщо вмістDsстановить не більше за 8 розрядів (коротке зміщення), то він розміщується у молодшому байті першого слова команди. Якщо ж він становить 16 розрядів (довге зміщення), то задається окремим словом команди. Тому команди з коротким зміщенням займають менший обсяг пам’яті й виконуються швидше, ніж такі ж самі команди з довгим зміщенням.

Нижче наводяться приклади деяких команд безумовних переходів з різним типом адресування для МП МС68000.

Команди безумовного переходу

$107008 JMP$1234

та

$107008 BRA.L$00107030

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

Команди

$107030 JMP*+$10

та

$107030 BRA.S*+$10

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

Мова Асемблера МП МС68020 дозволяє використовувати команди з коротким зміщенням до 216адрес та довгим – до 232адрес.

Команди

$400620 JMP$400634.L

та

$400620 JMP$500020.L

здійснюють відповідно короткий та довгий безумовний переходи.

Аналогічно будуть виконуватись команди

$400606 BRA.В*+$10,

$400606 BRA*+$10,

$400606 BRA.L*+$10

та

$ 400606 BRA.L$600000

Команди

JMP(*+ $10,PC)

та

JMP(*+ $100,PC)

використовують відносне адресування, а команди

JMP($400610,РС,А2.W)

JMP(*+$10,РС,А2.W)

JMP($8,РС,А2.W)

JMP(*+$1000,РС,А2.W)

JMP($400610,ZРС,А2.W)

JMP($400610,А2.W)

використовують непряме регістрове адресування з індексуванням.