MOTIS
Z Wikipedii
Język MOTIS to język asemblerowy przeznaczony dla minikomputerów serii MERA 300.
Spis treści |
[edytuj] Instrukcje podstawowe
Podstawowe instrukcje tego języka stanowią kody mnemoniczne języka wewnętrznego maszyn serii MERA 300. Polecenia te obejmują 34 instrukcje:
- rozkazy arytmetyczne,
- rozkazy logiczne,
- rozkazy sterujące,
- rozkazy we-wy.
[edytuj] Adresowanie pamięci
Adres składa się z dwóch części: adresu strony (8 bitów) i adresu słowa (5 bitów), trzy bity pozostają niewykorzystane. W systemie MERA 306 adres podzielony jest na trzy części: pamięć dodatkowo podzielona jest na tomy.
- Adresowanie bezwzględne: liczba oktalna z zakresu 0-17777.
- Adresowanie względne: przesunięcie względem licznika rozkazów Q (np. skok: SK Q+7).
Do adresowania stosuje się operatory specjalne:
- brak operatora
- S
- L
- M
umożliwiające różną interpretację i modyfikację adresowania.
[edytuj] Rozkazy ekstrakodowe
Są to rozkazy realizowane programowo rozszerzająca listę rozkazów systemu MERA 300. Zostały one wprowadzone w celu ułatwienia pisania programów czasu rzeczywistego.
Użycie rozkazu ekstrakodowego w asemblerze MOTIS wymaga użycia znaku "*" po skrócie mnemonicznym rozkazu, a przed jego argumentem.
Rozkazy ekstrakodowe pozwalają także na użycie stosu systemowego; nie ma takiej możliwości bez ich stosowania chyba, że programista zaprogramuje swój stos.
[edytuj] Stałe i teksty
- Liczby zapisuje się do pamięci poprzedzając zapis liczby symbolem XX liczba.
- Znaki alfanumeryczne wprowadza się poprzedzając symbolem cudzysłowu "znak.
- Znaki alfanumeryczne specjalne wprowadza się jako kod w postaci liczby oktalnej XX kod znaku jako liczba oktalna.
System stosuje dla kodowania znaków zestaw ISO-7.
[edytuj] Symbole definiowane
W języku MOTIS można definiować symbole, które zastępują adresy, znaki lub liczby. Repertuar dostępnych symboli (wg współczesnej nomenklatury – identyfikatorów), ograniczony jest do symboli Q1-Q77, którym można nadawać nie tylko dowolną wartość ale też symbole te, nie mając określonego typu, mogą być interpretowane jako liczby, znaki, adresy (zmienne), adresy (etykiety instrukcji).
Symbol Q identyfikuje licznik adresów (rozkazów). Etkiety Q60-Q77 są wykorzystywane do adresowania podprogramów standardowych.
[edytuj] Makrorozkazy
Makrorozkazy języka MOTIS to rozszerzenie w stosunku do języka wewnętrznego maszyn serii MERA 300. Translator tłumaczy każdy makrorozkaz na ciągi rozkazów maszynowych.
Makrorozkazy asemblera MOTIS są ograniczone do standardowej listy i nie ma możliwości definiowania własnych makrorozkazów.
[edytuj] Podprogramy standardowe
MOTIS posługuje się liczbami oktalnymi i jednostkami pamięci – słowami (8 bitów – wg współczesnej nomenklatury: 1 bajt). Aby ułatwić programowanie została stworzona biblioteka podprogramów standardowych (adresowanych symbolami Q60-Q77), działających na liczbach poczwórnej precyzji (4 x słowo = 4 bajty), przy czym są to nadal wyłącznie liczby całkowite. Podprogramy standardowe obejmują instrukcje:
- wejścia-wyjścia z konwersją liczb binarnych na dziesiętne (i odwrotnie),
- instrukcje tzw. arytmometru programowego:
[edytuj] MOTIS jako loader i system
Asembler MOTIS jest translatorem, który wpisuje kod wynikowy od razu do pamięci, a więc może pełnić funkcje loadera. Operator systemu miał do dyspozycji zestaw odpowiednich poleceń (oznaczonych literami, np. A, B, G, U itd.), za pomocą których steruje pracą systemu asemblera, jako programu lub systemu operacyjnego.
[edytuj] Bibliografia
[edytuj] Zobacz też
ABAP • Ada • AWK • Asembler • C • C++ • C# • COBOL • Common Lisp • D • F# • Forth • Fortran • GAUSS • Icon • Java • JavaScript • Lisp • Lustre• Modula 2 • Ocaml • Oberon • Object Pascal • Objective-C • Pascal • Perl • PHP • PL/SQL • Python • REXX • Ruby • SAS 4GL • sh • Smalltalk • Snobol • SQL • Visual Basic • VB.NET • XUL
Akademickie: Comal • Eiffel • Haskell • Logo • MCPL • ML • Nemerle • Prolog • Scheme
Historyczne: ALGOL • APL • BASIC • Clipper • JAS • MUMPS • PLAN • PL/I • PL/M • SAKO • SAS (asembler) • Simula
Ezoteryczne: INTERCAL • Brainfuck • BeFunge • Unlambda • Malbolge • Whitespace • FALSE • HQ9+ • Shakespeare • Whirl • Ook