OpenLLM-France/wikimedia huggingface dataset:
# Ontwerp en bouw een besturingssysteem/Blue Screen of Death/Interrupt Service Routines

Nu moet er voor elke (voor ons relevante) interrupt nog een Interrupt Service Routine (ISR) worden geschreven. Daarna moeten al die routines worden geregistreerd, zodat ze op het juiste moment worden aangeroepen.

## Foutmeldingen

De eerste 32 indices in de IDT (index 0 tot en met 31) reageren op foutmeldingen. Zoals in de theorie over foutmeldingen aangegeven, pushen sommige fouten een foutcode op de stack, en andere niet. Om het makkelijker te maken pushen we een 0 op de stack als de foutmelding geen foutcode pusht, zodat de stack altijd evenveel elementen bevat. Daarna pushen we altijd de index van de interrupt die vuurde.
Voor elke mogelijke foutmelding moet er een routine worden geschreven. De interrupts moeten worden uitgeschakeld (met de cli instructie) en we pushen eventueel 0 op de stack als er geen foutcode gepusht is. Vervolgens pushen we het interruptnummer, en springen we naar Isrs_GeneralCode waar de rest van de in de theorie beschreven acties worden uitgevoerd. Oftewel: alle relevante registers worden opgeslagen en na het afhandelen van de interrupt moeten de registers weer worden ingesteld op hun oorspronkelijke waarde. Ten slotte moeten de interrupts weer worden ingeschakeld terwijl de processor verder gaat met de uitvoering van de actieve code.
De volgende zeer repetitieve code kan je zelf verder invullen. Let op het verschil tussen een interrupt die geen foutcode op de stack pusht (zoals interrupt 0) en een interrupt die dat wel doet (bijvoorbeeld interrupt 8).
/kernel/isrs.asm

## Algemene routine

De volgende routine wordt voor alle interrupts aangeroepen, en geeft de controle door aan onze C code van waaruit we kunnen bepalen wat we ermee doen. De code voor Isrs_GeneralCode is dan als volgt:
/kernel/isrs.asm

## Interrupts afhandelen

De Isrs_Handler functie handelt álle interrupts af. Voorlopig laten we alleen een melding zien en gaan we in een oneindige loop wanneer er een fout (een interrupt code kleiner dan of gelijk aan 31) op treed.
/kernel/isrs.c
De ThreadState structuur beschrijft de stack vanaf de pointer. Door hoe de stack groeit, is het bovenste (eerstgenoemde) element in de ThreadState structuur ook het bovenste (laatste toegevoegde) element van de stack. De ThreadState ziet er dan zo uit:
/kernel/include/isrs.h

## Initialisatie

Ten slotte moeten we al die routines nog registreren, zodat ze worden aangeroepen als de interrupt vuurt. Ook deze code kan je gemakkelijk aanvullen.
/kernel/isrs.c
BERICHT: Vergeet Isrs_Initialize niet te definieren in isrs.h.
# Ontwerp en bouw een besturingssysteem/Foutenopsporing

Nadat de computer is gestart, zijn we op onszelf aangewezen. Er zijn geen (hulp)functies voor de meest basale taken, en we zullen alles zelf moeten coderen. Daarom is het belangrijk dat we, voordat we verder gaan met het ontwikkelen van het besturingssysteem, structuur aanbrengen in onze codebestanden, en functies schrijven die helpen met het opvangen van fouten.
Als eerste behandelen we de theorie achter de console, het scherm waarin we in het vorige hoofdstuk Hallo wereld! afdrukten. Hoe zetten we willekeurige teksten op het scherm, en hoe drukken we getallen af in decimale of hexadecimale vorm. Daarna duiden we in de zogenaamde Descriptor Tables, die de eerste stap vormen naar een systeem voor het afhandelen van fouten. Vervolgens behandelen we nog de verschillende soorten fouten die kunnen ontstaan, en ten slotte zijn er nog wat tips en trucs voor succesvol fouten opsporen.
Theorie:
* De console
* Global Descriptor Table
* Interrupt Descriptor Table
* Interrupt Service Routines
* Foutmeldingen
* Fouten opsporen
# Ontwerp en bouw een besturingssysteem/Appendix B/IO poorten
## CRT Controller

