- •1.1 Основні визначення
- •1.2 Принципи побудови та функціонування обчислювальних систем
- •1.2.1 Архітектура обчислювальних систем
- •1.3 Принципи побудови та функціонування мпс
- •1.4 Функціонування обчислювального пристрою
- •2.1 Подання даних в обчислювальних системах
- •2.2 Подання даних у кодах
- •2.3 Порозрядні операції над даними
- •3 Цифрові автомати
- •4 Типові пристрої обчислювальних систем (Для самостійного вивчення)
- •4.1 Суматори
- •4.2 Цифрові компаратори
- •4.3 Арифметично-логічний пристрій
- •4.4 Програмовані логічні інтегральні схеми (пліс)
- •5 Принципи побудови запам’ятовувальних пристроїв мпс з заданою організацією
- •5.1 Запам’ятовувальні пристрої мпс та їх класифікація
- •5.2 Постійні запам’ятовувальні пристрої – флеш-пам’ять
- •5.3 Оперативні запам’ятовувальні пристрої
- •5.4 Побудова блока запам’ятовувального пристрою мпс
- •6 Інтерфейс
- •6.1 Організація інтерфейсів
- •6.2 Асинхронний послідовний адаптер rs-232-c
- •7 Мікропроцесори
- •7.1 Архітектура мікропроцесорів
- •7.2.1 Історична довідка про розвиток мікропроцесорів фірми Intel (Для самостійного вивчення)
- •Програмна модель мп к580вм80а
- •7.2.2 Організація 16-розрядних мікропроцесорів
- •7.2.3 Програмна модель мп і8086
- •7.2.4 Режим переривань мп і8086
- •7.2.5 Організація 32-розрядних мікропроцесорів (Для самостійного вивчення)
- •7.3 Архітектура сучасних мікропроцесорів
- •7.3.1 Тенденції розвитку архітектури сучасних мікропроцесорів
- •7.3.2 Мікропроцесори Pentium
- •7.3.3 Процесори фірми amd
- •7.3.4 Продуктивність мікропроцесорів та її оцінювання
- •8 Використання сучасних мікропроцесорів
- •Список рекомендованої літератури до Частини і 1-го модуля
- •9 Програмування мікропроцесорів фірми intel
- •9.1 Сегментування пам’яті мікропроцесорами
- •9.2 Способи адресування операндів мп фірми Intel
- •9.3 Мова програмування Асемблер-86
- •9.3.1 Формат команди
- •9.3.2 Команди пересилань
- •9.3.3 Команди перетворення даних мови Асемблер-86
- •Команди логічних операцій
- •9.3.4 Команди умовних та безумовних переходів
- •9.3.5 Команди організації циклів
- •9.4 Створення програм на мові Асемблер-86
- •9.4.1 Лінійні програми
- •9.4.2 Розгалужені програми
- •9.4.3 Циклічні програми
- •10 Програмна реалізація вузлів телекомунікаційного обладнання мовою асемблер-86
- •10.1 Способи реалізації алгоритмів
- •10.2 Розробка апаратно-програмних комплексів
- •10.3 Приклади реалізації простих вузлів телекомунікацій
- •10.3.1 Ініціалізація послідовного асинхронного адаптера rs-232-c
- •10.3.2 Фрагмент програми передавання даних через асинхронний адаптер rs-232-c
- •10.3.3 Фрагмент програми приймання даних через асинхронний адаптер rs-232-c
- •10.3.4 Приклад програми ініціалізації rs-232-c та введення-виведення даних, написаної у програмному середовищі turbo assembler (tasm)
- •10.3.5 Програмна реалізація генератора імпульсних послідовностей
- •10.3.6 Програмне вимірювання періоду імпульсної послідовності det
- •10.3.7 Програмна реалізація мультиплексора
- •Список рекомендованої літератури до Частини іі 1-го модуля
- •11 Мікропроцесорні системи на універсальних мп фірми motorola
- •11.2 Побудова мпс на 16-розрядних мікропроцесорах фірми Motorola
- •11.2.1 Підсистема центрального процесорного елемента mc68000
- •11.2.2 Розподіл адресного простору мпс
- •11.2.3 Організація підсистеми пам’яті
- •11.2.4 Організація підсистеми введення-виведення
- •11.4 Побудова мпс на 32-розрядних мікропроцесорах фірми Motorola
- •11.4.1 Підсистема центрального процесорного елемента
- •11.4.2 Розподіл адресного простору мпс
- •11.4.3 Організація підсистеми пам’яті мпс
- •12 Програмування універсальних мп
- •Непряме регістрове адресування з постіндексуванням
- •Непряме регістрове адресування з преіндексуванням
- •Непряме відносне адресування з індексуванням
- •12.2 Система команд мп мс680х0 (Для самостійного вивчення)
- •12.2.1 Команди пересилань
- •12.2.2 Команди арифметичних операцій
- •12.2.3 Команди логічних операцій
- •12.2.4 Команди зсувів
- •12.2.5 Команди безумовних переходів
- •12.2.6 Команди умовних переходів
- •12.2.7 Команди організації програмних циклів
- •12.2.8 Команди звернення до підпрограм
- •12.3 Побудова програм з різною структурою мовою Асемблер
- •12.3.1 Лінійні програми
- •12.3.2 Розгалужені та циклічні програми. Підпрограми
- •12.4 Створення програмного забезпечення мпс на мп фірми Motorola
- •Список рекомендованої літератури до Частини і 2-го модуля
- •13.1 Типові мікроконтролери фірми Motorola
- •Сімейство 68нс16/916
- •13.2 Система команд мікроконтролерів фірми Motorola
- •13.3 Налаштовування вбудованих засобів мікроконтролерів
- •14 Risc-процесори фірми motorola
- •14.1 Risc-процесори PowerPc
- •14.2 Risc-процесори ColdFire
- •14.3 Система команд risc-мікропроцесорів сімейства PowerPc
- •15 Архітектура та принципи побудови процесорів цифрового оброблення сигналів
- •15.1 Основні напрямки цифрового оброблення сигналів (цос)
- •15.2 Узагальнена архітектура процесорів сімейства dsp563xx
- •15.3 Організація циклічного буфера в dsp
- •15.4 Програмна реалізація цифрового фільтра сіх
- •16 Мпс на мікроконтролерах, мікропроцесорах та dsp
- •Список рекомендованої літератури до Частини іі 2-го модуля
- •Предметний покажчик
12 Програмування універсальних мп
ФІРМИ MOTOROLA
12.1 Мова програмування Асемблер МП фірми Motorola
Вхідний контроль:
Який формат мають типові команди мови Асемблер-86?
Де у форматі команди пересилань мови Асемблер-86 є джерело, а де приймач?
У який спосіб у командах мови Асемблер-86 зазначається розрядність операндів?
У яких системах числення може бути подано операнди у командах мови Асемблер-86?
Які способи адресування підтримують МП фірми Intel?
Мова Асемблер МП сімейства М680Х0 є спільна для МП МС68000 як базової моделі та подальших моделей і використовує формат двоадресної типової команди.
Формат типової двоадресної команди подано на рис. 12.1.
-
15
12
11
9
8
6
5
3
2
0
COP
Rn
OPM
MODE
REG
Рисунок 12.1 – Формат типової двоадресної команди
Поле COP визначає код виконуваної операції, поле Rn вміщує номер регістра – n, в якому зберігається операнд “приймач”, OPM – розрядність і розміщення результату; поля MODE та REG – спосіб адресування і розміщення операнда “джерело”.
Якщо виконується адресування з індексуванням, код команди вміщує друге слово, формат котрого наведено на рис. 12.2.
-
15
14
12
11
10
8
7
0
D/A
Xn
W/L
000
d8
Рисунок 12.2 – Формат другого слова команди при адресуванні
з індексуванням
Поле D/A визначає тип регістра, який використовується в якості індексного. За D/A = 0 в якості індексного використовується один з регістрів даних, а за D/A = 1 – регістр адреси.
Поле Xn вміщує номер регістра, який використовується в якості індексного.
Поле W/L визначає розрядність індексу. За W/L = 0 в якості індексу використовуються 16 молодших розрядів індексного регістра з поширенням знаку до 32-х розрядів. За W/L = 1 за індекс слугує 32-розрядний вміст індексного регістра.
Поле d8 вміщує 8-розрядне зміщення, подане у доповнювальному коді.
Деякі способи адресування потребують доповнення кодів команди, які розглянуто. Приміром, за безпосереднього адресування код команди доповнюється одним чи двома словами, які вміщують безпосередній операнд Im8, Im16 або Im32. Якщо при адресуванні операнда “джерело” чи “приймач” використовується 16-розрядне зміщення або абсолютна адреса, яка має розмір “слово” (Abs.W) або “подвійне слово” (Abs.L), то код команди доповнюється відповідними словами.
У загальному вигляді типова двоадресна команда мови Асемблер МП МС68000 має вигляд
COP.х <src>,<dst>,
де СОР – мнемокод відповідної команди, замість х ставиться символ, який визначає розрядність операндів: В – байт, W – слово (16 розрядів), L – довге слово (32 розряди); якщо символ розрядності є відсутній, то за умовчанням операнд є слово. Операнди умовно позначаються як <src> – джерело, <dst> – приймач, який слугує за власне приймач результату операції. При записуванні конкретних команд замість <src> та <dst> зазначаються символічні адреси операндів мовою Асемблера відповідно до способу їхнього адресування. За безпосереднього адресування замість <src> зазначається число, перед яким ставиться префікс #.
Операнди, адреси та зміщення у командах можуть подаватись у системах числення, які зазначаються символами:
& – десяткова система,
% – двійкова система,
@ – вісімкова система,
$ – шістнадцяткова система,
символи розміщують перед даними.
За відсутності символу, який зазначає систему числення, дане сприймається як десяткове число.
Мікропроцесор МС68000 виконує читання з пам’яті 16-розрядних операндів, так само як їхній запис до пам’яті, навіть коли у команді зазначено в якості операнда байт; у циклі звернення до пам’яті обирається слово, молодший байт якого використовується як операнд. Довге слово обирається за два послідовних цикли шини, причому першими обираються старші 16 розрядів. Отже, адреси команд чи даних, що їх формує МП, мають бути парними.
Мікропроцесори МС68000 та старші моделі використовують такі способи адресування операндів:
регістрове (операнд у регістрі даних чи адреси), наприклад
МOVЕ.В D1,D0
MOVЕA.L A2,A3;
непряме регістрове (операнд у комірці пам’яті, яка є адресована вмістом регістра адреси), наприклад
MOVЕ (A0),D1
непряме регістрове з постінкрементом (операнд у комірці пам’яті, адреса якої розміщено в адресному регістрі і після виконання команди нарощується на 1, 2 чи 4 залежно від довжини зазначеного операнда), наприклад
MOVЕ D3,(A1)+ ; Вміст А1 після виконання команди
; нарощується на 2
непряме регістрове з предекрементом (операнд у комірці пам’яті, адреса якої розміщено в адресному регістрі і перед виконанням команди зменшується на 1, 2 чи 4 залежно від довжини зазначеного операнда), наприклад
MOVЕ.L -(A1),D2 ; Вміст A1 перед виконанням команди
; зменшується на 4
непряме регістрове зі зміщенням (операнд у комірці пам’яті, адреса якої є алгебраична сума вмісту регістра адреси та 16-розрядного зміщення, яке задається у команді), наприклад
MOVЕ.B -$A(A0),D3 ; Для МП МС68000
MOVЕ.В ($44,А3),D4 ; Для старших моделей
непряме регістрове з індексуванням (операнд у комірці пам’яті, адреса якої є сума вмісту регістра адреси, індексного регістра та зміщення, заданого у команді), наприклад
CLR.B $40(A0,D3.W) ; Для МП МС68000
CLR ($1234,A2,D3.L) ; Для старших моделей
пряме (операнд у комірці пам’яті, адреса якої задається числом зі знаком, безпосередньо зазначеним у команді), наприклад
JMP $1234 ; Для МП МС68000
MOVЕ.B D0,-$07FF.W ; Для старших моделей ефективна адреса
; становить $FFF801
відносне (операнд у комірці пам’яті, адреса якої є сума поточного вмісту програмного лічильника РС та заданого у команді зміщення); поточний вміст РС, який використовується для обчислення відносної адреси, дорівнює адресі першого слова виконуваної команди плюс 2, наприклад
JMP *+$10 ; Для МП МС68000
JMP (*+$10,PС) ; Для старших моделей
відносне з індексуванням (операнд у комірці пам’яті, адреса якої є сума вмісту РС, індексного регістра та зміщення, заданого у команді), наприклад
СLR $10(PC,A2.W) ; Для старших моделей
СLR ($1000,PC,A2.W) ; Для старших моделей
безпосереднє (значення операнда задано безпосередньо у команді), наприклад
MOVЕQ #$40,D3 ; Швидке завантаження
MOVЕQ #64,D3 ; безпосередньо заданого операнда у D3
МП сімейства М680Х0 підтримують усі способи адресування, що і МП МС68000, й, окрім того, додаткові типи непрямого регістрового адресування з індексуванням.