
- •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.3 Побудова програм з різною структурою мовою Асемблер
МП фірми Motorola
12.3.1 Лінійні програми
Вхідний контроль:
В який спосіб будуть розміщуватись у пам’яті байти команди мовою Асемблер-86 MOV AX,7000H, якщо команду розташовано розпочинаючи з адреси 7000:0100?
Команда з якою адресою виконуватиметься наступною у лінійній програмі?
Яка адреса вміщується у вказівнику команд ІР МП фірми Intel на лінійних ділянках програми?
За приклад побудови лінійної програми розглянемо ділення 16-розрядного числа $5679 зі знаком на 16-розрядне число $0004.
MOVЕ.L #$00005679,D2
MOVЕ.L #$00000004,D1
DIVS D1,D2
NOP
Результатом виконання фрагмента буде частка від ділення (розряди 0...15), яка дорівнює $159E, вона буде розміщена у D2 (розряди 0...15), і стача $0001 (розряди 16...31), яку буде розміщено також у регістрі D2.
Зробимо перевірку правильності здобутого результату за допомогою фрагмента програми
EOR.L D3,D3
MOVE.L D2,D3
MULS D1,D2
SWAP D3
ADD D3,D2
Результатом виконання фрагмента буде наявність у регістрі D2 числа $5679, вміст регістра D1 не зміниться.
Контрольні питання:
Яку частку програм, на Ваш погляд, займають лінійні ділянки?
В який спосіб будуть розміщуватись у пам’яті байти команди мовою Асемблер МП М680Х0 MOVE #$1234,D0, якщо команда розташована розпочинаючи з адреси $400600?
Команда з якою адресою буде виконуватись наступною у лінійній програмі?
Яка адреса вміщується у лічильнику команд РС МП фірми Motorola на лінійних ділянках програми?
Контрольні питання підвищеної складності:
Віднайти добуток даних $1234 та $2 усіма відомими Вам способами: написати фрагменти програми, які їх зреалізовують.
Віднайти частку від ділення здобутого у попередньому завданні результату на $2 усіма відомими Вам способами: написати фрагменти програми, які їх зреалізовують.
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.10.
Програма розв’язання задачі на Асемблері МП МС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.10 – Структурна схема алгоритму підраховування
кількості одиниць у байті
Приклад 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)
Оскільки елементи масивів трактуються як числа зі знаками, то від’ємні числа подано у доповняльному коді (поряд ці самі числа подано зі знаком у десятковій системі числення). Враховуючи особливості виконання команди СМРМ (А0)+, (А1)+ (від елемента, який адресується А1, віднімається елемент, адресований А0), можна свідчити, що вихід з циклу відбудеться за наявності в лічильнику циклів числа -1, за окресленою умовою DBGT цикл не завершується в межах порівняння шести пар елементів. Кількість циклів становить 6.
Контрольні питання:
Напишіть підпрограму визначення парності або непарності кількості одиниць у байті, який міститься у регістрі (приклад 12.3.3) при зсуві вміста цього регістра ліворуч; дайте пояснення здобутим результатам.
Поясніть, які команди у підпрограмі ТІМЕ визначають постійну складову затримки, а які – варіаційну.
Контрольні питання підвищеної складності:
Визначити час затримки, який зреалізовується фрагментом програми у прикладі 12.3.1.
Визначити час затримки, який зреалізовує підпрограма TIME у прикладі 12.3.2.
Написати підпрограму часової затримки на 2 мкс задля реалізації на МП МС68000 і на МП МС68020.