- •До лабораторних робіт з дисципліни
- •Частина 2
- •1 Середовище сапр active–hdl
- •1.1 Загальні відомості про Active-hdl
- •1.2 Створення нового проекту
- •1.3 Створення нового документа (введення тексту програми)
- •1.4 Компіляція проекту
- •1.5 Моделювання
- •1.6 Порядок виконання роботи
- •1.8 Контрольні запитання
- •2 Мова програмування vhdl
- •2.1 Теоретична довідка
- •2.1.1 Опис об'єктів мовою vhdl
- •2.1.2 Типи даних і операції
- •2.1.3 Оператори мови vhdl
- •2.2 Порядок виконання роботи
- •2.4 Контрольні запитання
- •3 Індивідуальні завдання
- •3.1 Семисегментний індикатор
- •3.2 Клавіатурні прапори
- •3.3 Шифратор коду Хеммінга
- •3.4 Дешифратор адреси інтерфейсу ieee 1284
- •3.5 Дешифратор адреси плати pcl-711b
- •3.6 Режими адресації мікропроцесора Intel 8086
- •3.7 Система команд мікропроцесору Intel 4004
- •3.8 Приклад виконання роботи
- •3.8.1 Створення проекту
- •3.8.2 Створення компоненту
- •3.8.3 Створення файлу верхнього рівня
- •Література
- •6 9063 М. Запоріжжя, знту, друкарня, вул. Жуковського, 64
3.6 Режими адресації мікропроцесора Intel 8086
В більшості випадків для визначення режиму адресації в команді мікропроцесора Intel 8086 використовуються три бітових поля: MOD (2 біти), R/M (3 біти) і W (1 біт). Ефективна адреса операнда для різних поєднань цих бітових полів обчислюється за допомогою різних регістрів мікропроцесора. Іноді в команді явно вказується величина зсуву. Позначимо 16-бітовий зсув D16, 8-бітовий, розширений із знаком, зсув позначимо D8. Тоді правила обчислення ефективної адреси операнда можна задати таблицею 3.7.
Таблиця 3.7 – Режими адресації мікропроцесора Intel 8086
Поле |
MOD=00 |
MOD=01 |
MOD=10 |
MOD=11; W=0 |
MOD=11; W=1 |
R/M=000 |
(BX)+(SI) |
(BX)+(SI)+D8 |
(BX)+(SI)+D16 |
AL |
AX |
R/M=001 |
(BX)+(DI) |
(BX)+(DI)+D8 |
(BX)+(DI)+D16 |
CL |
CX |
R/M=010 |
(BP)+(SI) |
(BP)+(SI)+D8 |
(BP)+(SI)+D16 |
DL |
DX |
R/M=011 |
(BP)+(DI) |
(BP)+(DI)+D8 |
(BP)+(DI)+D16 |
BL |
BX |
R/M=100 |
(SI) |
(SI)+D8 |
(SI)+D16 |
AH |
SP |
R/M=101 |
(DI) |
(DI)+D8 |
(DI)+D16 |
CH |
BP |
R/M=110 |
D16 |
(BP)+D8 |
(BP)+D16 |
DH |
SI |
R/M=111 |
(BX) |
(BX)+D8 |
(BX)+D16 |
BH |
DI |
Наприклад, якщо поля MOD=01 і R/M=011 (значення біта W в цьому випадку не має значення), то ефективна адреса виходить після підсумовування вмісту регістрів BP, DI і 8-бітового зсуву D8, вказаного в команді. Потім ефективна адреса складається з помноженим на 16 значенням, що зберігається в сегментному регістрі. В результаті цих маніпуляцій одержують фізичну адресу операнду.
Завдання 6. Розробити VHDL-модель поведінки блоку, що формує список регістрів, що беруть участь в обчисленні ефективної адреси залежно від значення бітових полів MOD, R/M і W. Всього регістрів шістнадцять: АХ, AH, AL, BX, BH, BL, CX, CH, CL, DX, DH, DL, BP, SP, SI і DI. Список регістрів має вигляд 16-розрядного позиційного кода, кожний біт якого відповідає одному з перерахованих регістрів мікропроцесора Intel 8086. Наприклад, для раніше розглянутого випадку (MOD = 01, R/M = 011, W - будь-яке значення), якщо біти позиційного коду розташовані у вказаному порядку, список задіяних регістрів буде закодований так: 0000000000001001.
3.7 Система команд мікропроцесору Intel 4004
i4004 – один з перших мікропроцесорів, випущений фірмою Intel в 1974 році. Система команд його складалася з 16 машинних, 14 акумуляторних і 15 команд вводу-виведення/зварнення до оперативної пам‘яті. В таблицях 3.8, 3.9 та 3.10 приведені коди операцій і мнемоніка машинних команд процесора Intel 4004.
Таблиця 3.8 – Машинні команди мікропроцесора Intel 4004
Код |
Мнемоніка |
Опис команди |
00h |
NOP |
Холостий цикл (немає операції). |
1Xh |
JCN |
Умовний перехід при виконанні умови. |
2Xh |
FIM |
Вибірка числа з пам'яті програм в регістрову пару. |
2Xh |
SRC |
Посилка регістрового управління. |
3Xh |
FIN |
Непряма вибірка числа з ПЗП в регістрову пару. |
3Xh |
JIN |
Непрямий перехід за адресою, яка зберігається в регістровій парі. |
4Xh |
JUN |
Безумовний перехід. |
5Xh |
JMS |
Виконати підпрограму. Попередню адресу зберегти в стек. |
6Xh |
INC |
Інкремент вмісту регістра. |
7Xh |
ISZ |
Інкремент і перепускання за нульовою умовою. |
8Xh |
ADD |
Додати вміст регістра до вмісту акумулятора. |
9Xh |
SUB |
Відняти вміст регістра з акумулятора. |
AXh |
LD |
Завантажити акумулятор з регістра. |
BXh |
XCH |
Обміняти вміст регістра і акумулятора. |
CXh |
BBL |
Повернення з підпрограми. |
DXh |
LDM |
Завантажити дані в акумулятор. |
Таблиця 3.9 – Акумуляторні команди мікропроцесора Intel 4004
Код |
Мнемоніка |
Опис команди |
F0h |
CLB |
Загальне скидання. |
F1h |
CLC |
Скинути перенесення. |
F2h |
IAC |
Інкремент вмісту акумулятора. |
F3h |
CMC |
Утворити зворотний код трігера перенесення. |
F4h |
CMA |
Утворити зворотний код вмісту акумулятора. |
F5h |
RAL |
Циклічний зсув вліво вмісту акумулятора і трігера. |
F6h |
RAR |
Циклічний зсув управо вмісту акумулятора і трігера. |
F7h |
TCC |
Передати перенесення в акумулятор. |
F8h |
DAC |
Декремент вмісту акумулятора. |
F9h |
TCS |
Віднімання з перенесенням. |
FAh |
STC |
Встановити трігер перенесення. |
FBh |
DAA |
Десяткова корекція вмісту акумулятора. |
FCh |
KBP |
Перетворення коду клавіатури в двійковий код. |
FDh |
DCL |
Визначити лінію управління пам'яттю. |
Таблиця 3.10 – Команди уведення-виведення і звернення до пам‘яті мікропроцесора Intel 4004
Код |
Мнемоніка |
Опис команди |
E0h |
WRM |
Запис вмісту акумулятора в символьне поле регістра пам‘яті. |
E1h |
WMP |
Запис вмісту акумулятора в порт виводу пам‘ять. |
E2h |
WRR |
Запис вмісту акумулятора в порт уведення-виведення. |
E3h |
WPM |
Запис вмісту акумулятора в пам‘ять програми. |
E4h |
WR0 |
Запис вмісту акумулятора в полі 0 пам‘яті. |
E5h |
WR1 |
Запис вмісту акумулятора в полі 1 пам‘яті. |
E6h |
WR2 |
Запис вмісту акумулятора в полі 2 пам‘яті. |
E7h |
WR3 |
Запис вмісту акумулятора в полі 3 пам‘яті. |
E8h |
SBM |
Відняти вміст символьного поля пам‘яті з акумулятора. |
E9h |
RDM |
Читання символьного поля пам‘яті в акумулятор. |
EAh |
RDR |
Читання вмісту порту уведення-виведення в акумулятор. |
EBh |
ADM |
Скласти вміст символьного поля пам‘яті з акумулятором. |
ECh |
RD0 |
Читання поля 0 пам‘яті в акумулятор. |
EDh |
RD1 |
Читання поля 1 пам‘яті в акумулятор. |
EEh |
RD2 |
Читання поля 2 пам‘яті в акумулятор. |
EFh |
RD3 |
Читання поля 3 пам‘яті в акумулятор. |
Завдання 7. Розробити VHDL-модель поведінки дешифратора машинних команд мікропроцесора Intel 4004. Код операції - 8 біт. На виході дешифратора повинен формуватися позиційний двійковий код вибору операції (16 біт).
Завдання 8. Розробити VHDL-модель поведінки дешифратора акумуляторних команд мікропроцесора Intel 4004. Код операції - 8 біт. На виході дешифратора повинен формуватися позиційний двійковий код вибору операції (14 біт).
Завдання 9. Розробити VHDL-модель поведінки дешифратора команд уведення-виведення і звернення до пам‘яті мікропроцесора Intel 4004. Код операції - 8 біт. На виході дешифратора повинен формуватися позиційний двійковий код вибору операції (15 біт).