EF-II-A5 Arbeiten mit dem Modellassembler Seite 1 von 2 Sequentielle Programmierung mit Modellassemblern Einführung Wir haben gesehen, dass Programmiersprachen auf verschiedenen Ebenen existieren. Dabei gilt: Je weiter die Programmiersprache vom Binärcode der Zentraleinheit entfernt ist, umso komplexer, aber auch mächtiger, wird sie. Programmiersprachen die noch relativ nah an den Maschinenbefehlen dran sind nennt man auch Assemblersprachen. Abbildung 1: Quelle: itwissen.info „Assembler: Bezeichnung für eine maschinenorientierte Programmiersprache. Für jeden Computertyp gibt es spezielle, auf den Befehlsvorrat des Prozessors zugeschnittene Assemblersprachen. Sie unterscheiden sich von den jeweiligen Maschinensprachen dadurch, dass anstelle eines für den Menschen nicht verständlichen Binärcodes die Befehle und Operanden durch leichter verständliche mnemonische Symbole dargestellt und dass einige abkürzende Vereinbarungen (Zusammenfassen von Befehlen zu Makros oder Speicherreservierungen) zugelassen sind. Bedeutet z. B. die binäre Zeichenfolge ‚10111000 00001001‘ in der Maschinensprache, dass zum Akkumulator die Zahl 9 hinzuaddiert werden soll, so formuliert man diesen Befehl in einer Assemblersprache etwa so: add A, 9 […]“ (DUDEN Informatik A-Z, Claus, Schwill et. al., 4. Aufl., Mannheim 2006) Befehlssatz des Modellassemblers 3.1 (Auszug) n = direkte, [n] = indirekte Adressierung Adressierung auch mit Indexregister (X) ADD n oder ADD [n] CAL n CLA DEC DIV n oder DIV [n] INC INP JEQ n JGT n JLT n JMP n JNE n LAD n MUL n NEG OUT RET Addiere Speicherinhalt zum Akku Sprung zum Unterprogramm in Zeile n Loesche Akku Verringere Akku um eins Dividiere ganzzahlig Akku durch Speicherinhalt Erhöhe Akku um eins Eine Ziffer von Tastatur in Akku Springe zur Zeile, falls Akku = 0 Springe zur Zeile, falls Akku > 0 Springe zur Zeile, falls Akku < 0 Springe unbedingt zur Zeile Springe zur Zeile, falls Akku ≠ 0 Lade Speicherinhalt aus Zelle n in Akku Multipliziere Akku mit Speicherinhalt Akku * (-1) Akku im Fenster anzeigen Ende des Unterprogramms, Rücksprung EF-II-A5 STO n oder STO [n] STP SUB n oder SUB [n] Arbeiten mit dem Modellassembler Seite 2 von 2 Lade Speicher mit Akkuinhalt Beende Programm Subtrahiere Speicherinhalt vom Akku Aufgaben 1. Schreibe ein Programm, das vier vorgegebene Zahlen (vor Start des Programms manuell in den Datenspeicher eintragen) addiert, das Ergebnis speichert und anschließend im „Fenster“ ausgibt. 2. Verändere das Programm aus 1. so, dass auch alle Zwischenergebnisse in negierter und nicht negierter Form gespeichert werden. 3. Verändere das Programm aus 2. so, dass nun mit vier beliebigen Zahlen (nach Start des Programms einzugeben) gearbeitet werden kann. 4. Schreibe ein Programm, welches das ganzzahlige arithmetische Mittel von manuell einzugebenden Zahlen bestimmt. 5. Mit den Sprungbefehlen (JEQ, JGT, JLT, JMP, JNE) kann man Teile eines Programms wiederholen lassen. Schreibe ein Programm welches sichtbar (Ausgabe aller Zwischenergebnisse im „Fenster“) mit Hilfe von Sprungbefehlen von 1 bis 100 zählt. 6. Ändere das Programm aus 5. so, dass (sichtbar) von einer beliebigen Zahl X bis zu einer beliebigen Zahl y gezählt wird. Es gilt x<y 7. Die Fähigkeit zur selbstständigen Multiplikation erhielten Assembler erst später. Schreibe ein Programm, welches zwei beliebige Zahlen multipliziert ohne den Multiplikationsbefehl zu verwenden. 8. Ändere das Programm aus 6. so, dass (sichtbar) von einer beliebigen Zahl x zu einer beliebigen Zahl y zählt und dabei selbst entscheidet ob hoch- oder heruntergezählt werden muss. Hinweis: Die Aufgaben 1-6 sind für alle Pflichtaufgaben. Die Aufgaben 7 und 8 sind „Kopfnüsse“ für alle, die schnell mit den vorherigen Aufgaben fertig sind und noch etwas knobeln möchten.