Arbeitsblatt - Wiki Informatik Grundkurs Abi 2017

Werbung
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.
Herunterladen