Lista rozkazów: Różnice pomiędzy wersjami
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 | | 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/ ∧ R/A/ ≡ R/A/ to P := 1<br>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 <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÷15</sub> := S/N/<sub>10÷15</sub> | |||
|- | |||
| 108 || '''IMn''' || load Interrupt Mask || Umieść w RM || SR<sub>0÷9</sub> := S/N/<sub>0÷9</sub> | |||
|- | |||
| 109 || '''KIn''' || Kill Interrupts || Pamiętaj RZ || S/N/ := RZ<sub>0÷11,28÷31</sub> | |||
|- | |||
| 110 || '''FIn''' || Fetch Interrupts || Umieść w RZ || RZ<sub>0÷11,28÷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/ |
Z |
49 | XMn | eXclusive or in Memory | Różnica symetryczna w pamięci | S/N;NB/ := S/N;NB/ |
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 |