Графічне представлення команд

 

Арифметичні операції(складання, віднімання, множення і ін.) На входах і виході операції речовинні значення.
Команда порівняння.На входах речовинні або логічні значення, на виході – 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. Кожна команда або опис однією змінною повинно розташовуватися в окремому рядку, допускаються порожні рядки.

 


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



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