You are on page 1of 19

Subscribe to DeepL Pro to edit this document.

Visit www.DeepL.com/pro for more information.

Національний університет "Одеська політехніка"

Кафедра інформаційних технологій

Робота в середовищі графічного симулятора DSP563XX фірми


MOTOROLA. Команди пересилань.

Методичне керівництво до лабораторної роботи

Одеса 202 3р.


1 Мета роботи

Вивчення основних принципів роботи команди пересилання та її


різновидів під час виконання програм у середовищі віконного симулятора
DSP56300.

2 Стендове обладнання

Персональний комп'ютер Pentium II (жорсткий диск об'ємом


щонайменше 2Гб і ОЗП - щонайменше 127 Мб)

3 Ключові положення

Однією з основних робочих команд асемблера цифрових процесорів,


що випускаються фірмою "Моторола" є команда пересилання MOVE.
Використання цієї команди має низку відмінностей від традиційного
асемблера фірми Intell (ця відмінність серед фахівців, що займаються
програмуванням у цій сфері, отримала назву "Принцип кормового
розміщення" ^_~).
Тому ця робота є дуже важливою для розуміння принципів роботи
процесора. Від її розуміння залежить те, як буде зрозумілий весь інший
матеріал.
Команда MOVE (зверніть увагу на першу відмінність від традиційного
асемблера! вона пишеться з "Е" наприкінці, в той час, як в інтелевському
варіанті команда має трибуквений варіант) призначена для організації дев'яти
типів пересилань. Синтаксис команди:

MOVE <PM>

Де <PM> - паралельні пересилання одного з дев'яти підвидів.

Система команд базового сімейства процесора містить 62 команди. У


30-ти з них допускаються операції пересилання даних дев'яти типів.
Розрізняють дев'ять типів пересилань даних:

 Пересилання коротких констант;


 Пересилання з регістра в регістр;
 Зміна вмісту регістра адреси;
 Пересилання в X-пам'яті;
 Пересилання в Y-пам'яті;
 Пересилання в X-пам'яті та з регістра в регістр;
 Пересилання з регістра в регістр і в Y-пам'яті;
 Пересилання в L-пам'яті;
 Пересилання в XY-пам'яті;

2
У тому разі, якщо в команді використовуються паралельні
пересилання, то необхідно дотримуватися таких простих і логічних правил:

1. Дублювання джерел у полі операндів і полі паралельних пересилань


однієї й тієї самої команди дозволяється.

2. Дублювання приймачів у полі операндів і полі паралельних


пересилань однієї й тієї самої команди забороняється.

3) Якщо в одній і тій самій команді джерелом у полі пересилання є


операнд-приймач, то в джерело передається вміст операнда-приймача, не
модифікований основною операцією команди (далі - ООК).

4. Якщо в одній і тій самій команді приймачем є операнд-джерело, то


пересилання здійснюється після виконання ООК.

5. Якщо акумулятор у полі пересилання є джерелом, то при


