---------------------------------------›› Assembler Kurs Folge II, Teil II›› (C) 1986 by C.C. Damata››---------------------------------------›››Das eigentliche Programm:›››1. Unmittelbare Addressierung:› (immediate addressing)››Diese Addressierungsart wird immer be-›nutzt, wenn konstante Werte verarbeitet›werden muessen.›z.B: LDA #0›Dieser Befehl veranlasst den Computer›den Wert 0 in den Akkumulator zu laden.›Gegenbeispiel : LDA 0›Dieser B. (Befehl) veranlasst den C.›(Computer) den Wert, der in der Adresse›0 steht,in den Akkumulator zu laden.›Das "#" ist also das Erkennungszeichen›fuer die unmittelbare Adressierung.›Folgende Befehle sind fuer unmittelbare›Adressierung zulaessig:››LDA›LDX›LDY››ADC (addiere mit Carry-Flag)›SBC (subtrahiere)››CMP (Vergleiche (Compare)›CPX›CPY››sowie die logischen Operatoren AND,ORA,›EOR››Auf die Rechen-,Vergleichs und Logic-›befehle werden wir spaeter genauer ein-›gehen.››››› Die absolute Adressierung:› (absolute adressing)› ---------------------------------››z.B: LDA 710››Hier wird der Wert, der in 710 ge-›speichert ist in den Akkumulator ueber-›tragen.›Die Werte , die mit der absoluten Adr.›verarbeitet werden muessen immer›groesser als 255 sein.›Alle Werte , die kleiner oder gleich›255 sind werden mit der ›› ZERO PAGE Adressierung››verarbeitet (z.B LDA 82).››Nun werden sich einige fragen, was der›Unterschied nun soll. Der Unterschied›liegt einfach darin, dass fuer die›absolute Adressierung 3 Byte und fuer›die Zero Page Adr. nur 2 Byte benoetigt›werden:››Assembler Maschinencode›Befehl››LDA 256 $AD $00 $01››LDA 255 $A5 $FF››Wenn wir mit einem Assembler pro-›grammieren, ist dieses nicht ganz so ›wichtig, da der Assembler die unter-›schiedlichen Adressierungsmodi selbst-›staendig erkennt.!›››---------------------------------------›In der naechsten Ausgabe werden wir ›eine Uebersicht ueber saemtliche›Befehle und deren Adressierungsmodi›bringen.›---------------------------------------››Natuerlich gibt es wesentlich mehr›Adressierungsmodi. Aber wir glauben,›dass es wenig Zweck hat, gleich alle›vorzustellen.›Wir werden speziellere Adressierungs-›modi spaeter immer gleich am›praktischen Beispiel zeigen.›››Moegliche Befehle fuer absolute Adr.›und Zero Page Adr.››LDA›LDX›LDY››STA›STX›STY››ADC›SBC›INC›DEC››alle Vergleichs- und Logicbefehle››JMP (îõò absolute Adr)›JSR ( " " " )››alle SHIFT Befehle, die spaeter er-›klaert werden.››Wir sehen, dass sehr viele Befehle ›fuer die absolute Adr. und Zero Page›Adr. ausgelegt sind.›Diese Adressierungsarten und wie auch›die unmittelbare sind ersteinmal die›grundlegenden Arten der Adr.›Es folgen Beispiele...››››Anwendungsbeispiele fuer die absolute ›und Zero Page Adressierung und die›Benutzung des DEBUGers:››Aufg.: Die Bildschirmfarbe ist auf› weiss (Wert 15) zu setzen.› Der linke Rand im Editor soll› 2 Zeichen nach links geschoben› werden, so dass 40 Zeichen pro› Zeile erreichbar sind.›› 5 .OPT OBJ ; IN DEN SPEICHER›10 *=$5000 ; Startadr.›20 ;›30 LDA #15 ; UNMITTELBAR›40 STA 710 ; ABSOLUT›50 ;›60 LDA #0 ; UNMITTELBAR›70 STA 82 ; ZERO PAGE›80 ;›90 BRK ; = STOP›››Ist das Prg. eingegeben, so soll es›mit 'ASM' assemblieren.›Danach gehe man mit 'BUG' in den De-›bugger und starte das PRG mit:›› G5000››Nun sollte der Bildschrm weiss und der›Cursor çáîú links sein (wie in Basic›nach POKE 82,0).››Wenn man jetzt eine andere Farbe›wuenscht, so muesste man jetzt wieder›zurueck in den Editor, den ent-›sprechenden Bef. (LDA #15) auf z.B.›LDA #16 aendern und das gesamte Prg.›noch einmal assemblieren.›Aber eigentlich ist ja nur eine Zahl›im gesamten Prg. geaendert worden. Hier›hilft uns dann der Debugger.›Wir schreibrn also:››C5001<10››Die 10 ist HEXadecimal und hat den ›DECimalen Wert 16.›(Beachte: Im DEBUGGER muessen alle Ein-›gaben in HEX gemacht werden.)››Wieso muss eigentlich Adr $5001 ge-›aendert werden ???:››Im Quelltext ist angegeben, dass $5000›Startadr ist.›LDA #16 als unmittelbarer Bef. belegt›zwei Bytes.›Also steht in $5000 der Bef. LDA ($A9).›In $5001 steht dann der Wert 16. So ›muss also $5001 geaendert werden.›Anderfalls muesste die Aenderung im›DEBUGGER so lauten:››C5000