Lista rozkazów

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania

Objaśnienia symboli użytych w liście rozkazów

Oznaczenie Znaczenie A, B, C numer rejestru uniwersalnego wskazany w polach A, B lub C rozkazu
b argument bajtowy rozkazu (bity 8÷15 rozkazu)
D bit pośredniego adresowania
IC licznik rozkazów
M zawartość następnego słowa za słowem podstawowym rozkazu
P wskaźnik przeskoku. Gdy P=1 to IC := IC + długość rozkazu + 1
R0 ÷ R7 zawartość rejestrów uniwersalnych
rA, rB, rC - argumenty rozkazu związane z odpowiednimi polami rozkazu
R/A/, R/B/, R/C/ rejestr uniwersalny o numerze wskazanym wartością odpowiedniego pola rozkazu
R/A/n n-ty bit rejestru uniwersalnego wskazanego wartością pola rozkazu
R/A/n÷m bity n...m rejestru uniwersalnego wskazanego wartością pola rozkazu
RZ rejestr zgłoszeń przerwań
RS rejestr stanu systemu
RM rejestr masek przerwań
Q wzkaźnik pracy systemu: Q=0 oznacza pracę systemu operacyjnego, Q=1 pracę programu użytkowego
:= przypisanie wartości
S/x/ zawartość komórki pamięci o adresie x
S/x;NB/ zawartość komórki pamięci o adresie x w bloku NB
operator logiczny AND (iloczyn)
operator logiczny OR (suma)
· operator logiczny XOR (różnica symetryczna)
x operator logiczny NOT (negacja)
>=< porównanie (w rezultacie ustawia odpowiednio wskaźniki)
tożsamość
różne
« przesunięcie o jeden bit w lewo
» przesunięcie o jeden bit w prawo
»n» przesunięcie cykliczne o n bitów w prawo

Lista Rozkazów

Lp. Mnemonik Źródłosłów Opis Treść Ustaw
wskaźniki
1 LWn Load Word Umieść w rejestrze R/A/ := N
2 LWT Load to Word paremeTer Umieść krótki argument R/A/ := T
3 LWS Load to Word Short Pobierz względnie R/A/ := S/IC+T/
4 LDn Load Double word Umieść w R1 i R2 [R1, R2] := [S/N/, S/N+1/]
5 LFn Load Floating point number Umieść w R1, R2 i R3 [R1, R2, R3] := [S/N/, S/N+1/, S/N+2/]
6 LAn Load All registers Umieść w R1, R2, ..., R7 [R1, R2, ..., R7] := [S/N/, S/N+1/, ..., S/N+6/]
7 LLn Load Last three registers Umieść w R5, R6 i R7 [R5, R6, R7] := [S/N/, S/N+1/, S/N+2/]
8 LSn Load Selective Umieść przez maskę w R7 R/A/ := [R/A/∧R7] ∨ [N∧R7]
9 TWn Take Word Umieść według NB R/A/ := S/N,NB/
10 TDn Take Double word Pobierz do R1 i R2 [R1, R2] := [S/N;NB/, S/N+1;NB/]
11 TFn Take Floating point number Pobierz do R1, R2, R3 [R1, R2, R3] := [S/N;NB/, S/N+1;NB/, S/N+2;NB/]
12 TAn Take to All registers Pobierz do R1, R2, ..., R7 [R1, R2, ..., R7] := [S/N;NB/, S/N+1;NB/, ..., S/N+6;NB/]
13 TLn Take to Last three registers Pobierz do R5, R6, R7 [R5, R6, R7] := [S/N;NB/, S/N+1;NB/, S/N+2;NB/]
14 RWn Remember Word Pamiętaj rejestr S/N/ := R/A/
15 RWS Remember Word Short Pamiętaj względnie S/IC+N/ := R/A/
17 RDn Remember Double word Pamiętaj R1 i R2 [S/N/, S/N+1/] := [R1, R2]
18 RAn Remember All registers Pamiętaj R1, R2, ..., R7 [S/N/, S/N+1/, ..., S/N+6/] := [R1, R2, ..., R7]
19 RLn Remember Last three registers Pamiętaj R5, R6, R7 [S/N/, S/N+1/, S/N+2/] := [R5, R6, R7]
20 PWn Put Word Pamiętaj według NB S/N;NB/ := R/A/
21 PDn Put Double word Prześlij R1 i R2 [S/N;NB/, S/N+1;NB/] := [R1, R2]
22 PFn Put Floating point number Prześlij R1, R2 i R3 [S/N;NB/, S/N+1;NB/, S/N+2;NB/] := [R1, R2, R3]
23 PAn Put All registers Prześlij R1, R2, ..., R7 [S/N;NB/, S/N+1;NB/, ..., S/N+6;NB/] := [R1, R2, ..., R7]
24 PLn Put Last three registers Prześlij R5, R6, R7 [S/N;NB/, S/N+1;NB/, S/N+2;NB/] := [R5, R6, R7]
25 RZn Remember Zero Zeruj słowo w pamięci S/N/ := 0
26 RIn Remember and Increment Umieść w pamięci i dodaj 1 S/R/A// := N
R/A/ := R/A/ + 1
27 AWn Add Word Dodaj R/A/ := R/A/ + N Z, M, V, C
28 AWT Add to Word parameTer Dodaj krótki argument R/A/ := R/A/ + T Z, M, V, C
29 ACn Add word with Carry Dodaj z przeniesieniem R/A/ := R/A/ + N + C Z, M, V, C
30 SWn Subtract Word Odejmij R/A/ := R/A/ - N Z, M, V, C
31 CWn Compare Word Porównaj R/A/ >=< N L, E, G
32 CWT Compare Word to parameTer Porównaj z krótkim arg. R/A/ >=< T L, E, G
33 NGA NeGation Arithmetic Neguj arytmetycznie R/A/ := R/A/+1 Z, M, V, C
34 NGC NeGation with Carry Neguj z przeniesieniem R/A/ := R/A/+C Z, M, V, C
35 ADn Add Double word Dodaj liczby długie [R1, R2] := [R1, R2] + [S/N/, S/N+1/] Z, M, V, C
36 SDn Subtract Double word Odejmij liczby długie [R1, R2] := [R1, R2] - [S/N/, S/N+1/] Z, M, V, C
37 MWn Multiply Words Mnóż [R1, R2] := R2 × S/N/ Z, M, V
38 DWn Divide Words Dziel R2 := [R1, R2] : S/N/
R1 := reszta
Z, M
39 AFn Add Floating point numbers Dodaj liczby zmiennoprzecinkowe [R1, R2, R3] := [R1, R2, R3] + [S/N/, S/N+1/, S/N+2/] Z, M, C
40 SFn Subtract Floating point numbers Odejmij liczby zmennorzecinkowe [R1, R2, R3] := [R1, R2, R3] - [S/N/, S/N+1/, S/N+2/] Z, M, C
41 MFn Multiply Floating point numbers Pomnóż liczby zmennorzecinkowe [R1, R2, R3] := [R1, R2, R3] × [S/N/, S/N+1/, S/N+2/] Z, M, C
42 DFn Divide Floating point numbers Podziel liczby zmennorzecinkowe [R1, R2, R3] := [R1, R2, R3] : [S/N/, S/N+1/, S/N+2/] Z, M, C
43 NRF NoRmalize Floating point number Normalizuj [R1, R2, R3] := znormalizowana liczba zmiennoprzecinkowa
44 ORn Or Register Dodaj logicznie R/A/ := R/A/ ∨ N Z
45 OMn Or Memory Dodaj logicznie do pamięci S/N;NB/ := S/N;NB/ ∨ R/A/ Z
46 NRn aNd in Register Pomnóż logicznie R/A/ := R/A/ ∧ N Z
47 NMn aNd in Memory Pomnóż logicznie do pamięci S/N;NB/ := S/N;NB/ ∧ R/A/ Z
48 XRn eXclusive or in Register Różnica symetryczna R/A/ := R/A/ · N Z
49 XMn eXclusive or in Memory Różnica symetryczna w pamięci S/N;NB/ := S/N;NB/ · R/A/ Z
50 ERn Erase bits in Register Zeruj bity R/A/ := R/A/ ∧ N Z
51 EMn Erase bits in Memory Zeruj bity w pamięci S/N;NB/ := S/N;NB/ ∧ R/A/ Z
52 CLn Compare Logically Porównaj logicznie R/A/ >=< N L, E, G
53 NGL NeGate Logically Neguj logicznie R/A/ := R/A/ Z
54 SXU Set X as Upper bit Ustaw wskaźnik X według R/A/0 X := R/A/0 Z
55 SXL Set X as Lower bit Ustaw wskaźnik X według R/A/15 X := R/A/15 Z
56 SLZ Shift Left add Zero Przesuń w lewo R/A/ « [R/A/,0]
Y := R/A/0
Y
57 SLY Shift Left add Y Przesuń w lewo z Y R/A/ « [R/A/,Y]
Y := R/A/0
Y
58 SLX Shift Left add X Przesuń w lewo z X R/A/ « [R/A/,X]
Y := R/A/0
Y
59 SVZ Shift left, check oVerflow, add Zero Przesuń w lewo, ustaw V R/A/ « [R/A/,0]
Y := R/A/0
Y, V
60 SVY Shift left, check oVerflow, add Y Przesuń w lewo z Y, ustaw V R/A/ « [R/A/,Y]
Y := R/A/0
Y, V
61 SVX Shift left, check oVerflow, add X Przesuń w lewo z X, ustaw V R/A/ « [R/A/,X]
Y := R/A/0
Y, V
62 SRZ Shift Right, add Zero Przesuń w prawo [0,R/A/] R/A/»
Y := R/A/15
Y
63 SRY Shift Right, add Y Przesuń w prawo z Y [Y,R/A/] R/A/»
Y := R/A/15
Y
64 SRX Shift Right, add X Przesuń w prawo z X [X,R/A/] R/A/»
Y := R/A/15
Y
65 SHC SHift Cyclic Przesuń cyklicznie R/A/»T»R/A/
T - liczba przesunięć
66 LBn Load Byte Umieść bajt R/A/8÷15 := S/N;NB/
67 RBn Remember Byte Pamiętaj bajt S/N;NB/ := R/A/8÷15
68 ZLB Zero to Left Byte Zeruj bajt lewy R/A/0÷7 := 0
69 ZRB Zero to Right Byte Zeruj bajt prawy R/A/8÷15 := 0
70 CBn Compare Byte Porównaj bajt R/A/8÷15 >=< S/N;NB/ L, E, G
71 UJn Unconditional Jump Skocz IC := N
72 UJS Unconditional Jump Short Skocz względnie IC := IC + T
73 LJn Link Jump Skocz ze śladem S/N/ := IC
IC := N + 1
74 RJn Return Jump Skocz ze śladem w rejestrze R/A/ := IC
IC := N
75 JNn Jump if Not equal Skocz gdy E Jeśli E=0 to IC := N
76 JLn Jump if Less Skocz przy L Jeśli L=1 to IC := N
77 JLS Jump if Less Short Skocz względnie przy L Jeśli L=1 to IC := IC + T
78 JEn Jump if Equal Skocz przy E Jeśli E=1 to IC := N
79 JES Jump if Equal Short Skocz względnie przy E Jeśli E=1 to IC := IC + T
80 JGn Jump if Greater Skocz przy G Jeśli G=1 to IC := N
81 JGS Jump if Greater Short Skocz względnie przy G Jeśli G=1 to IC := IC + T
82 JZn Jump if Zero Skocz przy Z Jeśli Z=1 to IC := N
83 JMn Jump if Minus Skocz przy M Jeśli M=1 to IC := N
84 JVS Jump if oVerflow Short Skocz względnie przy V Jeśli V=1 to IC := IC + T
V := 0
V
85 JCS Jump if Carry Short Skocz względnie przy C Jeśli C=1 to IC := IC + T
86 JYS Jump if Y Short Skocz względnie przy Y Jeśli Y=1 to IC := IC + T
87 JXS Jump if X Short Skocz względnie przy X Jeśli X=1 to IC := IC + T
88 TRB parameTer to Register and Branch Dodaj arg. krótki i przeskocz R/A/ := R/A/ + T
Jeśli R/A/=0 to P := 1
P
89 IRB Increment Register and Branch Dodaj 1, skocz względnie R/A/ := R/A/ + 1
Jeśli R/A/=0 to IC := IC + T
90 DRB Decrease Register and Branch Odejmij 1, skocz względnie R/A/ := R/A/ - 1
Jeśli R/A/=0 to IC := IC + T
91 BBn Branch on Bits Porównaj logicznie iloczyn Jeśli R/A/∧N ≡ N to P := 1 P
92 BMn Branch on bits in Memory Porównaj logicznie iloczyn w pamięci Jeśli S/N;NB/ ∧ R/A/ ≡ R/A/ to P := 1 P
93 BSn Branch Selective Porównaj logicznie przez maskę Jeśli R/A/ ∧ R7 ≡ N ∧ R7 to P := 1 P
94 BCn Branch if not all Conditions Porównaj logicznie iloczyn Jeśli R/A/ ∧ N ≡ N to P := 1 P
95 BNn Branch if No conditions Przeskocz gdy iloczyn=0 Jeśli R/A/ ∧ N ≡ 0 to P := 1 P
96 BRC Branch if not Right Conditions Badaj prawy bajt R0 Jeśli R08÷15 ∧ b ≠ b to P := 1 P
97 BLC Branch if not Left Conditions Badaj lewy bajt R0 Jeśli R00÷7 ∧ b ≠ b to P := 1 P
98 IBn Increment and Branch Następnik pamięci S/N/ := S/N/ + 1
Jeśli S/N/=0 to P := 1
P
99 MDn MoDify next instruction Modyfikuj MOD := N
100 NOP No OPeration Nic nie rób traktowany przez assembler jako UJS, 0
101 RKY Read KeYboard Czytaj klucze R/A/ := klucze KB pulpitu technicznego
102 RIC Read Instruction Counter Czytaj licznik rozkazów R/A/ := IC