32 3. Opis symulatora
32 3. Opis symulatora
- ROZKAZ
- TYP
• MNE
- KOD -OPIS
- AKCJA
- etykieta
- warunek
- rakrgr
- CZY
- NIE
- DALEJ
- KONIEC
: słowo rozpoczynające definicję,
: słowo poprzedzające określenie typu m.c., dla której przeznaczono definiowany rozkaz,
: słowo poprzedzające nazwę symboliczną rozkazu,
: słowo poprzedzające proponowany kod rozkazu,
: słowo poprzedzające opis funkcji rozkazu,
: słowo rozpoczynające definicję akcji wykonywanej przez rozkaz,
: nazwa etykiety,
: zapis warunku w postaci badanego stanu m.c.. np. STNZAK,
: nazwa mikroopcracji grupującej,
: słowo poprzedzające wystąpienie warunku badanego stanu,
: słowo negujące badany warunek,
: słowo poprzedzające określenie miejsca przeniesienia sterowania (skoku),
: słowo kończące definicję rozkazu.
Jako legalne separatory występują: znak spacji, tabulacji oraz komentarz ujęty w nawiasy klamrowe ({przykładowy komentarz}).
Opis działania rozkazu, nazywany wzorem wykonania, posiada następującą postać:
ROZKAZ
TYP - cnazwa typu m.c.»
KNE = <nazwa symboliczna rozkazu>
(KOD » <kod rozkazu>)
IOPIS e '<opia roz)cazu>*l AKCJA
{ (<etykieta>i] <opis taktu> ; }
KONIEC
cnazwa typu m.c.> - nazwa m.c., dla której przygotowywany jest rozkaz
<kod rozkazu> - kod rozkazu
<opl6 rozkazu> - symboliczny opis funkcji rozkazu
cnazwa symboliczna
rozkazu> - symboliczna trzyliterowa nazwa rozkazu
<opis taktu> (<sygnał>) ((CZY (NIEJ <warunek>l DALEJ <etykieta>]
Opis: {} - powtórzenie jedno- lub wielokrotne,
(] * wystąpienie opcjonalne,
} - symbol kończący takt.
W celu zapewnienia daleko idącej ogólności programu Symulatora dopuszcza się, jak to wynika z przyjętej notacji, pominięcie określenia kodu rozkazu. Opcja taka może być
korzystna przy braku wglądu w lisic zawierająca kody rozkazów. Zanim jednak definicja wykonania rozkazu zostanie wprowadzona do aktualnej listy rozkazów Symulatora, następuje, oprócz analizy składni pliku wynikowego, analiza kodów rozkazów już znanych Symulatorowi. W momencie gdy wprowadzany rozkaz nie ma określonego kodu rozkazu. Symulator proponuje "pierwszy" wolny zaczynając od 0. Taka sama akcja zostaje podjęta, gdy kod wprowadzanego rozkazu jest już “zajęty" do określenia innego. Rozkaz nic zostanie wprowadzony, jeśli lista rozkazów jest zapełniona całkowicie lub gdy rozkaz posiada nazwę symboliczną już występującą na liście.
3.1.2. Zapis programów w języku symbolicznym m.c.
Dla ułatwienia pracy z symulatorem wprowadzono możliwość korzystania z makroascmblera języka symbolicznego, bazującego na aktualnej liście rozkazów. Plik źródłowy poddawany asemblacji zawiera zapis programu o następującej składni:
POCZ
MAKRO
KONM
RST
RPA
KON
: dyrektywa określająca adres początkowy programu w pamięci operacyjnej (domyślnie przyjęty 0),
: dyrektywa określająca początek definicji wzoru makroinstrukcji.
: dyrektywa określająca koniec definicji wzoru makroinstrukcji.
: pseudoinstrukcja zapisująca do komórki pamięci stalą wartość następującą po niej.
: pseudoinstrukcja rezerwująca komórkę pamięci operacyjnej w celu przechowywania zmiennej,
: dyrektywa kończąca tekst programu w języku symbolicznym m.c.
Wszystkie wartości liczbowe mogą być podawane w systemach liczbowych: binarnym, dziesiętnym i szesnastkowym. W każdym z systemów możliwy jest zapis liczby ze znakiem. Dla systemu szesnastkowego pierwszym znakiem musi być cyfra dziesiętna lub znak liczby. Natomiast zakończona musi być, dla jej identyfikacji, literą "II" bezpośrednio następującą po ostatniej cyfrze liczby. Dla zapisu w systemie dziesiętnym przyjęto literę "D", a dla binarnego opcjonalnie 'B*. Domyślnie przyjmuje się zapis liczby w systemie binarnym ze znakiem (zapis uzupełnieniowy do dwóch).
Postać pliku źródłowego:
{[POCZ <liczba>] |
[MAKRO <makrodef.> KONM] |
[dinia instrukcji>] }
KON
<makrodef.> :»» <nazwa_m> [<par>{[,<par>l) 1 (dinia inatr>)
dinia inatr> :i« [<etk>:] dnatr. ><arg> |
[<etk>:] (RST<arg> | RPA) | <makroinBtr.>