ASSEMBLER EINSTEIGERKURS (1.Teil) von Frederik Holst Viele von den Lesern werden oft neidisch auf die Assemblerkurse in diesem Magazin geschaut haben, doch wenn man versuchte als TURBO-BASIC Fortgeschrittener davon etwas zu verstehen, dann meißtens nur Bahnhof. Da wird von Bitmanipulation, Speicherverschiebung, Hi und Lowbyte geredet und alle wissen bescheid. Damit die Assemblerecke nicht nur denen vorbehalten bleibt, die sowieso schon fast alles wissen, gibt es ab dieser Ausgabe einen Einsteigerkurs, der es Euch ermöglichen soll, am Ende auch in der Assemblerecke alles (oder fast alles) zu verstehen. Heute will ich mit einem ganz einfachen Beispiel anfangen, bei dem Ihr aber schon die drei wichtigsten Assembler-Befehle kennenlernt. Ich will nur folgenden Befehl umsetzen: POKE 710,0. Erstmal analysieren wir dafür, was die Auswirkungen dieses Pokes sind: Nachdem Ihr die Zeile eingegeben habt, wird der Hintergrund des Textfensters, egal in welchem Grafikmodus, schwarz. Klar, denn wie die meisten wissen, ist 710 die Speicherstelle für die Hinter- grundfarbe. Umgesetzt in Maschinensprache würde dies folgendes heißen: ORG $A800 LDA #0 STA 710 RTS An ähnlichkeiten sehen wir hier die null und die 710, doch der Rest ist Kauderwelsch. Doch nicht mehr lange. Das ORG und das RTS lassen wir erstmal außer Betracht. Interessant sind nur LDA und STA. LDA heißt "Lade den Akku(mulator)". Der Akku ist so etwas wie eine Variable, der man einen Wert zuweisen kann. Indem wir eine Null in den Akku geladen haben, haben wir der "Akkuvariable" praktisch einen Wert, Null, zugewiesen. Nun muß dieser Wert aber wieder irgendwo abgelegt werden. Das erledigt der STA Befehl, STA steht für "Store Akkumulator", der Wert wird also irgendwo gespeichert. Wo, das sagt die Zahl dahinter. Also bei 710. Etwas anderes macht der POKE Befehl ja auch nicht. Man könnte das BASIC Programm auch zum besseren Verständnis so schreiben: 10 A=0 20 POKE 710,A 30 END Das END entspricht in Assembler dem RTS, was für ReTurn from Subroutine steht. Bei Subroutine denken die BASIC Programmierer gleich an GOSUB. Genau sötwas gibt es auch in Assembler, für solche Subroutinen kann man das RTS auch verwenden. In unserem Fall ist das Programm ja nur ein Unterprogramm des Assemblers, mit dem wir das Listing eingeben. Das bewirkt also, daß unser Programm nach getaner Arbeit zum Assembler zurückkehrt. Ich benutze übrigens den ATMAS II, da er den komfortabelsten Editor hat. Nun aber zum ORG: Das ORG ist im Gegensatz zu den anderen Befehlen, auch Mnemonics genannt, eine Direktive. Direktiven sagen dem Assembler, daß er irgendetwas bestimmtes zu tun hat und sind somit bei jedem Assembler anders. Das ORG sagt dem ATMAS, wo das Programm anfangen soll, mehr nicht. Beim Bibo-Assembler würde es ".ORG" heißen. "Wieso den Programmanfang ???" Ja, das ist ein großer Unterschied zu Hochsprachen wie BASIC oder PASCAL. Bei Assembler muß man sich selbst einen Platz suchen, wo das Programm anfangen soll. Das hat den Nachteil der Suche, aber den Vorteil, daß man das Programm gezielt irgendwo hinplacieren kann. Kleine Programme passen nämlich z.B. gut in die Page 6 ab $600. In unserem Beispiel habe ich $A800 genommen, weil man beim ATMAS mit der Tastenfolge ESC U ESC ESC ein Programm ab $A800 starten kann. Apropos starten: Sie können sich den Effekt des Programms entweder mit dieser Kombination oder vom Monitor aus starten ("Monitor" ist nicht das Ding vor dem Ihr gerade sitzt, sondern ein Teil des ATMAS, mit dem man den Speicher untersuchen kann). Das geht so: CTRL+P, damit kommt Ihr in den Monitor. Dann G für Goto und dann A800 für die Startadresse. Wenn es Euch reicht, kommt Ihr mit "E" zurück zum Editor. Ihr seht also, POKE Befehle umzusetzen ist das einfachste auf der Welt (oder auch nicht). Das war's für dieses Mal. Übrigens: Wichtig !!! Wenn IRGENDETWAS unklar ist, sofort den Stift gezückt, Papier 'raus und die Frage oder Anregung aufgeschrieben und an mich, FREDERIK HOLST ULRICH-GÜNTHER STR.101 W-2322 LüTJENBURG abgeschickt. Ich werde die Fragen selbstverständlich in der nächstmöglichen Ausgabe beantworten.