S.L.E.M. (Sådan Lærer Elever Maskinsprog eller Søren Lauesens Elementære Maskine) er en udgave af Søren Lauesens model - maskine SL69.
Datamaskinernes enorme succes skyldes ikke blot, at de er blevet utroligt billige, men nok så meget, at de er fleksible. Den samme maskine er i et øjeblik en stærk skakspiller, i det næste efterligner (simulerer) den en flyvemaskine, og i det tredie er den en raffineret skrivemaskine. Så hvorfor ikke lade datamaskinen simulere - en datamaskine.
SLEM efterligner en enkel datamakine med 64 lagerceller og en processor med ét register og et ordresæt bestående af kun 11 ordrer. Desuden er den åben i den forstand, at alt, hvad der foregår, vises på skærmen. Det skulle herved være muligt at undgå den fornemmelse af "sort kasse", mange naturligt nok får ved omgangen med de herlige maskiner.
Alle sædvanlige datamaskiner består af
Lager, regneenhed og styreenhed er normalt bygget sammen til det, man kalder centralenheden (i modsætning til de ydre enheder).
En maskines lager kan opfattes som en reol med et antal hylder. Hylderne kaldes lagerceller eller blot celler. På virkelige maskiner indeholder lageret milioner af lagerceller. For overblikkets skyld har SLEM kun 64 med numrene 0 til 63. En celles nummer kaldes dens adresse.
På hver hylde kan der anbringes netop ét data-element kaldet et ord. På SLEM er et dataord et helt tal. Vi vil ikke interessere os for, hvordan lagringen af dataord foregår i praksis.
Det kan være nyttigt at forestille sig lageret som et magnetbånd: man kan læse fra det, uden at dets indhold ændres. Men skriver man et ord i en celle, forsvinder dens tidligere indhold sporløst. Man siger, at cellen er overskrevet.
Når et ord i lageret læses af regneenheden, opfattes det som et tal.
SLEMs regneenhed kan kun regne med hele tal (pas på ved divisioner: 7/2 = 3). Regneenheden kan udføre additioner, subtraktioner multiplikationer samt divisioner. Resultatet af en regneoperation findes i et register i regneenheden.
I virkelige maskiner er multiplikation og division stykket sammen af mange enkeltoperationer. i SLEM er de samlet i to ordrer: MLT og DIV. En anden forskel er, at virkelige regneenheder indeholder flere registre. I SLEM sker al opbevaring af data i lageret.
Ligesom regneenheden har et regneregister, har styreenheden et register kaldet ordepilen. Den "peger på" en celle i lageret. D.v.s. tallet i ordrepilen er adressen på en lagercelle.
Når et ord læses fra lageret ind i styreenheden, opfattes det som en ordre eller instruktion. Når maskinen arbejder, er proceduren:
SLEMs ordrekatalog er
Operation | Virkning |
---|---|
0 | SToP (udfør ikke flere ordrer) |
1 | HeNT (cellens indhold kopieres i registret) |
2 | GEM (registrets indhold kopieres i cellen) |
3 | ADDer (cellens indhold adderes til registret) |
4 | SUBtraher (cellens indhold trækkes fra registret) |
5 | MuLTiplicer (cellens indhold ganges på registret) |
6 | DIVider (registret divideres med cellens indhold) |
7 | LÆS (et "ord" fra tastaturet og gem det i cellen) |
8 | TRyK (cellens indhold på skærmen) |
9 | HOP (kopier adressen til ordretælleren) | 10 | HopNeG (som HOP, hvis registrets indhold er negativt) |
Et program er en række koder, der få maskinen til at udføre et specielt job. Drejer det sig om at addere to tal, kan man gå frem som følger:
Programmet kan være:
|
Bemærk at selve programmet fylder cellerne 0 - 6. Cellerne 10 - 12 bruges til at opbevare data i. |
Baron von Münchaussen trak efter sigende sig selv op af en sump ved at hive i sine støvlestropper. Maskinens "støvlestrop" er et medfødt program, der gør det muligt at indlæse de egentlige programmer. SLEM's bootstrap - program er:
Kode | Pseudokode | Kommentar |
---|---|---|
0: 958 | HOP58 | Hop til bootstrap |
58: 700 | LÆS00 | Indlæs første kodelinie i celle 0 |
59: 158 | HNT58 | Læseordren kopieres i registret |
60: 363 | ADD63 | Ordren LÆS0 bliver til LÆS1 |
61: 258 | GEM58 | Den nye ordre lagres i celle 58 |
62: 958 | HOP58 | Hop til den nye ordre |
63: 1 | 1 | Data |
Læg mærke til, at bootstrappen behandler en ordre (læsordren 700) som data.
Brugsanvisning
Du kan downloade følgende SLEM - programmer
Der er mange problemer forbundet ved at skrive programmer direkte i maskinkode. Man skal f.eks selv holde
rede på, hvor instruktioner og data ligger i lageret.
Derfor udvikles assemblere, som er programmer, der oversætter en mere læselig programtekst til
maskinsprog. Prisen er, at assemblergenereret maskinkode ofte er noget længere,
end hvis den var skrevet i hånden, og at det er vanskeligt at skrive programmer,
der som SLEMs bootstrap manipulerer kode (og ikke blot data).
Der kan anvendes symbolske navne for variable og adresser i lageret.
Variabelnavne består af bogstaver og tal og begynder med at bogstav.
Labelnavne består af ét tal eller bogstav.
Alle bogstaver er små.
SLAM accepterer sætningerne
Hertil kommer tildelingssætninger, som kan have to former
' variabel2 ' og ' variabel3' kan eventuelt være tal.
SLAM foretager (for nærværende) ikke syntax - check og giver ikke fejlmeddelelser.
Du kan downloade følgende SLAM - programmer
[ Hovedmenu ] [ Ordliste ] [ Tilbage til hovedsiden ]