пересиланні його в 24- або 48- розрядний приймач зчитується вміст А1(В1)
або А1:А0(В1:В0), відповідно; при цьому, якщо вміст акумулятора-джерела
до моменту пересилання є переповненим, то до операції пересилання у
внутрішньому акумуляторі MAC автоматично здійснюється операція
зсуву/обмеження вмісту акумулятора до максимального додатного
(амплітуда насичення для додатного числа), або мінімального від'ємного
(амплітуда насичення для від'ємного числа) значення, що потім
пересилається в приймач; вміст акумулятора-джерела не змінюється.

6. Якщо акумулятор у полі пересилання є джерелом, то під час


пересилання його вмісту в 16-ти розрядний приймач зчитується вміст
молодших 16-ти розрядів А1(В1).

7. Під час пересилання з 24-розрядного джерела в 16-розрядний


приймач, зчитується вміст молодших 16-ти розрядів джерела.

8. Якщо акумулятор у полі пересилання є приймачем, то під час


пересилання в нього вмісту 24- або 48-розрядного джерела здійснюється
запис в А1(В1) або А1:А0 (В1:В0), відповідно; при цьому в старших розрядах
акумулятора-приймача А2(В2) відбувається розширення знака, а в молодших
А0(В0) за умови 24-розрядного джерела - обнулення ;

9. Якщо акумулятор у полі пересилання є приймачем, то під час


пересилання в нього вмісту 16-розрядного джерела здійснюється запис у 16
молодших розрядів А1(В1), старші 8 розрядів А1(В1) обнуляються; у
старших розрядах А2(В2) відбувається розширення знака, а в молодших
А0(В0) - обнулення.
3
10. Під час пересилання з 16-розрядного джерела у 24-розрядний
приймач відбувається запис у молодші 16 розрядів приймача, старші 8
розрядів обнуляються.

11 Якщо під час виконання команди відбувається зміна вмісту регістрів


Rn, Nn, Mn, то внаслідок конвеєрної обробки новий вміст не може
використовуватися в наступній команді;

Наприклад послідовність:

MOVE X:(R0),R4
MOVE R4,Y:(R5)

неприпустима, оскільки викличе конфлікт на 3-машинному циклі


конвеєрного оброблення команд.

Правильна послідовність команд у цьому випадку повинна мати


вигляд:

MOVE X:(R0),R4
NOP
MOVE R4,Y:(R5)

Нижче коротко перелічено основні типи пересилань.

3.1 Пересилання короткої константи

При пересиланні коротких констант у команді використовується одне


поле паралельного пересилання, де припустимий тільки режим
безпосередньої адресації
Приклад:

ПЕРЕМІСТИТИ B,A #$81,B0

Джерело #$81 інтерпретується, як ціла беззнакова константа.

3.3 Зміна вмісту регістра адреси

Під час цього пересилання відбувається зміна вмісту одного з


адресних регістрів Rn. Друге поле не задіяне.
Приклад:

4
ПЕРЕМІСТИТИ B,A (R1) + N1

3.4 Пересилання в X-пам'яті

Під час пересилання в X-пам'яті використовується одне поле


паралельного пересилання. Друге поле вільне для інших видів пересилань.
Допустимі різні види модифікації адреси (пост- і передінкрементація,
наприклад).
Приклад:

ПЕРЕМІСТИТИ B,A X:-(R6),B

3.5 Пересилання в Y-пам'яті

В основному аналогічна пункту 3.4, але змінюється індекс пам'яті.


Приклад:

ПЕРЕМІСТИТИ B,A Y:-(R6),B

3.6 Пересилання в X-пам'яті та з регістра в регістр

У цьому типі пересилань задіяні обидва поля паралельних


пересилань.

Приклад:

ПЕРЕМІСТИТИ B,A X:-(R6),B A,Y1

3.7 Пересилання з регістра в регістр і в Y-пам'яті

Аналогічні пункту 3.6

Приклад:

ПЕРЕМІСТИТИ B,A Y:-(R6),B A,Y1

3.8 Пересилання в L-пам'яті

Довга L-пам'ять утворюється об'єднанням двох 24-розрядних


осередків X- і Y-пам'яті з однаковими адресами, водночас старше слово
зберігається в осередку X-пам'яті, а молодше - в осередку Y-пам'яті.
5
Приклад:

ПЕРЕМІСТИТИ B,A B10,L:$1000

3.9 Пересилання в XY-пам'яті

Мається на увазі одночасне пересилання в обох ділянках пам'яті, яке


є комбінацією пересилань 3.4 і 3.5 Адресація комірок може бути тільки
непрямою. При цьому для адресації X-пам'яті використовуються регістри
адреси R0-R3, а для Y-пам'яті - регістри R4-R7
Приклад:

ПЕРЕМІСТИТИ B,A X:-(R2),B Y:-(R6),B

6
3.10 Навчальна програма.

Нижче наводиться текст і лістинг навчальної програми, що


використовує різні способи пересилань.

7
Лістинг навчальної програми

Motorola DSP56300 Assembler Version 6.0.1.6 103-06-2215:21:02


15:21:02
prog4.asm Сторінка 1

1 ; Програма емуляції введення-виведення


2
3 000FA0 ADDR_A EQU 4000
4 000BB8 ADDR_B EQU 3000
5 0007D0 ADDR_C EQU 2000
6
7 X:000FA0 ORG x:ADDR_A
8 X:000FA0 DC 4,5,6,7,8
9
10 Y:000BB8 ORG y:ADDR_B
11 Y:000BB8 DC 1,1,1,14,07,01978
12
13
14 P:000100 ORG p:$100
15
16 P:000100 60F400 MOVE #ADDR_A,R0
000FA0
17 P:000102 65F400 MOVE #ADDR_B,R5
000BB8
18 P:000104 61F400 MOVE #ADDR_C,R1
0007D0
19
20 ; Пересилання короткої константи
21
22 P:000106 258100 хід #$81,x1
23
24 ;Пересилання з регістра в регістр;
25
26 P:000107 20A400 move x1,x0
27
28 ;Пересилання в X-пам'яті
29
30 P:000108 445800 move x0,x:(r0)+
31
32 ;Пересилання в Y-пам'яті
33
34 P:000109 4EDD00 move y:(r5)+,y0
8
35 ; Пересилання в XY-пам'яті
36
37 P:00010A C5A000 MOVE X:(R0),X1 Y:(R5),Y1

0 Помилки
0 Попередження

Ця програма демонструє роботу основних пересилань мови асемблера


сімейства цифрових сигнальних процесорів фірми "Motorla" DSP 56300.
Зверніть особливу увагу на те, як позначається константа у виразах
пересилання. Далі особливу увагу слід звернути на постінкрементацію в 30-
му і 34-му рядках лістингу.

3.3 Підготовка вихідних файлів

1. У меню "Пуск" виберіть пункт "Виконати". На панелі, що з'явилася,


клацніть по кнопці "Обзор". Далі у вікні, що відкрилося, увійдіть у
директорію C:\Vc і виділіть у ній файл Vc.com.

2. Натисніть кнопку "Відкрити". Повернувшись таким чином на


вихідну панель меню "Виконати", клацніть мишею по кнопці "ОК".

3 Відкриється вікно графічної оболонки Volkov commander. Далі


робота може виконуватися, як у повноекранному режимі, так і у віконному
режимі.

4. За допомогою комбінації клавіш "Alt" + "F1" слід перейти на


робочий диск "Е:", в якому знайти папку "MOTOROLA" і увійти в
неї.

5. У правій панелі графічної оболонки натисніть "Shift" + "F4". У вікні,


що відкрилося, введіть ім'я програми (prog4.asm) і натисніть "Enter".
5. На запитання про те, який файл задати - виберіть пункт меню "New
file" і натисніть "Enter".
У вікні вбудованого редактора, що з'явилося, введіть текст навчальної
програми (Рис. 3.1)

9
Рисунок 3.1 - Введення навчальної програми

6. Закінчивши введення програми, натисніть кнопку "F2" для


збереження її у файл prog4.asm далі - натисніть "Esc" для виходу з вікна
редактора.
Якщо все було виконано правильно - серед файлів у директорії
з'явиться файл з ім'ям Вашої програми та розширенням .asm
Введення тексту вихідної програми закінчено.

3.4 Створення виконуваного абсолютного модуля файлу, що


виконується

1. У командному рядку введіть таку директиву:

E:\MOTOROLA>asm.bat prog4.asm

і натисніть "Enter"

2. Після виконання трансляції на екрані з'являться результати


трансляції файлу програми. Для докладної інформації про результати
трансляції необхідно звернутися до файлу лістингу.

10
3. Після виконання трансляції необхідно переглянути файл лістингу.
Для цього необхідно знайти у списку файлів файл prog4.lst і натиснути
клавішу "F3" виклику вбудованого переглядача графічної оболонки.
На екрані з'явиться файл лістингу з результатами трансляції файлу.
Якщо програму було набрано правильно, то в тексті програми не буде
жодних повідомлень про помилки, а наприкінці лістингу буде поміщено
повідомлення

0 Помилки
0 Попередження

У разі успішного виконання компіляції в директорії з'явиться файл


абсолютного вихідного модуля prog4.cld У разі виникнення помилок
зверніться до пункту 4.3 попередньої лабораторної роботи.
Для завершення роботи з графічною оболонкою натисніть клавішу
виходу з графічної оболонки "F10" і закрийте вікно графічної оболонки
Volkov commander.

11
4. Робота в середовищі симулятора.

4.1 Запуск симулятора та дії із завантаження програми

1 Відкрийте основне вікно симулятора, для чого, увійшовши в


директорію
E:\MOTOROLA\gui563\BIN клацніть двічі по файлу з ім'ям Gui56300.exe
(Рис. .1).

Рисунок 4.1 - Основне вікно симулятора

2. У вікні емулятора, що відкрилося, будуть розташовані два внутрішні


вікна Command і Session. Їх слід поки що закрити (аналогічно тому, як
закриваються вікна у звичайній системі Windows) - клацанням миші по
кнопках закриття цих вікон.

3. Встановіть робочу директорію симулятора. Для цього увійдіть у


пункт меню FILE і послідовно виберіть такі підпункти меню

Файл, шлях, набір...

12
У вікні, що відкрилося, виберіть робочий каталог (Motorola) і клацніть
мишею по кнопці Select (Мал. 4.2) На запитання про існування файлу слід
відповісти натиснувши кнопку "Append".
Робочу директорію симулятора вибрано.

Рисунок 4.2 - Встановлення робочої директорії симулятора

4. Завантажте в пам'ять симулятора скомпонований файл робочої


програми.

Для цього слід послідовно вибрати такі пункти меню:


File,Load, Memory COFF У вікні завантаження файлу, що з'явилося,
клацніть мишею по кнопці File.
Далі у вікні вибору файлу знайдіть файл program4.cld, клацніть по
ньому мишею і натисніть кнопку "Відкрити". Далі у вікні завантаження
файлу натисніть ОК.

13
Рисунок 4.4 - Завантаження в пам'ять симулятора скомпонованого файлу
робочої програми.

Скомпонований файл робочої програми завантажено в пам'ять


симулятора.

5. Відкриємо вікно асемблера програми

Вікна, збірка

14
Рисунок 4.5 - Вікно асемблера з текстом робочої програми

Перепишіть текст програми в протокол. Зверніть увагу на те,


яким чином виглядають команди в середовищі симулятора. файлу (Рис. 4.8)
Далі слід натиснути "ОК". Файл введення підключено.

6. Відкрийте два вікна, що демонструють x- і y- області пам'яті


процесора. Для цього виберіть такі пункти меню:

Windows,пам'ять

У ньому виберіть підпункт x mem space натисніть ОК.


Відкриється вікно дампа пам'яті Х.

7. Повторіть послідовність дій, але цього разу виберіть


область y mem space. Відкриється вікно дампа області пам'яті Y, аналогічне
пам'яті X.

8. Далі відкрийте командне вікно внутрішніх регістрів процесора:

Windows,Register

15
далі в меню вибрати Core і натиснути ОК.
Відкриється вікно внутрішніх регістрів процесора (Рис. 4.6)

Рисунок 4.6 - Вікно дампа регістрів процесора

4. особливу увагу зверніть на розташування таких регістрів

x1, x0, y1, y0, r0, r5

Ці регістри будуть використовуватися під час роботи програми, тому


важливо чітко усвідомити, де вони розташовані.
Далі, послідовно виберіть пункти меню Windows, Tile, щоб
розташувати вікна за порядком (Рис. 4.7)

16
Рисунок 4.7 - Загальний вигляд симулятора з усіма необхідними вікнами

Симулятор готовий до виконання завдання.

5. Складіть таблицю виконання програми


(згідно зі зразком Табл. 4.1)

Таблиця 4.1
Значення регістрів процесора
Адресні
Мнемоніка Регістри даних
регістри
асемблера
R0 R5 X0 X1 Y0 Y1

перемістити
#>$fa0,r0

6. Покроково виконайте кілька програм (клацаючи мишею по кнопці


Step, доти, доки курсор не досягне кінця програми), заповнюючи таблицю
даними для кожного кроку програми.

17
Слід особливу увагу звернути на зміни в регістрах після останніх трьох
команд програми. Наприклад, як вплине на регістр R0 виконання команди з
адресою 108?
Критерій правильності виконання програми - стан регістрів, зазначений
на рисунку 4.8

Рисунок 4.9 - Дамп регістрів процесора після завершення програми

4 Домашнє завдання

1 Вивчити ключові положення за методичним посібником і


рекомендованою літературою.
2. Підготувати протокол для виконання роботи.
3 Переписати в протокол лабораторної роботи текст навчальної
програми.
4 Намалювати в протоколі таблицю виконання програми (таблиця 4.1
цього посібника). Таблиця має складатися з 8-9 колонок.

5 Підготовка до роботи із симулятором

1 Увімкнути комп'ютер
2 Викликати програму Провідник

18
3 Увійти в директорію E:\Students\MOTOROLA\

6 Лабораторне завдання

По черзі виконати всі пункти ключового положення, відзначаючи


характерні моменти роботи симулятора.
Письмово відповісти на запитання для самоконтролю.

7 Зміст звіту

1 Текст навчальної програми.


2 Таблиця виконання програми.
3. Значення файлу виведення.

8 Запитання для самоконтролю

1 Чому змінюються адресні регістри під час виконання програми?


2 Що означає термін "постінкрементування"?
3 Що означає число 7d0 у регістрі R1 після завершення програми?
Звідки воно взялося, якщо на самому початку програми туди було записано
константу 4000?
4 Що показує регістр pc? Чому він змінюється під час роботи
програми?
5 Назвіть дев'ять типів пересилань даних асемблера цифрових
процесорів, що випускаються фірмою "Motorola".

9 Рекомендована література

1. М.С. Купріянов, Б.Д. Матюшкін, "Цифрова обробка сигналів:


процесори, алгоритми, засоби проектування", вид. 2-е перероблене,
Політехніка, СПб 2000р.
2. А. Солоніна, Д. Улахович, Л. Яковлєв, "Цифрові процесори обробки
сигналів фірми Motorola", СПб, БХВ-Петербург, 2000.
3. Сайт фірми Motorola http://www.mot.com

19

You might also like