Úloha: interpret asembleru. Parametry velikost paměti, počet registrů a program.
Počítač má N registrů a paměť o velikosti M. V paměti i registrech se uchovávají inty.
Instrukce
MOV co,kam
ADD kam,co //sečte kam a co a uloží do kam
SUB kam,co
MUL kam,co
DIV kam,co
MOD kam,co
**PRINT **co //vytiskne obsah co na konzoly
Na místech co a kam je buď registr, paměť, nebo konstanta.
Adresace
r0…r(N-1) registry
[0]..[M-1] přístup na konkrétní místo v paměti
[r0]..[r(N-1)] nepřímé adresování, přístup na adresu, která je v registru
Další instrukce
**SEQ ** ridici_reg P
//kod
ENDSEQ
SEQ je cyklus. Provede kód, který má uvnitř, P+1 krát s tím, že nastavuje řídící registr od 0 do P. Pokud pokaždé na konci cyklu ridici_reg rovná nula, pak po skončení provádění cyklu bude rovnat nule jinak jedné. Na místě P může být libovolný parametr (paměť, konstanta, registr). P může být záporné číslo, pak se cyklus přeskočí.
PAR ridici_reg P
//kod
ENDPAR
To samá jako SEQ s tím, že se provádí paralelně. Každá instance dostane svoji kopii registrů a paměť je sdílená. Po skončení PAR se registry obnoví do stavu před PAR až na ridici_reg, pro který platí to samé jako u SEQ.
Vstup je korektní.