 
        
        - •1 Мета роботи
- •2 Основні положення
- •2.1 Безумовні переходи
- •2.2 Умовні переходи
- •Moveq #10, d0 ; завантаження номера першого ; перетворюваного біта до d0
- •2.3 Організація програмних циклів
- •2.4 Звернення до підпрограм
- •Bra.S m5; обхід запису числа fdh у d2
- •M5: move d5,sr; відновлення регістру стану з d5
- •3 Контрольні питання
- •4 Домашнє завдання
- •Непарні варіанти
- •Парні варіанти
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список літератури
Bra.S m5; обхід запису числа fdh у d2
M4: MOVE.L #$FD,D2; так, запис до D2 числа $FD
M5: move d5,sr; відновлення регістру стану з d5
RTS; повернення з підпрограми
 
Рисунок 2.1 – Структурна схема алгоритму підрахування кількості одиниць
Якщо кількість одиниць є непарна, то у регістр D2 записується довільна позначка $FD, а якщо ж парна, то регістр D2 обнулюється.
Приклад 2.2 Скласти програмні моделі скремблера та дескремблера, які б дозволяли за допомогою генератора випадкових чисел кодувати 255 відліків цифрового сигналу, а потім їх декодувати. Надходження цифрових сигналів з лінії зв‘язку у паралельному коді імітується зчитуванням однобайтових елементів масиву з пам‘яті, починаючи з адреси $600500. Кодовані скремблером значення відліків записуються у пам‘ять, починаючи з адреси $600600, потім декодуються у моделі дескремблера і первісні значення відліків для порівняння запам‘ятовуються, починаючи з адреси $600700. Для генерації псевдовипадкової послідовності (ПВП), як правило, використовуються кільцеві зсувові регістри з суматорами за модулем 2 у введених колах зворотного зв’язку. Не будь-яка конфігурація структури зворотного зв‘язку забезпечує максимальний період псевдопослідовності, що дорівнює 2N–1, де N – кількість розрядів регістру. На рис. 2.2 показано одну з максимальних структур з трьома колами зворотного зв’язку, які зв’язують 0, 2, 4, та 7-й розряди 8-розрядного зсувового регістру. Ця структура забезпечує максимальний період генерації числової псевдопослідовності, що дорівнює 255.
 
Рисунок 2.2 – Генератор псевдовипадкової послідовності
Задана структура зворотного зв‘язку зсувового регістру здійснюється за допомогою маски $95. Для реалізації трьох послідовних операцій складання за модулем 2 прийнятої структури зручно використовувати ознаки парності або непарності кількості одиниць у байті на кожному кроці зсуву, який зреалізовується програмно за допомогою команди ROXL.B – циклічного зсуву ліворуч з розширенням.
Скремблювання та дескремблювання відліків сигналів здійснюється шляхом операції додавання їх за модулем 2 до чергового псевдовипадкового числа.
Структурну схему алгоритму зображено на рис. 2.3.
Програма розв’язання задачі:
MOVEA.L #$400700,A0; завантаження адреси масиву сигналів у
; А0
MOVEA.L #$400800,A1; завантаження адреси масиву кодованих
; сигналів у А1
MOVE.L #$FE,D3 ; завантаження лічильника циклів ПВП
 
Рисунок 2.3 – Структурна схема алгоритму скремблера–дескремблера
MOVE.L #$1,D4; завантаження лічильника циклів
; скремблювання–дескремблювання
M4: MOVE.L #$9,D0; завантаження першого числа ПВП
M1: MOVE.L D0,D1; запам‘ятовування чергового числа ПВП
; у D1
MOVE.B (A0)+,D2; скремблювання чергового елемента
EOR.B D0,D2; масиву вхідних сигналів
MOVE.B D2,(A1)+; та запам’ятовування його за адресою
; (А1)+
ANDI.B #$95,D0; організація зворотних зв’язків
BSR EVEN; звернення до ПП визначення парності–
; непарності кількості одиниць у байті
MOVE SR,D5; Ні, пересилання SR у D5
BTST #$0,D2; кількість одиниць
BEQ.S M2; парна?
ANDI.B #$FD,D5; встановлення Х у “0”
BRA.S M3; обхід встановлення Х у “1”
M2: ORI.B #$10,D5; Так, встановлення Х у “1”
M3: MOVE D5,SR; відновлення регістру стану
MOVE.L D1,D0; відновлення чергового числа ПВП
ROXL.B #1,D0; циклічний зсув D0 ліворуч через Х
DBF D3,M1; повернення до початку внутрішнього
; циклу
MOVEA.L #$400800,A0; переадресування вхідного
MOVEA.L #$400900,A1; та дескрембльованого масивів сигналів
MOVE.L #$FE,D3; перевантаження лічильника циклів
DBF D4,M4; повернення до початку зовнішнього
; циклу
NOP; закінчення програми
Слід відзначити, що при зверненні до ПП визначення кількості одиниць у байті значення байта, що вміщується у D0, треба передавати з основної програми, а команду MOVE.L #$9,D0 вилучити з ПП.
Результатом виконання програми є три масиви: перший, що складається з відліків вхідного сигналу, починаючи з адреси $400700; другий починається з адреси $400800 і складається з кодованих сигналів, а третій, розташований за адресою $400900, складається з розкодованих відліків вхідного сигналу. Кожний з масивів складається з 255 елементів.
Приклад 2.3 Порівняти значення байтів у масивах (А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.
