Protsessori Emulaator ja selle Protsessori Masinkoodile Orienteeritud Assembleri Translaator  
 
Manuaal
 
1. Süntaks
Üleüldine käsustruktur:
asm <parameeter>,...

Suurtel ja väikestel tähtedel vahet ei ole.

Vaikimisi on arvud kümnendsüsteemis kuid saab ka kasutada kuueteistkümnendsüsteemsied arve pannes arvu lõppu "h" tähe (12h).

Registreid on 15 ning neid täheldatakse "$" märgiga ($1..$15). Pöördudes 0-da registri poole saame kätte summaatori ehk siis 0. register on sumaator.

":" märgiga määratakse kogu rida label ehk suunamis lipukesed (nt basic'us on goto). Mingit otsest piirangut pole label'i defineerimiseks välja arvatud, et esimene täht peab olema vahemikus A..Z. Label'it võib kasutada mistahes eesmärgil koodis.

Muutujaid kui selliseid defineeritakse järgmiselt:

dd <muutuja nimi>,<muutuja väärtus>

Muutujaid võib kasutada mistahes eesmärgil koodis.

Muutuja asukohta mälus saab kätte järgmiselt:

mov $1,a <- siinkohal saadakse aru, et on vaja just seda väärtust kohal [a]
dd a,7

mov $1,[a] <- kuid siinkohal saadakse aru, et on vaja just seda aadressi kus asub a väärtus.
dd a,7

Mäluaadresse täheldatakse "&" märgiga, 1. mäluaadress oleks siis &0 jne.

 
2. Matemaatilised tehted
    2.1 Liitmine
MK Asm Tähendus Kirjeldus Näide Väljund
10 Add S=A1+A2 Paneb summaatorisse kahe konstandi summa add 1,2 S = 3
11 Add S=S+A1 Summaatorile liidetakse vastav konstant add 2 S = 2 (kui S oli 0)
12 Add S=R(A1)+R(A2) Summaatorisse pannakse kahe vastava registri väärtus add $1, $2 S = 5 (kui R1 = 2 ja R2 = 3)
13 Add S=S+R(A1) Summaatorile liidetakse vastav registri väärtus add $4 S = 6 (kui S oli 0 ja R4 = 6)
14 Add S=M(A1)+M(A1) Summaatorisse pannakse kahe vastava mälu koha väärtuse summa add &2, &4 S = 7 (kui M1 = 3 ja M3 = 4)
15 Add S=S+M(A1) Summaatorile liidetakse vastava mälu koha väärtus add &3 S = 5 (kui S oli 2 ja M2 = 3)
16 Inc S=S+1 Summaatorile liidetakse üks inc S = 2 (kui S oli 1)
 
   2.2 Lahutamine
MK Asm Tähendus Kirjeldus Näide Väljund
20 Sub S=A1-A2 Paneb summaatorisse kahe konstandi vahe sub 4,2 S = 2
21 Sub S=S-A1 Summaatorist lahutatakse vastav konstant sub 2 S = 2 (kui S oli 4)
22 Sub S=R(A1)-R(A2) Summaatorisse pannakse kahe vastava registri väärtus sub $1, $2 S = 5 (kui R1 = 8 ja R2 = 3)
23 Sub S=S-R(A1) Summaatorist lahutatakse vastav registri väärtus sub $4 S = 4 (kui S oli 5 ja R4 = 1)
24 Sub S=M(A1)-M(A1) Summaatorisse pannakse kahe vastava mälu koha väärtuse vahe sub &2, &4 S = 5 (kui M2 = 9 ja M4 = 4)
25 Sub S=S-M(A1) Summaatorile liidetakse vastava mälu koha väärtus sub &3 S = 4 (kui S oli 6 ja M3 = 2)
26 Dec S=S-1 Summaatorist lahutatakse üks dec S = 2 (kui S oli 3)
 
   2.3 Jagamine
MK Asm Tähendus Kirjeldus Näide Väljund
30 Div S=S/A1 R(A2)=Jääk Summaator jagatakse konstandiga ning jagatise jääk pannakse registri vastavale kohale div 7, $3 S = 2, R3 = 1
31 Div S=A1/A2 Summaatorisse pannakse kahe konstandi jagatise täisosa div 4,2 S = 2
32 Div S=S/R(A1) R(A2)=Jääk Summaator jagatakse registri vastava kohaga ning jagatise jääk pannakse registri vastavale kohale div $3, $5 S = 3, R5 = 2 (kui S oli 8 ja R3 = 3)
33 iDiv S=R(A1)/R(A2) Summaatorisse pannakse registri vastavate kohtade jagatise täisosa idiv $2, $3 S = 4 (kui R2 = 14 ja R3 = 3)
34 Div S=S/M(A1) M(A2)=Jääk Summaator jagatakse mälu vastava kohaga ning jagatise jääk pannakse mälu vastavasse kohta div &2, &4 S = 3, M4 = 1 (kui S oli 7 ja M2 = 2)
35 iDiv S=M(A1)/M(A2) Summaatorisse pannakse mälu vastavate kohtade jagatise täisosa idiv &3, &5 S=4 (kui M3 = 16 ja M5 = 4)
 
   2.4 Korrutamine
MK Asm Tähendus Kirjeldus Näide Väljund
40 Mul S=S*A1 Summaatorisse pannakse summaatori korrutis konstandiga mul 4 S = 8 (kui S oli = 2)
41 Mul S=A1*A2 Summaatorisse pannakse kahe konstandi korrutis mul 4,2 S = 8
42 Mul S=S*R(A1) Summaatorisse pannakse summaatori korrutis registri vastava kohaga mul $5 S = 9 (kui S oli 3 ja R5 = 3)
43 Mul S=R(A1)*R(A2) Summaatorisse pannakse registrite vastavate kohtade korrutis mul $2, $3 S = 4 (kui R2 = 2 ja R3 = 2)
44 Mul S=S*M(A1) Summaatorisse pannakse summaatori korrutis mälu vastaval kohal mul &4 S = 8 (kui S oli 4 ja M4 = 2)
45 Mul S=M(A1)*M(A2) Summaatorisse pannakse mälude vastavate kohtade korrutis mul &3, &5 S=4 (kui M3 = 2 ja M5 = 2)
 
3. Loogilised tehted
   3.1Konjuktsioon
MK Asm Tähendus Kirjeldus Näide Väljund
50 And S=A1&A2 Summaatorisse pannakse kahe konstandi konjunktsioon and ff00, ff S = ffff
51 And S=S&A1 Summaatorisse pannakse summaatori ning konstandi konjunktsioon and S =
52 And S=S&S Summaatorisse pannakse summaatori konjunktsioon iseendaga and S =
53 And S=R(A1)&R(A2) Summaatorisse pannakse registri vastavatel kohtadel olevate väärtuste konjunktsioon and $2, $3 S =
54 And S=S&R(A1) Summaatorisse pannakse summaatori ja registri vastaval kohal oleva väärtuse konjunktsioon and $4 S =
55 And S=M(A1)&M(A2) Summaatorisse pannakse mälu vastavatel kohtadel olevate väärtuste konjunktsioon and &3, &5 S =
56 And S=S&M(A1) Summaatorisse pannakse summaatori Ja mälu vastaval kohal oleva väärtuse konjunktsioon and &4 S =
 
   3.2 Disjunktsioon
MK Asm Tähendus Kirjeldus Näide Väljund
57 Or S=A1|A2 Summaatorisse pannakse kahe konstandi disjunktsioon or ff00, ff S = ffff
58 Or S=S|A1 Summaatorisse pannakse summaatori ning konstandi disjunktsioon or S =
59 Or S=S|S Summaatorisse pannakse summaatori disjunktsioon iseendaga or S =
5A Or S=R(A1)|R(A2) Summaatorisse pannakse registri vastavatel kohtadel olevate väärtuste disjunktsioon or $2, $3 S =
5B Or S=S|R(A1) Summaatorisse pannakse summaatori ja registri vastaval kohal oleva väärtuse disjunktsioon or $4 S =
5C Or S=M(A1)|M(A2) Summaatorisse pannakse mälu vastavatel kohtadel olevate väärtuste disjunktsioon or &3, &5 S =
5D Or S=S|M(A1) Summaatorisse pannakse summaatori ja mälu vastaval kohal oleva väärtuse disjunktsioon or &4 S =
 
   3.3 Eitus
MK Asm Tähendus Kirjeldus Näide Väljund
60 Not S=!A1 Summaatorisse pannakse konstandi tõeväärtuse vastand not ff00, ff S = ffff
61 Not S=!S Summaatorisse pannakse summaatori tõeväärtuse vastand not S =
62 Not S=!R(A1) Summaatorisse pannakse registri vastaval kohal oleva väärtuse tõeväärtuse vastand not $3 S =
63 Not S=!M(A1) Summaatorisse pannakse mälu vastaval kohal oleva väärtuse tõeväärtuse vastand not &2 S =
 
   3.4 Antiekvivalents
MK Asm Tähendus Kirjeldus Näide Väljund
64 XOr S=A1^A2 (a|!b) Summaatorisse pannakse konstandi tõeväärtus ja teise konstandi vastand tõeväärtuse disjunktsioon not ff00, ff S = ffff
65 XOr S=S^A1 Summaatorisse pannakse summaatori tõeväärtuse vastand not S =
66 XOr  S=S^S Summaatorisse pannakse registri vastaval kohal oleva väärtuse tõeväärtuse vastand not $3 S =
67 XOr S=R(A1)^R(A2) Summaatorisse pannakse mälu vastaval kohal oleva väärtuse tõeväärtuse vastand not &2 S =
68 XOr S=S^R(A1)      
69 XOr S=M(A1)^M(A2)      
6A XOr S=S^M(A1)      
 
4. Mälu operatsioonid
   4.1 Mälu liigutamine
MK Asm Tähendus Kirjeldus Näide Väljund
70 Mov R(A1)=R(A2) Esimesse määratud registrisse pannakse teise registri väärtus mov &2, &4 R2 = 6 (kui R4 = 6)
71 Mov R(A1)=M(A2) Esimesse määratud registrisse pannakse määratud mälukoha väärtus mov &3,$5 R3 = 4 (kui M5 = 4)
72 Mov  M(A1)=M(A2) Esimesse määratud mälukohale pannakse teise mälukoha väärtus mov $3,$4 M3 = 2 (kui M4 = 2)
73 Mov M(A1)=R(A2) Esimesse määratud mälukohale pannakse vastava registri väärtus mov $2,&5 M3 = 7 (kui R5 = 7)
74 Mov S=A1 Summaatorile antakse konstandi väärtus mov 5 S = 5
75 Mov S=M(A1) Summaatorile antakse vastava mälukoha  väärtus mov $2 S = 4 (kui M2 = 4)
76 Mov S=R(A1) Summaatorile antakse vastava registri väärtus mov &5 S = 1 (kui R5 = 1)
 
   4.2 Mälu vahetamine
MK Asm Tähendus Kirjeldus Näide Väljund
80 Xch M(A1)=M(A2) M(A2)=M(A1) Esimesse määratud mälukohale pannakse teine ja vastupidi mov $2, $4 M2 = 6, M4 = 3 (kui M4 = 6 ja M2 = 3)
81 Xch R(A1)=R(A2) R(A2)=R(A1) Esimesse määratud registrisse pannakse teise ja vastupidi mov &3,&5 R3 = 4, R5 = 2 (kui R5 = 4 ja R3 = 2)
82 Xch  S=M(A1) M(A1)=S Summaator saab määratud mälukoha väärtuse ja vastupidi mov $2 S = 2, M2 = 4 (kui M2 = 2 ja S = 4)
83 Xch S=R(A1) R(A1)=S Summaator saab määratud registri väärtuse ja vastupidi mov &5 S = 7, R5 = 3 (kui R5 = 7 ja S = 3)
 
 
   4.3 Mälu määramine
MK Asm Tähendus Kirjeldus Näide Väljund
F0 Set S:=A1 Summator saab konstandi väärtuse set 3 S = 3
F1 Set S:=R(A1) Summator saab vastava registri väärtuse set &3 S = 5 (kui R3 = 5)
F2 Set  S:=M(A1) Summaator saab vastava mälukoha väärtuse set $2 S = 2 (kui M2 = 2)
 
5. Sisend ja väljund
   5.1 Väljund
MK Asm Tähendus Kirjeldus Näide Väljund
F3 Out Write(A1) Väljastab konstandi out 3 3
F4 Out Write(R(A1)) Summator saab vastava registri väärtuse out &3 5 (kui R3 = 5)
F5 Out  Write(M(A1)) Summaator saab vastava mälukoha väärtuse out $2 2 (kui M2 = 2)
 
   5.2 Sisend
MK Asm Tähendus Kirjeldus Näide Väljund
F6 In M(A1)=Read() Vastav mälukoht saab sisendi väärtuse in $3 M = 6 (kui sisend oli 6)
F7 In R(A1)=Read() Summator saab vastava registri väärtuse in &3 R5 = 4(kui sisend oli 4)
 
6. Muud käsud
MK Asm Tähendus Kirjeldus Näide Väljund
90 Jmp Mine aadressile A1 Läheb konstandi väärtusega kohale jmp 3 läheb 3 kohale
91 Jmp Mine aadressile R(A1) Läheb vastava registri väärtusega kohale jmp &4 läheb 5 kohale kui R5 = 4
92 Jmp Mine aadressile M(A1) Läheb vastava mälukoha väärtusega kohale jmp $2 läheb 7 kohale kui M2 = 7
93 Jin A1 kui on null A2 Kui mitte jin 3,4
94 Jin R(A1) kui on null R(A2) kui mitte jin &2,&5
95 Jin M(A1) kui on null M(A2) Kui mitte jin $3,$7
96 Jig A1 kui on suurem A2 kui väiksem jig 2,5
97 Jig R(A1) kui on suurem R(A2) kui väiksem jig &2,&6
98 Jig M(A1) kui on suurem M(A2) kui väiksem jig $5, $2
A0 Cmp S=1, A1>A2 S=-1,A1<A2 S=0 A1=A2 cmp 3,5
A1 Cmp S=1, R(A1)>R(A2) S=-1,R(A1)<R(A2) S=0 R(A1)=R(A2) cmp &3, &2
A2 Cmp S=1, M(A1)>M(A2) S=-1,M(A1)<M(A2) S=0 M(A1)=M(A2) cmp $2,$7
92 Dd Muutujate määramine ???? dd kana, R5 = 4(kui sisend oli 4)
00 Stop Programmi lõpp stop
01 Reset Mälu Nullitakse kui S=AA Translaator Lisab kohe "1a00aa01" mitte "01" reset
 
7. Näited
Ruutjuur Arvutab ruutjuure sisendist saadud väärtusest