- •2 Модуль
- •3 Модуль
- •4 Модуль
- •1 Вузли обчислювальної техніки та мікропроцесорних систем.
- •2 Програмування мікропроцесорів фірми Intel.
- •1 Модуль
- •1 Обчислювальні та мікропроцесорні системи
- •1.1 Основні визначення
- •1.2 Принципи побудови та функціонування обчислювальних систем
- •1.2.1 Архітектура обчислювальних систем
- •1.2.2 Класифікація комп’ютерів
- •1.3 Принципи побудови та функціонування мпс
- •1.4 Функціонування обчислювального пристрою
- •2 Операції над даними в обчислювальних системах
- •2.1 Подання даних в обчислювальних системах
- •2.2 Подання даних у кодах
- •2.3 Порозрядні операції над даними
- •3 Цифрові автомати
- •3.1 Визначення цифрових автоматів
- •3.2 Синтез логічних схем
- •3.3 Розробка ца
- •4 Типові пристрої обчислювальних систем (Для самостійного вивчення)
- •4.1 Суматори
- •4.2 Цифрові компаратори
- •4.3 Арифметико-логічний пристрій
- •4.4 Програмовні логічні інтегральні схеми (пліс)
- •5 Принципи побудування запам’ятовувальних пристроїв мпс з заданою організацією
- •5.1 Запам’ятовувальні пристрої мпс та їх класифікація
- •5.2 Постійні запам’ятовувальні пристрої
- •5.3 Оперативні запам’ятовувальні пристрої
- •5.4 Умовне позначення мікросхем пам’яті
- •5.5 Побудування модуля запам’ятовувального пристрою мпс з заданою організацією
- •6 Інтерфейс
- •6.1 Організація інтерфейсів
- •6.2 Організація послідовних інтерфейсів введення-виведення
- •7 Мікропроцесори
- •7.1 Архітектура мікропроцесорів
- •7.2.1 Організація 8-розрядних мікропроцесорів (Для самостійного вивчення)
- •Інтерпретація даних у мп к580вм80а
- •Програмна модель мп к580вм80а
- •Формат команд мп к580вм80а
- •Способи адресації операндів мп к580вм80а
- •Мікропроцесорна система кр580
- •Стекова пам’ять
- •Функціонування мпс
- •Виконання команди пересилання з регістра с у регістр в
- •Робота мпс при виконанні команди in n введення даних з порту n в акумулятор мп а
- •Реакція мпс на виконання команди зупину
- •Робота мпс у режимі переривань
- •7.2.2 Організація 16-розрядних мікропроцесорів
- •7.2.3 Організація 32-розрядних мікропроцесорів (Для поглибленого вивчення)
- •Співпроцесори мп і80386
- •7.3 Продуктивність мікропроцесорів та її оцінювання
- •7.3.1 Технічна продуктивність мікропроцесора
- •7.3.2 Реальна продуктивність мікропроцесора
- •7.3.3 Архітектура сучасних мікропроцесорів
- •8 Використання мп фірми intel у
- •Процесори Athlon та Duron фірми amd
- •Список рекомендованої літератури до 1 модулю
- •2 Модуль
- •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 Програмна реалізація мультиплексора
- •Список рекомендованої літератури до 2 модулю
- •3 Модуль
- •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 Організація підсистеми пам’яті мпс
- •11.4.4 Організація підсистеми введення/виведення
- •11.4.5 Підключення співпроцесора
- •12 Програмування універсальних мп
- •12.1 Мова Асемблер програмування мп фірми Motorola
- •Непряма регістрова адресація з постіндексуванням
- •Непряма регістрова адресація з преіндексуванням
- •Непряма відносна адресація з індексуванням
- •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 Побудова програм з різною структурою на мові Асемблер мп фірми Motorola
- •12.3.1 Лінійні програми
- •12.3.2 Розгалужені та циклічні програми. Підпрограми
- •12.4 Створення програмного забезпечення мпс на мп фірми Motorola
- •Список рекомендованої літератури до 3 модулю
12.3 Побудова програм з різною структурою на мові Асемблер мп фірми Motorola
12.3.1 Лінійні програми
Вхідний контроль:
Як будуть розміщатись у пам’яті байти команди мови Асемблер-86 MOV AX, 7000H, якщо команда розташована, починаючи з адреси 7000:0100?
Команда з якою адресою буде виконуватись наступною у лінійній програмі?
Яка адреса вміщується у вказівнику команд ІР МП фірми Intel на лінійних ділянках програми?
У якості приклада побудови лінійної програми розглянемо ділення 64-розрядного числа $ABCDEF1234567893 зі знаком на 32-розрядне число $20000002.
MOVЕ.L #$34567894, D1
MOVЕ.L $275CB756, D2
MOVЕ.L $EE C9B416, D3
DIVS.L D1, D3: D2
NOP
Результатом виконання фрагмента буде частка від ділення (розряди 0...31), яка дорівнює $ABCDEF14, вона буде розміщена у D2, і стача $EB851FC6 (розряди 0...31), яка буде розміщена у регістрі D3.
Зробимо перевірку вірності отриманого результату за допомогою фрагмента програми
EOR.L D4, D4
MULS.L D1, D4: D2
ADD.L D3, D2
Результатом виконання фрагмента буде наявність у регістровій парі D4:D2 числа #$EEC9В46275CB756, вміст регістра D1 не зміниться.
Контрольні запитання:
Яку частку програм, на Ваш погляд, займають лінійні ділянки?
Як будуть розміщатись у пам’яті байти команди мови асемблер МП М680Х0 MOVE #$1234? D0, якщо команда розташована, починаючи з адреси $400600?
Команда з якою адресою буде виконуватись наступною у лінійній програмі?
Яка адреса вміщується у лічильнику команд РС МП фірми Motorola на лінійних ділянках програми?
12.3.2 Розгалужені та циклічні програми. Підпрограми
Вхідний контроль:
Наведіть приклад застосування арифметичного циклу.
Наведіть приклад застосування ітераційного циклу.
За яким принципом реалізуються підпрограми часової затримки?
Приклад 12.3.1 Написати фрагмент програми, який би здійснював часову затримку на термін, який визначається найбільшим числом, яке можна трактувати як байт.
400600 MOVЕ.В #$FF, D6 ; Затримка здійснюється за рахунок
400602 SUB #1, D6 ; повторення у циклі команди віднімання 1 з
400604 BNE * -2 ; лічильника D6; цикли повторюються, доки
400608 NOP ; його вміст не дорівнює нулю
Фрагмент програми, який реалізує затримку, може бути оформлений у вигляді підпрограми.
Приклад 12.3.2 Написати фрагмент програми, який виводить слово $1234 у додатковий регістр РААR РІ/Т, а через час, який визначається вмістом D2 у підпрограмі ТІМЕ, слово $5678 у той самий регістр РААR РІ/Т.
МOVЕ,B #$1234, D0 ; Завантаження даного $1234 у регістр D0
MOVЕ,L #$800015, A0 ; Завантаження адреси регістра
; PAAR PI/T у А0
MOVЕP.B D0, (A0) ; Запис даного $1234 у регістр PAAR
JSR ТІМЕ ; Звернення до підпрограми TIME
MOVЕ.B #$5678, D1 ; Завантаження даного $5678 у регістрі D1
MOVЕP.B D0, (A0) ; Запис даного у регістр PAAR РІ/Т
ТІМЕ: MOVЕ #$AB, D2 ; Підпрограма
М2 : SUB #1, D2 ; ТIME
BNE M2 ;
RTS ;
Приклад 12.3.3 Написати підпрограму визначення парності або непарності кількості одиниць у байті, який міститься в регістрі.
Задача розв’язується шляхом логічного зсуву байта у циклі, наприклад, праворуч, та підрахування кількості разів, коли встановлювався прапорець перенесення С. Структурну схему алгоритму підрахування кількості одиниць зображено на рис. 12.8.
Програма розв’язання задачі на асемблері МП МС68020:
EVEN: MOVE SR, D5 ; Завантаження регістра стану у D5
CLR.L D2 ; Обнулення D2, лічильника суми
MOVE.L #$7, D3 ; Організація лічильника циклів у D3
MOVE.L #$09, D0 ; Завантаження байта $9 у регістр D0
M1: LSR.B #$1, D0 ; Зсув праворуч регістра D0 на один розряд
BCS.B M2 ; Перехід до лічильника суми
BRA.B M3 ; Обхід підсумовування
M2: ADDI #$1, D2 ; Додавання 1, якщо С = 1
M3: DBF D3, M1 ; Організація повторення циклів
BTST #$0, D2 ; Перевірка парності кількості
; одиниць суми у D2
BNE.B M4 ; Число непарне?
CLR.L D2 ; Ні, обнулення D2
BRA.B M5 ; Обхід запису числа FDH у D2
M4: MOVE.L #$FD, D2 ; Так, запис до D2 числа $FD
M5: MOVE D5, SR ; Відновлення регістра стану з D5
RTS ; Повернення з підпрограми
Якщо кількість одиниць є непарна, то у регістр D2 записується довільна позначка $FD, а якщо ж парна, то регістр D2 обнулюється.
Приклад 12.3.4 Порівняти значення байтів у масивах (А0) і (А1), які складаються з чисел зі знаками у межах шести пар. За умовою DBGT організувати вихід з циклу, показати, скільки циклів буде виконано.
(A0) (A1)
400600 MOVЕA.L #$ 400700, A0 5F 40
400606 MOVЕA.L #$400800, A1 3F F4 (-12)
40060C MOVЕ #$5, D0 (-1)FF F0 (-16)
400610 CMPM.B (A0)+, (A1)+ 2F F0 (-16)
400612 DBGT D0, $400610 (-32)E0 A3 (-93)
400616 NOP (-16)F0 AF (-81)
Рисунок 12.8 — Структурна схема алгоритму підрахування кількості одиниць
Оскільки елементи масивів трактуються як числа зі знаками, то від’ємні числа подані у доповняльному коді, (поруч ці ж числа подані зі знаком у десятковий системі числення). Враховуючи особливості виконання команди СМРМ (А0)+, (А1)+ (від елемента, який адресується А1 віднімається елемент, адресований А0), можна свідчити, що вихід з циклу відбудеться за наявністю у лічильнику циклів числа -1, за вказаною умовою DBGT цикл не завершується у межах порівняння шести пар елементів. Кількість циклів складає 6.
Контрольні запитання:
Визначити час затримки, який реалізується фрагментом програми у прикладі 12.3.1.
Визначити час затримки, який реалізує підпрограма TIME у прикладі 12.3.2.
Написати підпрограму часової затримки на 2 мкс для реалізації на МП МС68000 і на МП МС68020.