De CRT controller kan bestuurd worden via de volgende poorten:
* adrespoort: 0x03D4
* gegevenspoort: 0x03D5
Om twee bytes tegelijk te schrijven, is dit sneller dan meedere keren outb:

### Index 0x0A : Cursor start

| 5 | 4 | | | | 0 |
| D | Scanline | Scanline | Scanline | Scanline | Scanline |
| Naam | Lengte | Waarde |
| Scanline | 5 bits | De scanline aan waar de cursor start. |
| D | 1 bit | 0: Cursor zichtbaar. 1: Cursor verborgen. |

### Index 0x0B : Cursor eind

| 6 | 5 | 4 | | | | 0 |
| Skew | Skew | Scanline | Scanline | Scanline | Scanline | Scanline |
| Naam | Lengte | Waarde |
| Scanline | 5 bits | Geeft de scanline aan waar de cursor eindigt. |
| Skew | 2 bits | Verplaatst de cursor 0-3 karakters naar rechts ten opzichte van zijn gewenste positie. |

### Index 0x0F : Cursorlocatie laag

Bronnen:
* VGA/SVGA Video Programming
# Tarot/Oswald Wirth tarot

Introductie
Etymologie
Geschiedenis
Verschillende versies
Italiaanse stijl
Varianten
Franse stijl
Esoterische tarot
Occulte tarotdecks
Tarot van Marseille
Oswald Wirth tarot
Golden Dawn tarot
Rider-Waite tarot
Thoth-tarot
Betekenis van de kaarten
De Grote Arcana
De Kleine Arcana
Enkele klassieke tarotleggingen
Driekaartlegging
Vijfkaartlegging
Hoefijzer
Horoscoop
Keltisch kruis
Beroemde tarotlezers
Teksten over tarot
Geïllustreerde Sleutel tot de Tarot
Het Boek van Thoth
Kabbalistische tarot
Bronvermelding :
De Oswald Wirth tarot is een versie van de tarot (de eerste esoterische tarot die werd gepubliceerd) die in 1889 (in samenwerking met Stanislas de Guaita) werd ontworpen en geschilderd door de Zwitserse occultist Oswald Wirth (1860-1943). Die eerste editie in een kleine oplage van een honderdtal exemplaren verscheen in kleurendruk. Zij volgde vrij nauwgezet de uitvoering van de Tarot van Marseille, met enkele wijzigingen op basis van de ideeën van de invloedrijke Franse occultist Éliphas Lévi, die esoterische verbanden tussen tarot en kabbala onderzocht.
Een door Wirth herziene versie werd gepubliceerd in 1926/1927, samen met een boek over de tarotkaarten met de titel Tarot des imagiers du moyen-age. Wirth ontwierp alleen de kaarten van de Grote Arcana. Elke Grote Arcana-kaart wordt toegewezen aan een van de 22 letters van het Hebreeuwse alfabet. De kaartnummers zijn in Romeinse cijfers opgegeven.
# Tarot/Italiaanse stijl

Introductie
Etymologie
Geschiedenis
Verschillende versies
Italiaanse stijl
Varianten
Franse stijl
Esoterische tarot
Occulte tarotdecks
Tarot van Marseille
Oswald Wirth tarot
Golden Dawn tarot
Rider-Waite tarot
Thoth-tarot
Betekenis van de kaarten
De Grote Arcana
De Kleine Arcana
Enkele klassieke tarotleggingen
Driekaartlegging
Vijfkaartlegging
Hoefijzer
Horoscoop
Keltisch kruis
Beroemde tarotlezers
Teksten over tarot
Geïllustreerde Sleutel tot de Tarot
Het Boek van Thoth
Kabbalistische tarot
Bronvermelding :
Historisch gezien een van de belangrijkste tarots is de versie bekend als de Tarot van Marseille. Deze werd voor navolgende uitvoeringen het toonaangevende standaard deck. Het was ook de versie die Court de Gébelin bestudeerde en hij illustreerde zijn Monde Primitif met afbeeldingen uit deze tarot. De Tarot van Marseille was ook populair in de 20e eeuw door de Paul Marteau-versie, die zelf gebaseerd was op het ontwerp van Nicolas Conver uit 1760. Deze Tarot de Marseille volgde uiteindelijk duidelijk de 15e eeuwse Italiaanse ontwerpen uit Milaan.
# Tarot/Kabbalistische tarot

Introductie
Etymologie
Geschiedenis
Verschillende versies
Italiaanse stijl
Varianten
Franse stijl
Esoterische tarot
Occulte tarotdecks
Tarot van Marseille
Oswald Wirth tarot
Golden Dawn tarot
Rider-Waite tarot
Thoth-tarot
Betekenis van de kaarten
De Grote Arcana
De Kleine Arcana
Enkele klassieke tarotleggingen
Driekaartlegging
Vijfkaartlegging
Hoefijzer
Horoscoop
Keltisch kruis
Beroemde tarotlezers
Teksten over tarot
Geïllustreerde Sleutel tot de Tarot
Het Boek van Thoth
Kabbalistische tarot
Bronvermelding :
Voor het idee dat de oorsprong van de Tarot terug te voeren zou zijn op het mysterieuze systeem van de joodse kabbala bestaat geen historisch bewijs. Deze theorie werd naar voren gebracht door de 19e-eeuwse Franse occultist Éliphas Lévi, die esoterische verbanden tussen tarot en kabbala onderzocht. Zijn systeem kreeg veel invloed op latere ontwikkelingen van de tarot. Zo baseerden de invloedrijkste tarotspellen van de 20e eeuw hun structuur, symboliek en interpretatie op kabbalistische principes.
Centraal in de westerse kabbala staat de levensboom, een hiërarchie van tien sferen (de "sefirot") die verbonden zijn door 22 paden van wijsheid, die worden in verband gebracht met de 22 kaarten van de Grote Arcana. De kleinere, genummerde kaarten (Kleine Arcana genoemd) komen overeen met de 10 sefirot. Alle "zessen" behoren bijvoorbeeld tot de zesde sefirot "Tiphareth" 'Schoonheid). Verder worden ook de kleuren van de tarotkaarten verbonden met een van de vier "werelden" van de levensboom. Zo behoren pentakels, die betrekking hebben op materiële, aardse dingen, tot de wereld van Assiah, de fysieke wereld.
De kabbalistische levensboom is een model waarmee hermetische kabbalisten het gehele universum en het ontstaan ervan symbolisch voorstellen. De sefirot worden in de kabbala gezien als de 10 attributen / emanaties waarmee God de wereld heeft geschapen en waardoor hij zich manifesteert.
De kabbalistische levensboom wordt bij esoterische tarot gebruikt als meditatiemiddel. Aan de leden van het 19e-eeuwse magische genootschap van de Golden Dawn werden graden toegekend naarmate zij verder gevorderd waren op de paden van deze levensboom.
# Tarot/Klassieke tarotleggingen

Introductie
Etymologie
Geschiedenis
Verschillende versies
Italiaanse stijl
Varianten
Franse stijl
Esoterische tarot
Occulte tarotdecks
Tarot van Marseille
Oswald Wirth tarot
Golden Dawn tarot
Rider-Waite tarot
Thoth-tarot
Betekenis van de kaarten
De Grote Arcana
De Kleine Arcana
Enkele klassieke tarotleggingen
Driekaartlegging
Vijfkaartlegging
Hoefijzer
Horoscoop
Keltisch kruis
Beroemde tarotlezers
Teksten over tarot
Geïllustreerde Sleutel tot de Tarot
Het Boek van Thoth
Kabbalistische tarot
Bronvermelding :
In dit hoofdstuk beperken we ons tot bekende klassieke tarotleggingen.
Sommige leggingen, zoals het Keltisch kruis, beginnen met het kiezen van een "significator" of "kaart van de consultant", een kaart die de vraagsteller voorstelt. Er zijn verschillende methoden om dit te doen, maar de eenvoudigste is wellicht De Keizerin te kiezen voor een vrouw, en De Keizer voor een man.
Andere leggingen, zoals Het Hoefijzer of de driekaartlegging, hebben geen significator nodig.
Een tarotconsult begint natuurlijk eerst met een vraag van de consultant. Daarna wordt de significator gekozen, en dan worden de kaarten geschud. Vervolgens worden de kaarten in het juiste patroon gelegd en kan de analyse beginnen.
# Tarot/Horoscoop

