Приклад програми на асемблері циклів і умовних переходів з прикладу

 

Програма на асемблері алгоритму, представленого в п. 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

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

 

Етапи виконання:

1. Виразити задані функції в ЯПФ.

2. Привласнити кожній операції унікальний номер, визначитися з початковими даними. Номери повинні бути унікальні для всіх функцій, а не тільки в межах однієї. Тут необхідно приділити особливу увагу декільком моментам:

- Будь-яка команда в системі є двооперандною, тобто для її виконання необхідно 2 операнди. Операнди або вводяться з пристроїв введення, або обчислюються в попередній команді. Крім того, операнди мають відповідне поле, зване «Номер операнда». У команді один операнд повинен мати номер «0», а другий номер «1». Інакше програма буде виконана некоректно або не буде виконана зовсім. При створенні команди (якщо керуюче слово і обидва операнди з різними номерами поступили в систему) операнди віддаляються з відповідних блоків, за винятком констант.

- Константа оголошується відповідним полем у форматі операндів - поле «константа». Для керуючих слів це поле означає приналежність до класу констант обчислюваного командою операнда. Проте необхідно пам'ятати, що команда може мати тільки одну константу їх двох операндів (оскільки інакше команда завжди знаходитиметься в стані готовності).

- Для спрощення програмування згодом операнди з номерами «0» розміщуйте до лівого входу графічного блоку відповідної команди, а з номерами «1» - до правого. Константи позначаються зірочкою у відповідного входу/виходу.

 

3. Визначити дані для обчислення функції.

4. Скласти список слів, що управляють, і слів даних відповідно до ЯПФ функцій і формату акторов і слів даних.

5. Записати програму враховуючи порядок введення (стежити за тим, щоб керуюче слово йшло перед словом даних).

ПРИКЛАД

           Виконаємо програмування функції f=(-b+sqrt(b2-4ac)) /2a. ЯПФ цієї функції матиме вигляд (суміщені перші два етапи):

Програма представлена у файлі прикладу «Example.alg».


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: