Lista rozkazów: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
Linia 3: Linia 3:
{| class="wikitable"
{| class="wikitable"
! Oznaczenie !! Znaczenie
! Oznaczenie !! Znaczenie
|-
| A, B, C || numer rejestru uniwersalnego wskazany w polach A, B lub C rozkazu
| A, B, C || numer rejestru uniwersalnego wskazany w polach A, B lub C rozkazu
|-
|-
Linia 17: Linia 18:
| R0 ÷ R7 || zawartość rejestrów uniwersalnych
| R0 ÷ R7 || zawartość rejestrów uniwersalnych
|-
|-
| rA, rB, rC - argumenty rozkazu związane z odpowiednimi polami rozkazu
| 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/, R/B/, R/C/ || rejestr uniwersalny o numerze wskazanym wartością odpowiedniego pola rozkazu
Linia 268: Linia 269:
| 102 || '''RIC''' || Read Instruction Counter || Czytaj licznik rozkazów || R/A/ := IC
| 102 || '''RIC''' || Read Instruction Counter || Czytaj licznik rozkazów || R/A/ := IC
|-
|-
| 103 || '''ISn''' || Install Semaphore || Ustaw semafor || Jeśli S/N;NB/ &and; R/A/ &equiv; R/A/ to P := 1<br>Jeśli S/N;NB/ &and; R/A/ &ne; R/A/ to S/N;NB/ := S/N;NB/ &or; R/A/ || P
|-
| 104 || '''EXL''' || EXtra code Legal || Ekstrakod || S/S/97;0// := IC <br>S/S/97;0/+1/ := R0 <br>S/S/97;0/+2/ := SR <br>S/S/97;0/+3/ := b <br>R0 := 0 <br>IC := S/96;0/ <br>SR<sub>9,10</sub> := 0 <br>S/97;0/ := S/97;0/+4
|-
| 105 || '''RPC''' || Remember Program Conditions || Prześlij rejestr R0 || R/A/ := R0
|-
| 106 || '''LPC''' || Load Program Conditions || Umieść w rejestrze R0 || R0 := R/A/
|-
| 107 || '''MBn''' || Modify Block ard. register (??) || Umieść w SR || SR<sub>10&divide;15</sub> := S/N/<sub>10&divide;15</sub>
|-
| 108 || '''IMn''' || load Interrupt Mask || Umieść w RM || SR<sub>0&divide;9</sub> := S/N/<sub>0&divide;9</sub>
|-
| 109 || '''KIn''' || Kill Interrupts || Pamiętaj RZ || S/N/ := RZ<sub>0&divide;11,28&divide;31</sub>
|-
| 110 || '''FIn''' || Fetch Interrupts || Umieść w RZ || RZ<sub>0&divide;11,28&divide;31</sub> := S/N
|-
| 111 || '''SPn''' || Start Program || Powróć do programu || IC := S/N;NB/ <br>R0 := S/N+1;NB/ <br> SR := S/N+2;NB/
|-
| 112 || '''HLT''' || HaLT || Czekaj || ||
|-
| 113 || '''MCL''' || Master CLear || Zeruj || zeruj RZ, SR, R0, kanały, urządzenia, rejestry podziału PAO
|-
| 114 || '''SIU''' || Set Interrupt Upper || Ustaw przerwanie starsze || RZ<sub>30</sub> := 1
|-
| 115 || '''SIL''' || Set Interrupt Lower || Ustaw przerwanie młodsze || RZ<sub>31</sub> := 1
|-
| 116 || '''CIT''' || Clear InTerrupts || Zeruj przerwania programowe || RZ<sub>30,31</sub> := 00
|-
| 117 || '''SIT''' || Set InTerrupts || Ustaw przerwania programowe || RZ<sub>30,31</sub> := 11
|-
| 118 || '''GIU''' || Generate Interrupt Upper || Wyślij przerwanie typu U || RZ<sub>3</sub>/drugiego procesora/ := 1 <br>jeśli odpowiedź OK to P := 1 || P
|-
| 119 || '''GIL''' || Generate Interrupt Lower || Wyślij przerwanie typu L || RZ<sub>29</sub>/drugiego procesora/ := 1 <br>jeśli odpowiedź OK to P := 1 || P
|-
| 120 || '''LIP''' || Leave to Interrupted Program || Powróć z przerwania || IC := S/S/97;0/-4/ <br>R0 :=  S/S/97;0/-3/<br> SR := S/S/97;0/-2/ <br>S/97;0/ := S/97;0/-4
|-
| 121 || '''OUn''' || OUtput data || Wyjście || ||
|-
| 122 || '''INn''' || INput data || Wejście || ||
|}
|}

Wersja z 20:45, 8 sie 2012

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
103 ISn Install Semaphore Ustaw semafor Jeśli S/N;NB/ ∧ R/A/ ≡ R/A/ to P := 1
Jeśli S/N;NB/ ∧ R/A/ ≠ R/A/ to S/N;NB/ := S/N;NB/ ∨ R/A/
P
104 EXL EXtra code Legal Ekstrakod S/S/97;0// := IC
S/S/97;0/+1/ := R0
S/S/97;0/+2/ := SR
S/S/97;0/+3/ := b
R0 := 0
IC := S/96;0/
SR9,10 := 0
S/97;0/ := S/97;0/+4
105 RPC Remember Program Conditions Prześlij rejestr R0 R/A/ := R0
106 LPC Load Program Conditions Umieść w rejestrze R0 R0 := R/A/
107 MBn Modify Block ard. register (??) Umieść w SR SR10÷15 := S/N/10÷15
108 IMn load Interrupt Mask Umieść w RM SR0÷9 := S/N/0÷9
109 KIn Kill Interrupts Pamiętaj RZ S/N/ := RZ0÷11,28÷31
110 FIn Fetch Interrupts Umieść w RZ RZ0÷11,28÷31 := S/N
111 SPn Start Program Powróć do programu IC := S/N;NB/
R0 := S/N+1;NB/
SR := S/N+2;NB/
112 HLT HaLT Czekaj
113 MCL Master CLear Zeruj zeruj RZ, SR, R0, kanały, urządzenia, rejestry podziału PAO
114 SIU Set Interrupt Upper Ustaw przerwanie starsze RZ30 := 1
115 SIL Set Interrupt Lower Ustaw przerwanie młodsze RZ31 := 1
116 CIT Clear InTerrupts Zeruj przerwania programowe RZ30,31 := 00
117 SIT Set InTerrupts Ustaw przerwania programowe RZ30,31 := 11
118 GIU Generate Interrupt Upper Wyślij przerwanie typu U RZ3/drugiego procesora/ := 1
jeśli odpowiedź OK to P := 1
P
119 GIL Generate Interrupt Lower Wyślij przerwanie typu L RZ29/drugiego procesora/ := 1
jeśli odpowiedź OK to P := 1
P
120 LIP Leave to Interrupted Program Powróć z przerwania IC := S/S/97;0/-4/
R0 := S/S/97;0/-3/
SR := S/S/97;0/-2/
S/97;0/ := S/97;0/-4
121 OUn OUtput data Wyjście
122 INn INput data Wejście