Introductie
Etymologie
Geschiedenis
Verschillende versies
Italiaanse stijl
Varianten
Franse stijl
Esoterische tarot
Occulte tarotdecks
Tarot van Marseille
Oswald Wirth tarot
Golden Dawn tarot
Rider-Waite tarot
Thoth-tarot
Betekenis van de kaarten
De Grote Arcana
De Kleine Arcana
Enkele klassieke tarotleggingen
Driekaartlegging
Vijfkaartlegging
Hoefijzer
Horoscoop
Keltisch kruis
Beroemde tarotlezers
Teksten over tarot
Geïllustreerde Sleutel tot de Tarot
Het Boek van Thoth
Kabbalistische tarot
Bronvermelding :
# Overbrengingsregels/Vermenigvuldigen

| Vorige pagina | Inhouds­opgave | Volgende pagina |

## Vermenigvuldigen

In de vorige paragrafen heb je gezien hoe je bij optellen en aftrekken de onbekende kunt isoleren. In deze paragraaf kijk je naar de werkwijze bij vermenigvuldigen. De volgende paragraaf gaat over delen. De centrale gedachte van de algebra blijft gelden:
      * Het gelijkteken geeft aan dat wat aan de linkerkant ervan staat evenveel waard is als wat aan de rechter kant ervan staat.
      * Als je links en rechts van het gelijkteken dezelfde bewerking uitvoert blijft de gelijkheid waar.
Het idee is: zorg dat het getal dat op een vervelende plek staat geen bijdrage meer levert aan de waarde van die plek. Bij optellen en aftrekken is dat: zorg dat het nul wordt. Ergens nul bij optellen of aftrekken heeft geen effect op de waarde.

## Vermenigvuldigen

Voorbeeld
$\mathrm {7\ \times \ h\ =\ 105}$
$\mathrm {{\frac {7\times \ h}{7}}\ =\ {\frac {105}{7}}}$
$\mathrm {\left({\frac {7}{7}}\right)\ \times \ h\ =\ {\frac {105}{7}}}$
$\mathrm {\left(\,1\,\right)\ \times \ h\ =\ 15}$
$\mathrm {h\ =\ 15}$

### En nu met woorden en letters

$\mathrm {(aantal\ hoezen)\ \times \ (prijs\ per\ autostoelhoes)\ =\ totaalprijs}$
In deze vergelijking zie je meteen dat het lastig is om steeds met hele woorden en halve zinnen te moeten werken. De letters die je bij optellen en aftrekken gebruikt hebt werken veel handiger. Je kunt de woorden en halve zinnen door losse letters vervangen. Bijvoorbeeld:

#### n = (aantal hoezen)

    De letter "n" wordt in formules vaak voor "aantal" gebruikt. Bij rekenen in het laboratorium is de letter "n" in formules met de mol gebruikt om het aantal deeltjes aan te geven: het aantal mol.

#### h = (prijs per stoelhoes)

    In het vorige voorbeeld werkte dat prima.

#### t = totaalprijs

$\mathrm {n\ \times \ h\ =\ t}$
$\mathrm {{\frac {n\ \times \ h}{n}}\ =\ {\frac {t}{n}}}$
$\mathrm {\left({\frac {n}{n}}\right)\ \times \ h\ =\ {\frac {t}{n}}}$
$\mathrm {h\ =\ {\frac {t}{n}}}$
$\mathrm {h\ =\ {\frac {t}{n}}\ =\ {\frac {105}{7}}\ =\ 15}$
| Vorige pagina | Inhouds­opgave | Volgende pagina |
* ↑ Heel eigenlijk moet hier het voorbehoud gemaakt worden van $\mathrm {n\ \neq \ 0}$. In situaties waarin de toekomstige laborant gebruik maakt van deze overbrengingsregel is het onwaarschijnlijk dat de betreffende grootheid de waarde nul heeft.
# Overklokken

