Voorwoord en inleiding van:
Informatica/Hardware/Software 4MK

Voorwoord

In zeer veel beroepen is de computer een niet meer weg te denken hulpmiddel. In de meeste beroepen gebruiken we hierbij alleen software die we niet zelf hebben ontwikkeld. Het beroep van elektrotechnicus vormt een van de uitzonderingen op deze regel. Wij gebruiken de computer niet alleen om met standaard-software bijvoorbeeld printkaarten te ontwerpen, maar van ons wordt ook verwacht dat we zelf software kunnen ontwikkelen.

Dit kan gaan om software die we gaan gebruiken op een PC. Bijvoorbeeld een programma om via de PC een meetinstrument uit te lezen en de meetgegevens netjes in een grafiek weer te geven. Maar het kan ook gaan om software die we gaan gebruiken op een computer(tje) dat is ingebouwd in een ander apparaat. Bijvoorbeeld een programma dat ervoor zorgt dat de was die we in de wasmachine doen, er na een druk op de knop (en enig geduld) weer schoon uitkomt. Dit soort software noemen we embedded software. Ook de PC gebruiken we steeds meer om andere apparaten en machines te besturen.

Dit soort software kun je alleen maar goed ontwerpen als je een gedegen kennis hebt van de hardware waarop het programma uiteindelijk gaat draaien. (Iets wat veel informatici juist proberen te vermijden.)

In dit boek wordt behandeld:

Hierdoor begrijpen we ook beter hoe een Pascal-vertaler (compiler) een Pascal-programma kan omzetten in een door de computer uit te voeren assembler-programma.

Als processor is gekozen voor de 8086 van Intel. Dit betekent dat de assembler programma's uit dit boek op een PC kunnen draaien. De PC bevat weliswaar een veel complexere processor zoals een Pentium II, maar deze processor kan ook machineprogramma's voor een 8086 uitvoeren.

Overigens beperkt dit boek zich tot het small memory model. In dit model neemt het programma, de stack en het datageheugen elk niet meer dan 64 Kilobytes geheugenruimte in beslag. De segmentregisters van de 8086 worden in dit boek dus niet uitgebreid behandeld.

De Pascal-programma's zijn geschreven en getest met Borland Pascal versie 7.0 voor Windows. De assemblertaal programma's zijn geschreven en getest met Borland Turbo Assembler (TASM) versie 3.2.

Elke PSD in dit boek is gemaakt met het programma NSD Editor. Dit programma is gemaakt door Marcel Kalt een (ex-)student van de Universiteit van Freiburg in Zwitserland. Dit programma is gratis te gebruiken en via Internet verkrijgbaar. Klik hier voor meer informatie.

De voorbeelden in dit boek hebben bijna allemaal iets te maken met elektrotechniek. Zoveel mogelijk voorbeelden laten zien hoe we de computer kunnen gebruiken om apparaten en machines aan te sturen. Daarbij gebruiken we de parallelle poort van de PC om signalen uit de buitenwereld in te lezen en om apparaten in de buitenwereld aan te sturen.

Een eenvoudig kastje met enkele leds en schakelaars is bij het praktisch uitvoeren van de voorbeelden erg handig. Het fabriceren van zo'n kastje is voor een elektrotechnicus (zoals jij) natuurlijk een fluitje van een cent. Klik hier voor meer informatie.

Veel Engelse termen die in de praktijk van de computertechniek gebruikt worden, zijn bewust niet vertaald. Dit zorgt ervoor dat dit boek goed aansluit op veelal Engelse naslagwerken en informatie die via Internet beschikbaar is.

Graag wil ik iedereen die bij het tot stand komen van dit boek heeft geholpen daarvoor bedanken. Zelf heb ik leren programmeren van Harm Jongsma en Co Honhoff, hun enthousiasme heeft mij (indirect) geïnspireerd bij het schrijven van dit boek.

Tot slot wil ik je nog veel programmeerplezier toewensen.

Harry Broeders, december 1998, Oude Tonge

1 Besturen met de PC

In dit hoofdstuk leren we:

2 Nu alleen nog het programma

In dit hoofdstuk leren we:

3 Lezen, schrijven en onthouden

In het vorige hoofdstuk hebben we geleerd hoe we vanuit een Pascal-programma gegevens van de parallelle poort van de PC kunnen inlezen of gegevens naar deze parallelle poort kunnen sturen.

In dit hoofdstuk leren we:

4 Rekenen

In het vorige hoofdstuk hebben we geleerd hoe de PC gegevens kan inlezen, onthouden en weer wegschrijven.

In dit hoofdstuk leren we hoe de PC ook rekenkundige en logische berekeningen op deze gegevens kan uitvoeren. We gebruiken de PC dan als een programmeerbare rekenmachine.

5 Beslissen en herhalen

Tot nu toe hebben we geleerd:

Om problemen op te lossen is het vaak nodig om beslissingen te nemen en om bepaalde acties te herhalen totdat aan bepaalde voorwaarden is voldaan. In dit hoofdstuk behandelen we beslissings- en herhalingsinstructies die het nemen van beslissingen en het herhalen van acties in een programma mogelijk maken.

6 Delegeren, ofwel verdeel en heers

We hebben nu voldoende geleerd om kleine programma's in Pascal of in 8086-assemblertaal te ontwikkelen. Als we echter ingewikkelde problemen met de computer willen oplossen, lopen we al snel vast. We hebben een algemene methode nodig waarmee we grotere problemen kunnen aanpakken.

Een veelgebruikte methode om een groot probleem aan te pakken is het verdelen van dit probleem in verschillende stukken. Deze methode noemen we functionele decompositie. In de programmeertaal Pascal is het ook mogelijk om een programma te verdelen in een aantal stukken. Deze stukken noemen we functies en procedures. Het gebruik van procedures en functies bij het programmeren sluit mooi aan bij de functionele-decompositie-methode voor het oplossen van problemen.

Ook een assembler-programma kunnen we verdelen in een aantal stukken. Deze stukken noemen we in assemblertaal subroutines. De CPU heeft een aantal faciliteiten speciaal voor het gebruik van subroutines.

In dit hoofdstuk leren we:

7 Structureren

In het vorige hoofdstuk hebben we geleerd hoe we de code van een programma netjes kunnen indelen (structureren) door functies en procedures te gebruiken. Om het overzicht te behouden is het in een programma met meerdere gegevens handig om ook de gegevens te structureren.

In dit hoofdstuk leren we:

8 Onderbreken

In dit hoofdstuk leren we:

9 Uitbreiden en afronden

In de vorige hoofdstukken hebben we gezien hoe we de parallelle poort kunnen gebruiken om signalen vanuit de PC naar de buitenwereld te sturen. Ook hebben we gezien hoe we de parallelle poort kunnen gebruiken om signalen van de buitenwereld in de PC te lezen. In de praktijk komt het vaak voor dat we meer parallelle signalen moeten aansturen of inlezen dan met de parallelle poort mogelijk is. We kunnen dan insteekkaarten gebruiken.

In dit hoofdstuk leren we: