Арифметичні операції(складання, віднімання, множення і ін.) На входах і виході операції речовинні значення. | |
Команда порівняння.На входах речовинні або логічні значення, на виході – 1 при true результаті, і 0 при false. | |
Вентиль.Може бути TRUE, як на малюнку, або FALSE (F). Першим операндом команди є речовинне або логічне значення, другим – логічне. Вентиль TRUE якщо другий операнд має дійсне значення «пропускає» на вихід перший операнд. Інакше операнд «поглинається», тобто операція не поверне ніякого результату. | |
2-Размножувач.Першим операндом є операнд, який необхідно розмножити, другим – адреса. Результатом виконання операції є 2 ідентичних операнда але з різними адресами (номерами операцій). Перша адреса витягується з відповідного поля команди, а другою – з другого операнда команди. | |
N- Размножувач. Першим операндом є операнд, який необхідно розмножити, другим – кількість (N) цих операндів. Адреса першого операнда (номер операції) визначається у відповідному полі команди, адреси інших визначаються як адреса попереднього +1. | |
Команда виводу. Першим операндом є число, яке виводиться, другим – номер пристрою виводу. | |
Повторювач входу 1. Результатом виконання команди є 1-й вхідний операнд. Команда використовується для синхронізації незалежних віток циклу. Другий вхідний операнд використовується для ініціалізації команди і при виконанні втрачається (в результаті не бере участь) | |
Повторювач входу 2. Команда аналогічна попередній. |
|
|
Асемблер обчислювальної системи
Команди і їх опис
Тип | ASM | КОП | Операнди | Результат | Опис | |
A | B | |||||
Вивод | Out | 0 | R | I | Out A to B | Вивод операнда А в пристрій виводу В |
Додавання | Add | 1 | R | R | R(A+B) | |
Віднімання | Sub | 2 | R | R | R(A-B) | |
Множення | Mul | 3 | R | R | R(A*B) | |
Ділення | Div | 4 | R | R | R(A/B) | |
Зведення в квадрат | Sqr | 5 | R | R | R(A2) | Використовується один операнд, другий операнд необхідний для ініціалізації команди і може бути будь-яким числом |
Витягання кореня | Sqrt | 6 | R | R | R(sqrt(A)) | Використовується один операнд, другий операнд необхідний для ініціалізації команди і може бути будь-яким числом |
Порівняння | Cmpe | 100 | R/B | R/B | B(a=b) | На вході команди порівняння два операнди, результатом виконання команди буде 1, якщо умова істинна, і 0 інакше |
Cmpm | 101 | R/B | R/B | B(a>b) | ||
Cmpl | 102 | R/B | R/B | B(a<b) | ||
Cmpme | 103 | R/B | R/B | B(a>=b) | ||
Cmple | 104 | R/B | R/B | B(a<=b) | ||
Вентиль | If | 105 | R/B | B | a if b | Вентиль TRUE. На вході – операнд будь-якого типу (Операнд1) і операнд логічного типу. Якщо останній буде рівний TRUE, результатом команди буде перший операнд, інакше команда результату мати не буде. |
Ifnot | 106 | R/B | B | a if not b | Вентиль FALSE. Зворотний попередній команді | |
Розмножувач | X2 | 107 | R/B | I | - | 2-Розмножувач. Результатом команди будуть два операнди, значення з рівним значенням і різними адресами. Адреса першого визначається з відповідного поля актора команди, а адреса другого визначається з другого операнда команди. |
Xn | 108 | R/B | I | - | N- Розмножувач. Результатом команди є N операндів з рівним значенням. Адреса першого визначається з актора команди, адреса інших визначається нарощуванням адреси попереднього результату на одиницю. | |
Повторювач | Eq1 | 109 | R/B | R/B | a | Повторювач входа 1. На вхід команди подаються будь-які значення, результатом операції є перший операнд, другий операнд поглинається. Команда використовується для синхронізації незалежних гілок циклу. |
Eq2 | 110 | R/B | R/B | b | Повторювач входа 2. Команда є зворотною попередній. |
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
< коментар >::=”;”
Примітки:
1. Заступник операнда («_») ставиться на місце того операнда, який обчислюється на одному з попередніх кроків
2. Константа позначається як «*»
3. Після операндів в команді ставиться символ «!» і після нього – номер обчислюваного операнда, потім слово to і номер наступного операнда.
4. Порядок введення і пристрій введення визначається при компіляції автоматично.
5. Номер операнда А – 0, номер операнда В – 1.
6. Асемблер не чутливий до регістра.
7. Кожна команда або опис однією змінною повинно розташовуватися в окремому рядку, допускаються порожні рядки.