Assembler Vortrag
Gliederung:
1.Definition und Erläuterung des Begriffs Assembler
2.Was man mit dem Assembler machen kann und was der Assembler kann
3.Assembler Befehle und Erläuterungen dazu
Assemblerdefinition und Erläuterung
Definition laut Lexikon: engl. Übersetzungsprogramm eines Computers, das ein in
Assemblersprache geschriebenes Programm in
Maschinensprache
Übersetzt.
Assemblersprache: Eine ebenfalls als Assembler bezeichnete, maschinenorientierte
Programmiersprache
Unterschied zwischen Assembler und Maschinensprache ist, das ein Computer nur die
Maschinensprache versteht. Darunter kann man sich lange Folgen von Nullen und
Einsen vorstellen, die intern vom Rechner in Form von Spannungs- und
Magnetisierungsimpulsen. Eine Solche Sprache ist selbst für absolute Computerfreaks
kaum handhabbar, deshalb hat manden Assembler eingeführt. Hierbei werden
diese Nullen und Einsen, durch einen symbolischen Namen ausgedrückt.
Bits und Bytes: Bits sind die kleinste darstellbare Informationseinheit; ein Byte
besteht aus
jeweils 8 Bits
Programmiersprache wie C++, Delphi und Turbo Pascal enthalten einen Quelltext,
wie z.B.
Diesen:
Turbo Pascal
programm vortrag;
uses wincrt;
var a,b,c :Integer;
begin
writeln('Dieses Programm addiert ihnen zwei Zahlen');
writeln('Bitte geben sie die erste Zahl ein: ');readln(a);
writeln('Bitte geben sie die zweite Zahl ein: ');readln(b);
c:=a+b;
writeln('Die Summe beider Zahlen ist:',c);
end.
(Grafik 1)
Dieser Quelltext wird von einem Compiler in die Maschinensprache-Assembler
umgesetzt.
Hierbei wird der Quelltext analysiert(also Interpretiert) und die komplexen
Hochsprachenbefehle in die viel einfachere Maschinensprache Umgesetzt, ohne dass
der Programmierer mit Details über den Ablauf konfrontiert wird oder er die
Möglichkeit hat einzugreifen während des Vorgangs.
Im Gegensatz zu diesen Programmiersprachen besteht ein Assemblerprogramm nicht
aus komplexen Befehlen, sondern aus einfachen Kürzeln, die eine direkte
Entsprechung in der Maschinensprache des Computers besitzen. Demzufolge wird ein
Assemblerprogramm bei der Umwandlung in Maschinensprache nicht analysiert und
Umgewandelt, sondern nur it einer einfachen Umsetzungstabelle in
Maschinensprache überführt .Dadurch hat der Assembler Programmierer die volle
Kontrolle über den Computer, ohne den Zwischenschritt über den Compiler.
Beim Programmieren werden verschiedene Zahlensysteme angewendet. Dies hat den
Sinn, dass sich manche Zusammenhänge im richtigen Zahlenformat leichter
erschließen. Es gibt das dezimale Zahlensystem(Es ist das Zahlensystem das jedem
seit der Grundschule geläufig ist, es beinhaltet die Zahlen 0-9).Dann das binäre
Zahlensystem (beinhaltet die Zahlen 0-1).Und das Hexadezimalsystem(Beinhaltet die
Zahlen 0-F).Nicht nur die Hochsprachen Programme, sondern auch Assembler kann
mit allen umgehen.
Der Assembler kennt mehrere Möglichkeiten um Zahlen Anzugeben bzw. zu
Adressieren
Das Angeben von Konstanten: -Konstanten werden mit einem # davor
gekennzeichnet
-Als Beispiel.: Die Zahl # 231(Dezimalsystem)
#0E7h(Hexadezimalsystem)
#11100111(Binärsystem)
(Grafik 2)
Adressierungsmöglichkeiten:
1.Direkte Adressierung: Die direkte Adressierung geschieht durch die Angabe der
Nummer
des gewünschten Bytes oder über ein vorher im
Assembler
festgelegtes Symbol. Um Beispielsweise die Speicherstelle
10
anzusprechen, muss man also die Nummer 10 im
Programmquelltext
angeben. Oder die Nummer wurde vorher mit einem
Namen belegt,
den man dann einfach im Programmquelltext angeben
muss.
Für den Assembler ist es gleichgültig, ob eine Adresse als
Nummer
oder über den Umweg des Symbols bzw. Namens
angegeben wird.
Der Vorteil der Anwendung eines Symbols bzw. Namens
ist, dass der
Quelltext viel übersichtlicher wird.
2.Indirekte Adressierung: Diese ist nur bei wenigen Registern und Befehlen möglich.
Es wird wie folgt angegeben: R1,hierbei wird nicht der
Registerinhalt, sondern die Nummer der Speicherstelle,
deren Inhalt
im Register steht angegeben. Enthält R1 beispielsweise
10 und steht
in der Speicherstelle 10 der Wert 38, so gibt R1 den
Wert 38
wieder.
3.Basisrelative Adressierung: Diese Adressierungsart addiert zwei Werte um dann wie
bei der
indirekten Adressierung die endgültige
Speicherstelle zu
ermitteln.
Assemblerbefehle:
Die Assemblerbefehle gliedern sich in mehrere Kategorien:
1.Befehle zum Datentransfer: hierzu gehört als wichtigster der MOV Befehl. Der
Befehl
MOV kopiert ein Byte von Quelle zum Ziel. Siehe
Grafik 2 !
2.Unbedingte Sprünge: Es gibt den Befehl JMP, dieser verzweigt zu einer
angegebenen
Adresse, indem man nach dem JMP Befehl die
gewünschte Adresse in
Form eines Labels(also eines Namens) schreibt. Siehe
Grafik 2 !
$NOMOD51
$INCLUDE (89C1051.MCU)
mov P3,#11111111b
main:
mov P1,P3
jmp main
END
(Grafik 3)
3.Bedingte Sprünge: Das waren nun die zwei wichtigsten Befehle, die etwa 50%
jedes
Programms ausmachen, etwas sinnvolles lässt sich damit
aber noch
nicht machen. Um Interaktivität in das Programm zu
bringen, braucht
man bedingte Sprünge. Diese führen in Abhängigkeit von
bestimmten
Bedingungen Sprünge zu dem angegebenen Label durch
oder nicht.
Hier gibt es die Befehle JB(Jump if Bit is Set),JNB(Jump if
Bit is not
set) und JBC(Jump if Bit is set and clear Bit), diese führen
nach
bestimmten Bedingungen Sprünge durch .JB springt zum
Sprungziel
wenn das angegebene Bit auf 1 gesetzt ist. JNB springt
zum
Sprungziel, wenn das angegebene Bit auf 0 gesetzt bzw.
gelöscht ist.
JBC springt zum Sprungziel, wenn das Bit auf 1 gesetzt ist
und löscht
dieses danach. Das hat den Sinn die Rechenleistung zu
optimieren, da
dieser Befehl schneller ist als ein JB Befehl in Verbindung
mit einem
Löschbefehl und benötigt weniger Speicher.
JB [Bit],Sprungziel
JNB [Bit],Sprungziel
JBC [Bit],Sprungziel
(Grafik 4)
Des weiteren gibt es noch die Befehle JC,JNC,JZ,JNZ und
noch
Einige andere die ja nach bestimmten Bedingungen
Sprünge zum
gewünschten Sprungziel durchführen.
4.Mathematik Befehle: Als nächstes ziehen wir die Mathematikbefehle unter betracht.
Als einfachster Mathematik Befehl ist der ADD Befehl zu
nennen,
dieser Addiert den Inhalt zweier Bytes. Der gegensätzliche
Befehl
dazu lautet SUBB, dieser Subtrahiert den Inhalt eines Byte
von dem
eines anderen. Es gibt noch den Multiplikationsbefehl
MUL, dieser
multipliziert den Inhalt zweier Bytes miteinander. Im
Gegensatz dazu
gibt es den Divisionsbefehl DIV, dieser dividiert den Inhalt
eines
Bytes von dem eines anderen. Die Zählbefehle INC und
DEC gibt es
auch noch, wobei INC jeweils um 1 erhöht, also hoch
zählt und DEC
jeweils um 1 verringert, also nach unten zählt.
5.Unterprogrammbefehle: Es gibt Befehle, die dazu dienen Unterprogramme
aufzurufen bzw.
vom Unterprogramm ins Hauptprogramm
zurückzukehren. Die
Befehle CALL dient dazu ein Unterprogramm
aufzurufen und nach der Ausführung des
Unterprogramms an der
Stelle im Hauptprogramm weiterzumachen, an der das
Hauptprogramm verlassen. RET und RETI dienen dem
Zurückspringen vom Unterprogramm ins
Hauptprogramm.
; ...Hauptprogramm ...
call unterprogramm
; ... weitere Befehle des Hauptprogramms ...
unterprogramm:
; ... Befehle des Unterprogramms ...
call unterprogramm1
call unterprogramm2
; ...
ret
unterprogramm1:
; ...
ret
unterprogramm2:
; ...
ret
(Grafik 5)
6.Logische Operationen und Bitmanipulationen: Bitmanipulation:
Die Befehle CLR, SETB und
CPL wirken
auf ein einzelnes Bit, sie
manipulieren den
Zustand eines Bits.
CLR(Clear)setzt ein Bit
auf 0.SETB(Set Bit) setzt ein
Bit auf 1 und
CPL negiert den Zustand
eines Bits, also
dreht ihn um(von 0 auf 1
bzw. von 1 auf 0).
Logische Operationen:(Grafik
5)
Der Befehl ANL bildet das
logische UND
zweier Bits. Das Ergebnisbit
ist nur dann
gesetzt, wenn beide
Inputbits gesetzt sind.
Der Befehl ORL bildet das
logische ODER
zweier Bits. Das Ergebnisbit
ist gesetzt,
sobald eines der beiden
Inputbits gesetzt ist.
Der Befehl XRL bildet das
logische
Entweder-Oder zweier Bits.
Das Ergebnisbit
ist nur gesetzt, wenn ein
einzelnes der
beiden Inputbits gesetzt ist.
ANL
Input 1 Input 2 Ergebnis ANL
0
0
0
0
1
0
1
0
0
1
1
1
ORL
Input 1 Input 2 Ergebnis ORL
0
0
0
0
1
1
1
0
1
1
1
1
XRL
Input 1 Input 2 Ergebnis XRL
0
0
0
0
1
1
1
0
1
1
1
0
7.Der Befehl NOP: Der Befehl NOP(No Operation) ist der einfachste von allen
Assembler
Befehlen, da absolut nichts macht, er braucht bloß Speicher
und wird
deshalb für Warteschleifen verwendet.
Quellen:
Internetseite:
http://www.e-online.de/public/buchmann/assembler.htm
(Stand
08.01.2002)
Buch: Das große Commodore 64 Buch, Data Becker, Verfasst von Hecht, 5. Auflage
1991,
Seite 367-386
Buch: Meyers Taschenlexikon in einem Band, B.I. Taschenbuch Verlag, 3.Auflage
1997,
Seite 54
Ende der Leseprobe aus 7 Seiten
- nach oben
Blick ins Buch
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.