
- •Вказівки до виконання лабораторних робіт 3 і 4
- •1 Лист 6 . Обчислювальна система з буферною пам'яттю даних.
- •1.1. Опис системи.
- •1.2. Робота обчислювальної системи з буферною пам'яттю даних.
- •1.3. Алгоритми обслуговування буферної пам'яті даних.
- •2 Лист 6 . Обчислювальна система з асоціативною пам'яттю.
- •2.1. Опис системи.
- •2.2. Робота обчислювальної системи з асоціативною пам'яттю.
- •3. Формати слів даних
- •4. Опис команди і набір команд.
- •1. Арифметичні команди, призначені безпосередньо для обчислення.
- •2. Команди управління, призначені для організації циклів і галужень.
- •5. Графічне представлення команд
- •6. Асемблер обчислювальної системи
- •6.1 Команди і їх опис
- •6.2 Формальний опис мови програмування:
- •6.3 Приклад програми на асемблері циклів і умовних переходів з прикладу
- •7. Приклад програмування послідовно-паралельних алгоритмів
- •Приклад
- •8. Приклад програмування циклів і умовних переходів
- •Приклад
- •9. Лабораторний практикум
- •9 Лист 6 .1 Завдання на лабораторну роботу №3.
- •9 Лист 6 .2 Завдання на лабораторну роботу №4.
- •Кількість ітерацій
- •Пристрій виводу
6.2 Формальний опис мови програмування:
<Програма>::=
Program < ім'я_програми >
[Constant
< список змінних і їх значень >]
begin
<список команд>
end
< список змінних і їх значень >::=
< ім'я змінної >=< значення змінної > | [<список змінних і їх значень >]
<список команд>::=<команда>
| [<список команд>]
<команда>::=
< номер операції >:< ім'я команди> <операнд А>, <операнд В>, !< номер обчислюваного операнда > to < номер наступної операції >
< ім'я команды>::= < ідентифікатор команди >[< ознака константи >]
< ознака константи >::=”*”
<операнд>::= < змінна > | < заступник >
< заступник >::=”_”
< змінна >::= < ім'я змінної > | < значення змінної > [<ознака константи >]
< ім'я змінної >, < ім'я програми >::=”a”..”z”, “A”..”Z”, “0”.. ”9”, “_”
< ідентифікатор команди >::=out, add, sub, mul, div, sqr, sqrt, cmpe, cmpl, cmpm, cmpme, cmple, if, ifnot, x2, xn, eq1, eq2
< коментар >::=”;”
Примітки:
Заступник операнда («_») ставиться на місце того операнда, який обчислюється на одному з попередніх кроків
Константа позначається як «*»
Після операндів в команді ставиться символ «!» і після нього – номер обчислюваного операнда, потім слово to і номер наступного операнда.
Порядок введення і пристрій введення визначається при компіляції автоматично.
Номер операнда А – 0, номер операнда В – 1.
Асемблер не чутливий до регістра.
Кожна команда або опис однією змінною повинно розташовуватися в окремому рядку, допускаються порожні рядки.
6.3 Приклад програми на асемблері циклів і умовних переходів з прикладу
Програма на асемблері алгоритму, представленого в п. 8 даного опису:
program example
constant
A=1
B=3
C=-2
D=3
begin
1: add a, b, !0 to 3
2: add c, d, !1 to 3
3: mul* _, _, !1 to 4
4: cmple 1,_, !0 to 5
5: xn _, 3*, !1 to 6
6: ifnot 2, _, !0 to 16
7: if 2, _, !0 to 9
8: if 1, _, !0 to 10
9: add _, 2*, !0 to 11
10: add _, 1*, !0 to 12
11: x2 _, 7*, !0 to 13
12: x2 _, 8*, !0 to 14
13: x2 _, 6*, !0 to 15
14: eq1 _, 1*, !1 to 15
15: eq2 _, _, !0 to 4
16: out _ , 2, !0 to 16
end
7. Приклад програмування послідовно-паралельних алгоритмів
Етапи виконання:
1. Виразити задані функції в ЯПФ.
2. Привласнити кожній операції унікальний номер, визначитися з початковими даними. Номери повинні бути унікальні для всіх функцій, а не тільки в межах однієї. Тут необхідно приділити особливу увагу декільком моментам:
Будь-яка команда в системі є двооперандною, тобто для її виконання необхідно 2 операнди. Операнди або вводяться з пристроїв введення, або обчислюються в попередній команді. Крім того, операнди мають відповідне поле, зване «Номер операнда». У команді один операнд повинен мати номер «0», а другий номер «1». Інакше програма буде виконана некоректно або не буде виконана зовсім. При створенні команди (якщо керуюче слово і обидва операнди з різними номерами поступили в систему) операнди віддаляються з відповідних блоків, за винятком констант.
Константа оголошується відповідним полем у форматі операндів - поле «константа». Для керуючих слів це поле означає приналежність до класу констант обчислюваного командою операнда. Проте необхідно пам'ятати, що команда може мати тільки одну константу їх двох операндів (оскільки інакше команда завжди знаходитиметься в стані готовності).
Для спрощення програмування згодом операнди з номерами «0» розміщуйте до лівого входу графічного блоку відповідної команди, а з номерами «1» - до правого. Константи позначаються зірочкою у відповідного входу/виходу.
3. Визначити дані для обчислення функції.
4. Скласти список слів, що управляють, і слів даних відповідно до ЯПФ функцій і формату акторов і слів даних.
5. Записати програму враховуючи порядок введення (стежити за тим, щоб керуюче слово йшло перед словом даних).