|
|
|
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
|
|
|
|
|
|
|