Tja ik heb dit allemaal een beetje gevolgd. Iets dat je moet leren door een paar maanden lessen te volgen en oefeningen te maken leer je nu eenmaal niet in drie dagen. Ik ben begonnen op een zx81 bij een vriendje toen ik op de mavo zat. Ik was 16 ofzo. Later, 'ik was toen 17' op een ZX spectrum kwam ik niet uit de voeten met basic en heb ik mijn eerste stappen gezet met assembly.
Internet was er niet. Alleen een boek uit de bieb en wat electuurs en radiobulletins. Ook geen leraar die in de les verteld wat een interrupt is. Daarmee maakt ik toch mijn eerste looplicht (nightrider natuurlijk) onder interrupt. Later ook een een soort seriele poort met bitbanging. Alles zonder echte assembler. Gewoon een kartonnen kaartje met de opcodes en de vertaling naar HEX getallen. Met de hand en potlood en gum coderen. Ook mijn lego auto bestuurde ik ermee. Mindstorms was er nog niet.
Onze TS weet waarschijnlijk niet dat de meeste mensen hier op deze manier bezig geweest zijn en dat dat veel moeite koste. Even naar de bekende weg vragen op internet kon niet. Alleen vind geen van deze mensen het een moeilijk vak. Het is namelijk geheel niet moeilijk. Het is een logische puzzel die zichzelf oplost door er stap voor stap door heen te gaan. Het vak analoge elektronica is veel en veel lastiger. Helemaal als je iets goeds wil ontwerpen dat lange tijd goed moet blijven werken.
En met de moderne tools is het helemaal makkelijk gemaakt. Voor elke cpu is er wel ergens een handige compiler, assembler of wat dan ook te vinden die allerlei lastige kwesties met een paar simpele vragen voor je oplost.
De TS heeft natuurlijk niets aan dit verhaal maar je zult de code pas begrijpen als je het zelf kunt maken. Stelen van internet en paar pleisters hier en daar om het voor de specifieke schoolvraag werkend te krijgen heeft geen educatieve waarde. Als jouw docent mondeling vragen gaat stellen over het programma val je bij de eerste vraag al door de mand.
Als ik de ts was zou ik in elk geval uitzoeken hoe een interrupt werkt. Waarschijnlijk heeft de ts daar allang geleden een oefening voor gekregen. Die oefening zou ik nog maar eens even doen en goed doornemen.
Over het algemeen is een programma opgebouwd uit een paar delen.
Je begint met een stuk initialisatie. Je stelt daar alle bits, registers, poorten enz in. Geeft alle tellers hun begin waarde. In een hogere programmeertaal declareer je daar alles. In assembly kan dat niet. Daar heb je alleen een hele berg genummerde vakjes. En je getalletje zet je in een van die vakjes. Het nummer (of adress) van dat vakje kun je dan als een soort van variabele gebruiken.
Daarna komt de main routine. De cpu doet daar het gewone dagelijkse werk. Vaak is dat helemaal niets. Hij staat te wachten.
Dan heb je de z.g. interrupt service routine. Daarin worden de interrupts afgehandeld en verwerkt.
Er worden het liefst geen wacht lussen gebruikt. Directe sprongen worden ook vermeden. Liever dingen als jump subroutine gebruiken. Nooit uit een subroutine springen. Dan gaat je stack in de war. In sommige gevallen moet je misschien zelfs een interrupt blokkeren of zelfs in de wacht zetten.
Ik weet niet of je je opdracht mondeling moet verdedigen. Daar was dacht ik wel sprake van bij die andere knul. Maar een vraag van de docent hierover? En je valt keihard door de mand als je niet exact weet hoe dit werkt.
Desondanks hoop ik wel dat je haalt en er zoveel van leert dat je je vakken serieuzer gaat volgen. Want ik vermoed dat je nog een paar vakken hebt met een probleem. Het programmeren van een cpu in assembly is echt geen rocketscience, maar heel goed te doen als je gewoon je opdrachtjes maakt en een beetje oefent in het aan het examen voorafgaande semester.
Het programmeren in assembly kan heel erg leuk zijn en in sommige gevallen een must. Je zit echt met de basisbouwstenen van de digitale technologie te knutselen. In bepaalde gevallen vervaagt de grens tussen analoog en digitaal dan zelfs.
Ikzelf ben altijd bij die vage grens tussen analoge en digitale techniek gebleven. Een grens waar niet heel mensen op bezig zijn en die door het toenemen van de rekenkracht alleen maar vager gaat worden. Een moderne sdr radio zit toch heel anders in elkaar dan een conventionele radio. Er zijn dingen mogelijk geworden die eerder gewoon echt niet konden. En het zou me niets verbazen dat er ooit weer een omslag van digitaal naar analoog gaat komen. Beide technieken zullen dan naast elkaar blijven bestaan.
suc6 met je examen