De processors in computers werken vaak met een klokfrequentie die lager is dan ze aankunnen. Dit gebeurt onder andere om veiligheidsredenen. Hoe hoger de klokfrequentie, hoe hoger de warmtedissipatie vanwege het toegenomen elektrische vermogen. Van veel processors kan men de klokfrequentie instellen. Men spreekt van overklokken als de klokfrequentie hoger wordt ingesteld dan bij de standaardinstelling.
In deze documentatie wordt een beknopte, duidelijke uitleg geven wat overklokken inhoudt en hoe het op een verantwoorde manier kan worden gedaan. Het is raadzaam om voor het lezen met deze documentatie de disclaimer te lezen, om misverstanden te voorkomen.
# Overklokken/Disclaimer

Alle informatie die in deze documentatie is samengesteld is met een hoop zorg en aandacht verzameld. De auteur staat echter niet in voor de correctheid van de inhoud en stelt zich niet aansprakelijk voor enige beschadigingen aan de apparatuur.
Deze documentatie valt onder de “GNU-Licentie” wat inhoudt dat de inhoud vrij gebruikt mag worden. Bij het wijzigen van de inhoud dient het document weer onder dezelfde licentie worden uitgebracht, en dient er een vermelding te staan van de originele auteur. Voor meer informatie kunt u terecht bij het volgende webadres waar de licentie volledig staat uitgewerkt: http://nl.wikisource.org/wiki/Nederlandstalige_tekst_van_de_GNU_Vrije_Documentatie_Licentie
# Overklokken/Geheugen versus FSB

Geheugen vs. FSB
Het intern geheugen van een computer maakt ook gebruik van de FSB. Het geheugen heeft echter geen multiplier en daarom is de snelheid van de FSB volledig afhankelijk van de FSB. Er zijn verschillende geheugentypes maar tegenwoordig wordt alleen maar gewerkt met DDR geheugen. DDR staat voor Dual Data rate. Uit deze naam kunnen we opmaken dat per kloksyclus er twee keer data wordt verstuurd, met uiteraard dezelfde busbreedte als die van de FSB.
De meeste fabrikanten promoten dat hun geheugenmodules een frequentie van bijvoorbeeld 533 Mhz hebben. De fabrikant verdubbeld zijn frequenties omdat er twee keer per klokcyclus data wordt verzonden waardoor je uiteindelijk het effect krijgt van een dubbele frequentie. Let hier op tijdens het overklokken dat u de frequenties niet instelt op zulke hoge waardes. U zult zeker niet kunnen draaien op deze snelheden!
# Programmeren in x86 assembler
## Over dit boek

De bedoeling van dit boek is het leren van de programmeertaal assembler voor x86 processoren.

## Inhoudsopgave

* Cover
* Inleiding

### Instructieset

* Rekenkundige instructies
* Logische instructies
* Interrupts
* Lijst van alle instructies

### Programmeren

* Basis
** invoer
** werkgeheugen
** uitvoer
* Berekeningen
* Macro's

## Categorieën die horen bij dit boek

* Programmeren in x86 assembler

## Sjablonen die worden gebruikt

* Code
# Programmeren in x86 assembler/Instructieset

In de volgende hoofdstukken worden de verschillende instructies van x86 assembler uitgelegd.

## Inhoud

* Rekenkundige instructies
* Logische instructies
* Interrupts
* Lijst van alle instructies

## Notatie

