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
Unterprogramms an der
Hauptprogramm.
; …Hauptprogramm …
call unterprogramm ; … weitere Befehle des Hauptprogramms …
unterprogramm:
; … Befehle des Unterprogramms … call unterprogramm1
; …
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
ORL
XRL
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
Arbeit zitieren:
Christopher Frank, 2002, Assembler - Maschinensprache, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
Formatvorlage (Microsoft Word) für eine Diplomarbeit, Masterarbeit, Ha...
Für MS Word 2003 - Update 2010
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 25 Seiten
Formatvorlage (OpenOffice) für eine Diplomarbeit, Masterarbeit, Hausar...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 35 Seiten
Formatvorlage / Vorlage zur Erstellung einer Diplomarbeit, Bachelorarb...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 15 Seiten
Formatvorlage / Vorlage für eine Diplomarbeit / Hausarbeit
Für MS Word 2007 - dotx
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 25 Seiten
Anleitung zum Erstellen schriftlicher Arbeiten: Der Aufbau einer wisse...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 20 Seiten
Erstellen einer schriftlichen Hausarbeit
Vorlagen, Muster, Formulare, Infobroschüren
Hausarbeit, 14 Seiten
Grundtechniken wissenschaftlichen Arbeitens
Bibliografieren - Reden - Schr...
Vorlagen, Muster, Formulare, Infobroschüren
Skript, 46 Seiten
Ratgeber zur Erstellung wissenschaftlicher Arbeiten. Diplomarbeiten - ...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 39 Seiten
Christopher Frank hat den Text Assembler - Maschinensprache veröffentlicht
Christopher Frank hat einen neuen Text hochgeladen
Product Design for Manufacture and Assembly
Geoffrey Boothroyd, Peter Dewhurst, Winston A. Knight
Jun Liu, Shaowei Chen, Jin Zhang, Zhong-lin Wang, Gang-yu Liu
0 Kommentare