Cursus ML voor MSX (1) Genic Clubguide, 00-00-00 - Met toestemming overgenomen van Future Magazine #8 - C U R S U S M L V O O R M S X (1) ========================================== Ofwel een cursus machinetaal voor beginners. Bij het programmeren van machinetaal programma's is het eigenlijk een must om te werken met een zogenaamd assembler programma. Een assembler stelt u in staat om in de assembler taal te programmeren, waardoor het voor u een stuk makkelijker wordt om een programma in machinetaal te schrijven. Deze cursus is bedoeld om mensen die weinig van machinetaal afweten de beginselen van deze taal bij te brengen. In deze cursus willen we de volgende dingen opnemen - Een uitvoerige uitleg van de microprocessor, de Z80 - De 3 belangrijkste talstelsels, Binair, Decimaal en Hexadecimaal - Een bespreking van het grootste gedeelte van de Z80 instruktieset. - Alle registers en indexregisters van de Z80 - het Vlag register - Een overzicht van de geheugenindeling van de MSX(2) - Een bespreking van de MSX2 videochip, de V9938 - En tenslotte een compleet overzicht van alle MSX2 ROM-BIOS routines (inclusief het SUB-ROM). WAAROM MACHINETAAL? Het antwoord hierop is vrij simpel. BASIC programmeurs zullen vaak te kampen hebben met de traagheid van deze taal. Dit is ook niet zo verwonderlijk want de BASIC interpreter vertaalt eerst elke regel naar ML voordat hij die regel uitvoert. Dit vertalen neemt erg veel tijd in beslag. Daarom zul je ook niet zo snel een database of iets dergelijks geschreven in BASIC tegenkomen. In machinetaal gaat alles een stuk sneller (soms wel een factor 50) want de computer hoeft niet eerst alles te gaan vertalen naar machinetaal, want dat heeft de assembler immers al gedaan. Een ander nadeel van BASIC is dat je niet het onderste uit de computer kunt halen, omdat er gewoon niet genoeg instructies voor aanwezig zijn. In machinetaal kun je wel het onderste uit de computer halen, want je spreekt de chips rechtstreeks aan. Het oogt natuurlijk ook veel professioneler om een programma in machinetaal te schrijven. Al deze redenen zijn voldoende om in machinetaal te programmeren in plaats van BASIC. Er is slechts ‚‚n echt voordeel dat BASIC heeft t.o.v. machinetaal, en dat is de moeilijkheidsgraad. Een programma schrijven in BASIC is gemakkelijker dan een programma schrijven in machinetaal. WELKE ASSEMBLER? Er zijn veel verschillende assemblers verschenen door de jaren heen die nogal verschillen in functies en gebruiksvriendelijkheid. Waar u op moet letten bij de keuze van een assembler is de snelheid van het assembleren, de flexibiliteit van de assembler, en of er ook een dis-assembler bij zit. De beste assemblers zijn DEVPAC 80 van Hisoft en WB-ASS2 van Green. Ook is er ZAS, voor die mensen die niet aan de andere assemblers kunnen komen. Deze assembler is een beetje langzaam, maar wŠl public domain, in tegenstelling tot die andere twee. ZAS staat in MCM nummer 38. DE Z80 MICROPROCESSOR De microprocessor van de MSX is de Z80A processor. De Z80 is een 8/16 bits processor. Dat wil zeggen dat hij 8 of 16 bits registers heeft en een 8 bits brede databus. Zonder deze processor kan de computer zijn werk niet doen, dit maakt ook dat deze chip de belangrijkste is van de computer. De Z van Z80 komt van Zilog Inc. De 80 is een erfenis van een Intel voorloper, de 8080, een veel gebruikte processor in PC's. De Z80 is eenvoudig te programmeren en heeft ook niet zo'n grote instruktieset. TALSTELSELS Zoals u waarschijnlijk reeds weet, is uw MSX computer in staat om met verschillende talstelsels te werken. Het stelsel wat we normaal altijd gebruiken is het zogenaamde tientallig stelsel, ook wel het decimale stelsel genoemd. Daarnaast zijn er ook nog twee andere belangrijke talstelsels, zoals het Hexadecimale en het Binaire stelsel. Ook is er nog het Octale stelsel, maar daar wordt bij MSX bijna geen gebruik gemaakt. De computer zelf gebruikt alleen het binaire stelsel. Als u in BASIC programmeert worden alle instrukties door de interpreter omgezet naar binaire codes, die voor de computer begrijpelijk zijn. Dit binaire stelsel is echter voor mensen niet eenvoudig te begrijpen, want een binair getal bestaat uit acht cijfers die 0 of 1 kunnen zijn. Bv. 00001001. Dit is voor mensen moeilijk te begrijpen. Niemand kan in ‚‚n oogopslag zeggen dat 00001001 hetzelfde is als het getal 9. Hiervoor is het Hexadecimale stelsel ontworpen. Dit stelsel is voor mensen iets gemakkelijker te begrijpen. Bij het Hexadecimale getallensysteem maken we gebruik van het grondtal 16 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F). In BASIC moeten de Hexadecimale getallen vooraf gegaan worden door "&H". Bij het gebruik van een assembler wordt er meestal ook "&H" gebruikt, of er wordt een H achter het hexadecimale getal gezet. Soms gebruikt men ook # voor het getal, maar dit komt minder vaak voor. Vb. FFH , &HFF, #FF (255 Decimaaal, 11111111 Binair). Maar bij de meeste assemblers kunt u ook gebruik maken van het gewone Decimale stelsel. Hier hoeft dan ook geen teken aan vooraf te gaan. De volgende aflevering zal de registers en een stukje van de instruktieset van de Z80 behandelen. Dit komt dus, als alles mee zit op Sunrise Magazine #1 (jippie!). Jelle Bosma |