In dit boek wordt de Intel notatie gebruikt. Dat betekent dat de volgende notatie wordt gebruikt bij een instructie zonder operandes.
x86 assembler-code: Instructie zonder operande
De volgende notatie wordt gebruikt bij een instructie met slechts één operande.
x86 assembler-code: Instructie met slechts één operande
De volgende notatie wordt gebruikt bij een instructie met twee operandes.
x86 assembler-code: Instructie met twee operandes in Intel syntax
Er wordt telkens uitgelegd waarvoor de operandes staan.
Naast de Intel syntax, die zo genoemd is omdat deze door Intel gebruikt wordt in hun technische handleidingen, bestaat er ook nog een andere variant. Deze variant heet de AT&T syntax, het meest duidelijke verschil (naast nog enige andere) is dat doel en bron bij instructies met twee operandes van plaats gewisseld zijn. Het voorbeeld met twee operandes van hierboven wordt dan:
x86 assembler-code: Instructie met twee operandes in AT&T syntax
Gelukkig kunnen de meeste utilities met beide syntax varianten overweg.
# Programmeren in TI-Basic/Variabelen

Om een programma te maken heb je vaak getallen of strings nodig die je kan opslaan. Anders heb je alleen maar een soort filmpje dat wordt afgespeeld en nooit anders is. Als je bijvoorbeeld een programmatje wilt maken dat een getal tot de derde macht verheft, het plus 10 doet en het dan weer tot de derde macht worteltrekt, dan heb je variablen nodig. Je hebt 3 soorten basisvariablen: getallen variablen (Reals) (A-Z & θ), strings (Str0 - Str9) en lijsten(ι1 - ι6 & custom lijsten).

### Reals

We beginnen met reals. Om een getal in een variable te zetten gebruik je het → tekentje. Je kan het → tekentje krijgen door op STO> te drukken. De syntax om een getal in een variable te zetten is dit:
Een voorbeeld:
Dit slaat 18 op in A. Reals kunnen van -9,9999.10$^{99}$ tot 9,9999.10$^{99}$ gaan.

### Strings

Ook strings kan je opslaan op je rekenmachine. De syntax hiervoor is bijna hetzelfde als bij een real:
De strings staan onder: VARS:VARS:String.

### Lijsten

Reals en Strings worden door alle programmas gebruikt op de rekenmachine. Als je bijvoorbeeld een highscore opslaat in het ene programmatje in variable A, en een andere programma zet in variable A een waarde van -10, dan heb je plotseling een highscore van -10 in het ene programmatje staan. Om dit op te lossen heb je lijsten. Lijsten heb je in 2 soorten, de vaste rekenmachine lijsten (ι1 tot ι6) en de lijsten die je zelf een naam kan geven. In een lijst kunnen alleen reals worden gezet. Getallen in een lijst zetten is moeilijker dan getallen in een Real zetten. Om in de lijst te kunnen schrijven of lezen moet je hem eerst opstarten. Dit doe je zo: (De eerste ι in een lijstnaam is een speciale ι en niet de L op je toetsenbord. Je kan de speciale ι vinden in: LIST:OPS)
Allereerst moet je zorgen dat de lijst bestaat. Dit doe je met de optie SetUpEditor uit het STAT/EDIT-menu. Wanneer hier niets achter wordt gezet, worden de lijsten ι1 tot ι6 terug gezet. Met iets erachter wordt de custom-lijst aangemaakt.
Een andere manier is, om de lijst van een aantal regels te voorzien.
Nadat je dit gedaan hebt kan je lezen en schrijven door een gedeelte van een lijst als een Real te zien:
Lezen en schrijven kan dus bijvoorbeeld zo:
Dit is niet de enige manier hoe je lijsten kan maken. Je kan ook de waardes op volgorde zetten zoals dit:
Lijsten beginnen bij getal 1 en kunnen maximaal 999 getallen hebben. Je kan wel bijna een oneindig aantal lijsten hebben, dus dat is op zich geen probleem. Je kan alle MATH functies gewoon gebruiken op lijsten. De functie wordt dan op alle getallen uitgevoerd en je krijgt een nieuwe lijst die je dan weer kan opslaan. Als je bijvoorbeeld een lijst kwadradeert worden alle elementen in die lijst gekwadrateerd.
# Programmeren in TI-Basic/Veelgebruikte codes

Hieronder staan een paar codes die vaak worden gebruikt:

