#Klooienmetcomputers

De basis van de 8080: registers en de ALU

Arnout van Kempen over rommelen in een digitale wereld.

Aan de binnenkant bestaat een 8080, zoals de Von Neumann-architectuur voorschrijft, uit een Arithmetic Logical Unit, een ALU, een controlunit en wat intern geheugen. De ALU doet grofweg al het rekenwerk en het uitvoeren van logische bewerkingen. De controlunit houdt bij waar de volgende programma-instructie is te vinden, leest die instructie in en voert deze uit. Het interne geheugen bestaat uit zeven locaties van 8 bits, enkele statusbits die samen de Flags of vlaggen worden genoemd en opslag voor de huidige instructie. De zeven locaties worden registers genoemd en hebben de namen A, B, C, D, E, H en L. Daarnaast zijn er nog specifieke 16 bits-registers, de Stack Pointer (SP) en de Program Counter (PC). A is afkorting voor accumulator. Dit is het register dat electronisch rechtstreeks aan de ALU is gekoppeld en daarmee het register waarmee het meeste rekenwerk moet worden gedaan. De andere algemene registers kunnen als enkelvoudig 8 bits-register worden gebruikt, maar ook in paren als 16 bits-registers: BC, DE en HL. De keuze voor HL is er in gelegen dat het een geheugensteuntje is voor wat de hoge en de lage byte in het 16 bits-woord zijn.

Geen echt register, maar een programma-abstractie is het register M. Waar in een opdracht M voorkomt, verwijst dit naar de inhoud van het geheugenadres dat wordt aangewezen door HL. Een andere aanduiding daarvoor is (HL), wat dus ook betekent: de inhoud van het geheugenadres waar HL naar verwijst.

De SP is een slimme pointer voor het opslaan van gegevens op een stack. Een onderwerp dat we in C en Rust al uitgebreid tegenkwamen. De stack is vooral handig voor de dynamische opslag van gegevens, bijvoorbeeld bij het aanroepen van een interrupthandler waar het lopende programma direct alle data ergens kwijt moet (de stack) om die weer terug te halen bij terugkeer.

De PC tenslotte is niets anders dan het adres van de volgende instructie. Na iedere instructie fetch wordt de instructie gedecodeerd voor uitvoering en intussen wordt PC met 1 verhoogd. Na uitvoering van de instructie kan dan de volgende instructie worden opgehaald.

PC en SP werken samen bij de aanroep van een subroutine of een interrupthandler. Bijvoorbeeld: als een programma de instructie   CALL 0005h tegenkomt, dan wordt de PC op de stack geplaatst, 0005 wordt in de PC geplaatst. En als vervolgens de instructie  RET wordt gevolgd, dan wordt het adres van de stack weer in PC geplaatst en SP wordt weer verlaagd.

De vlaggen ten slotte, werken als volgt:
S is 1 als de laatste berekening een negatieve uitkomst had.
Z is 1 als de laatste berekening als uitkomst nul had.
P is 1 als de laatste uitkomst een even aantal 1-en (binair) opleverde.
C is 1 als bij de laatste optelling een carry plaatsvond.
AC werkt als C, maar dan voor BCD gecodeerde berekeningen.

 Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.

Arnout van Kempen di CCO CISA is directeur compliance & risk bij aaff, de fusieorganisatie van Alfa en ABAB. Hij schrijft op persoonlijke titel.

Gerelateerd

9 reacties

Ron Heinen

@Leen de Vries RA

Nu je bezig bent over rekenmachines: Als je kijkt op de 1e foto op

https://photos.app.goo.gl/APRPQQ3oKuEBJrmo7

zie je 3 rekenmachines.

De eerste, de HP-65, is bij mijn weten het eerste te programmeren apparaat met een microprocessor verkrijgbaar voor consumenten, zie

https://drive.google.com/file/d/1odvPkTheduswA8hecLxJpM_NNkmFhE9H

De derde rekenmachine is de 2e versie van de HP Prime.

En hier zit een nederlandse NXP processor in!

Arnout van Kempen

Ja, de Z80 heeft de tijd van de 8-bits computers heel goed overleefd. Het is tot de dag van vandaag een CPU die in embedded systemen gebruikt wordt, en ook voor rekenmachines prima bruikbaar.

Leen de Vries RA

Wellicht ook aardig is het feit dat de programmeerbare rekenmachines zoals bijvoorbeeld de TEXAS TI 83/84 te programmeren zijn met de assemblertaal van de Z80. Oftewel de processor in dat soort rekenmachines is de Z80!!

Arnout van Kempen

Leen, ik ben het 100% met je eens. De Z80 is een bijzonder fijne CPU met het mooie van de 8080 en dan meer. Ik heb er ook assembler op geleerd :)

Ron Heinen

@Leen de Vries RA

Natuurlijk, er gaat niets boven "the real thing". Op de link

https://photos.app.goo.gl/APRPQQ3oKuEBJrmo7

kun je wat foto's vinden van mijn eerste Microcomputers.

Zoals je ziet is hier ook een TRS80 met de Z80 bij.

Als je goed kijkt op de foto, dan zie naast het display de Editor/Assembler staan.

Hiermee heb ik Z80 assembler geleerd.

Leen de Vries RA

Top die filmpjes maar the real thing is werken met de “Microprofessor” kit!!

Ron Heinen

@Leen de Vries RA

https://www.youtube.com/watch?v=j00AULJLCNo

is een Computer History Museum Presentatie.

Een van de presentatoren is Federico Faggin die de Z80 heeft ontwikkeld en op de markt gebracht,

https://nl.wikipedia.org/wiki/Z80

Leen de Vries RA

Voor wie echt met de basis van microprocessoren aan de gang wil raad ik de Z80 aan.
Heel erg leerzaam is dit te doen met de ontwikkeling omgeving “Microprofessor” .

Ron Heinen

Je schrijft: "...zoals de Von Neumann-architectuur voorschrijft..."

Deze architectuur is een implementatie van een Turing Machine gedefinieerd door Alan Turing.

Een film welke weergeeft hoe Alan Turing tijdens de Tweede Wereld Oorlog conform dit concept een machine heeft ontworpen en gemaakt waarmee de duitse Enigma versleutelings machine gekraakt is kun je zien op:

https://tinyurl.com/muf3zeae

De inschattingen zijn dat hiermee de tweede wereld oorlog met jaren ingekort is.

Reageren op een artikel kan tot drie maanden na plaatsing. Reageren op dit artikel is daarom niet meer mogelijk.

Aanmelden nieuwsbrief

Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.