Stap 1: CPU instructies
Voor een CPU geen zinvol werk te verrichten, moet het worden verteld wat te doen. Dit komt in de vorm van instructies. Voor deze klok van de muur zal ik alleen concentreren op de uren om dingen te maken eenvoudige. Dat wil zeggen, we zullen verhogen een variabele met de naam uren en de controle om te zien of haar gelijk aan 11 (we zullen gebruiken basis indexering voor de uren, dus 12 wordt voorgesteld als een 0 0). Als de controle waar is, zullen dan we de variabele terug teruggesteld aan 0. Wij willen niet de code van de bovenstaande verklaring direct in de CPU, omdat we willen dat het algemene doel CPU (anders wij zijn gewoon maken van een klok). Dus, wij voeren een fundamentele instructieset en schrijven van de code van de klok rond deze primitieve instructies (de set instructies uit te voeren zijn bekend als een assembler). Tot slot, we houden de uur-variabele in een Register, dat een term die gebruikt wordt voor een onderdeel van de speciale geheugen gebruikt is voor het houden van gegevens en werken op het. We zullen ook een eenvoudige 1 eenheid (1 bit) geheugenadres gebruiken om te fungeren als een vlag voor de controle-eenheid, en noem deze DTD om persoonlijke redenen (staat voor gewijd aan Dani. Een lang persoonlijk verhaal). Merk op dat deze CPU zal worden geprogrammeerd met de instructies van de klok, maar het kan worden geprogrammeerd met een andere code om een aantal andere dingen doen.
Hier zijn de basisinstructies (assembler) dat we zullen gebruiken:
INCRMENT: Increment registreren A door 1 toe te voegen.
GELIJKE: Als register A gelijk aan een specifiek nummer is, slaat u de volgende instructie.
WISSEN: register A ingesteld op 0, DTD is ingesteld op false
SPRONG: Ga naar een specifieke instructie op een bepaald regelnummer
SET_DTD: DTD ingesteld op true
CHECK_DTD: als DTD geldt, slaat u de volgende instructie.
Hier is de assembler code voor de klok (register A de uren houden zal).
1: CHECK_DTD
2: 5-STAP-SPRINGEN
3: DUIDELIJK
4: JUMP 1
5: TOENAME
6: 11 VAN DE GELIJKE
7: JUMP 1
8: SET_DTD
9: JUMP 1
Lijn 1 controleert als DTD is ingesteld op true (dit wordt gebruikt om aan te geven als we moet opnieuw instellen van het uur). Als zijn waar de we naar lijn 3 springen en het uur in te op 0 en de DTD op false stellen. Als DTD onwaar is dan we doorgaan met de volgende instructie en Spring naar lijn 5. Lijn 5 stappen het uur (register A), terwijl de regel 6 controleren om te zien als het gelijk aan 11. Als register A gelijk aan 11 is, dan moet we springen naar regel 8 en stelt de DTD waar en springen terug naar het begin (lijn 1). Anders gaan we naar het begin. Als we al deze code lopen zodra een uur, vervolgens door het lezen van registreert A, kunnen we vertellen wat is het huidige uur.