## Scherm instellen

Deze code zorgt ervoor dat een pixel precies een x op een y is.

## Modulus

Omdat de rekenmachine deze belangrijke functie mist moet je hem zelf maken. X is het begingetal en Y is de deler.

## Afronden

Er zijn niet echt duidelijke functies voor afronden. Hieronder staan ze.

### Round
## Toetsaanslag

Om te wachten tot een toets is ingedrukt:
Het nummer van de toets staat nu in variabele K.

## Even Wachten

Als je de GR even wilt laten wachten, kun je deze code gebruiken:
Waar nu '500' staat, kun je natuurlijk een andere waarde invullen. Hoe groter de waarde, hoe langer de GR wacht. Meestal komt de waarde 700 overeen met 1 seconde, maar dit hangt van de hoeveelheid vrij RAM-geheugen af. Hoe meer vrij geheugen, des te sneller de rekenmachine klaar is met het wachten.

## Tekst, letter voor letter op het scherm zetten

Met deze code zet je een bepaalde tekst, letter voor letter op het scherm. Alleen omdat de code nogal lang is, kun je beter het volgende doen: Maak een nieuw programma aan onder de naam 'MTXT'.
Daarin schrijf je de volgende code:
Opmerking: Met 'L1' bedoel ik, List1; die kun je intypen met de toetsen '2nd' en '1'.
Nu maak je weer een nieuw programma'tje aan met een door jouw gekozen naam. Hierin zet je de volgende code:
Je kunt nu het programma testen. Je moet dan niet pgrmMTXT testen, maar het programma dat je als laatste hebt gemaakt.
Je kunt natuurlijk de tekst veranderen, maar je hebt nog meer variaties.
De volgende code geldt in het algemeen:
1. [jouw tekst] Hier kun je je eigen tekst neerzetten.
2. [Bollean (0 of 1)] Hier moet je de waarde 0 of 1 invullen. Deze maakt uit of de tekst in kleine letters verschijnt, of in grote. Zet er 0 neer voor grote letters en 1 voor kleine letters.
3. [x_coördinaat_van_begin_tekst] Hier moet je invullen waar je de tekst wilt hebben. Let op dat het maximum van die waarde bij grote letters 16 is, en bij kleine letters 91. Anders wordt er een foutmelding getoond. Het minumum is bij kleine letters 0 en bij grote letters 1.
4. [y_coördinaat_van_begin_tekst] Hier moet je ook invullen waar je de tekst wilt hebben, maar nu bij de y, dus op welke hoogte. Let op dat ook hier verschillende maxima gelden: bij kleine letters 56 en bij grote 8. Het minumum is bij kleine letters 0 en bij grote letter 1.
5. [snelheid_van_tekst_neerzetten] Hier geef je aan hoe snel de tekst moet verschijnen. Bij de waarde 0 verschijnt de tekst zo snel mogelijk. Hoe hoger je de waarde maakt, hoe langzamer de tekst op het scherm verschijnt.
Je kunt de code elke keer weer opnieuw gebruiken. Je hoeft natuurlijk niet telkens weer de lange code, die je aan het begin van dit kopje hebt ingetypt, in te typen; maar door alleen maar de volgende code te gebruiken:
Tenslotte, het is beter om het op deze manier te doen, omdat je dan ten eerste veel bytes en ten tweede ook veel moeite bespaart: je hoeft maar een klein deel van de code opnieuw in te typen en de rest wordt vanzelf uitgevoerd!
# Programmeren in x86 assembler/Basis
## Basis

    Wanneer je in assembler programmeert dien je te beseffen dat elke instructie 1 op 1 wordt vertaald naar machinecode en je dus heel precies moet weten wat je doet. De assembler controleert vrijwel niets. Alleen of de instructie bestaat en je niet buiten je geheugen raakt. Soms kun je dat laatste (al dan niet gewild) zelfs nog doen. Bij hogere programmeertalen als Basic, Pascal en C zet de interpreter of compiler na de nodige controle je high-level statements om in een aantal instructies die de processor vervolgens kan uitvoeren.