Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методпособие к ЛР 9 по Motorola.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
164.86 Кб
Скачать

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.