11.4. Assembler/Disassembler |
![]() |
![]() |
Letztmalig dran rumgefummelt: 13.11.19 17:00:07 |
![]() |
Assembler sind nach wie vor die einfachsten Hochsprachen und liegen neben direkter Binär sowie auch Hexadezimalcodierung am dichtesten an der Maschine. So sind sie selbstverständlich auch abhängig vom jeweiligen Zielprozessor. | ||||||||
![]() |
|
||||||||
![]() |
1. Assembler - Prinzip, Aufgabe und
Funktion 2. Assembler für verschiedene Plattformen 3. Disassemblieren vorhandener HEX-DUMPS 4. Disassembler 5. Verwandte Themen |
1. Assembler-Prinzip |
![]() |
![]() |
![]() |
![]() |
In der Assemblersprache werden die einzelnen Maschinenbefehle durch Textzeilen formuliert. Jeder Befehl entspricht einer Zeile, in, der der Operationscode und die Operanden durch Abkürzungen geschrieben werden. Statt, der Speicheradresse, p die der Maschinenbefehl gespeichert wird, bekommt die Assemblerzeile einen Namen (Marke). Da der Rechner jedoch nur Maschinenbefehle versteht, muss ein Assemblerprogramm in Maschinenbefehle umgewandelt werden. Dies realisiert der Assembler. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Aufbau einer Assemblerzeile
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Aufbau einer Assemblerzeile
Aufbau einer Assemblerzeile [TZ entspricht Trennzeichen, TAB entspricht Tabulatorzeichen, NL entspricht New Line (Zeichen für neue Zeile), CR entspricht Carriage Return (Zeichen für Wagenrücklauf), LF entspricht Line Feed (Zeichen für Zeilenwechsel) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Trennzeichen zwischen mehreren Operanden , (Komma) - Trennzeiehen zwischen Operanden und Kommentar; (Semikolon) -Kommentar: beliebiger Text, der nicht mit verarbeitet wird Zeilenabschluß: Neue Zeile (NL) Wagenrückleuf (CR) Zeilenvorschub (LF) Pseudoanweisungen Pseudoanweisungen sind Anweisungen der Assemblersprache, die sofort bei der Übersetzung ausgeführt werden. Das Ergebnis wird in das Maschinencodeprogramm eingefügt. Die Pseudoanweisungen sind nicht in der Maschinensprache enthalten. Man benutzt sie zum Einfügen von Zahlen in das Programm sowie zur Steuerung des Assemblerablaufs. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Makroorganisation Ein MAKRO ist eine Befehlsfolge,' die der Assembler beider Übersetzung -in das Programm
einsetzt: t Das MAKRO hat folgendes, Aussehen: Assembler Die Abkürzungen für die Operationscode und Operanden werden durch den Assembler festgelegt. So können sie sich deshalb von Assembler zu Assembler geringfügig unterscheiden. - |
2. Assembler für verschiedene Plattformen |
![]() |
![]() |
![]() |
![]() |
Assembler liegen im Anforderungsniveau genau eine Stufe über dem direkten Befehlssatz des jeweiligen Zielprozessors und sie gewinnen mit Einzug der Microcontroller wieder an Bedeutung, da dort Hochsprachen aller Coleur unnötigen Zwischencode erzeugen, der alles andere als Laufzeit- und Speicheroptimal ist. Genau das braucht man aber dort, wo jedes Bit im Hauptspeicher knapp ist, aber der Befehlssatz optimal auf Steuerungssysteme abgestimmt wurde. |
![]() |
Für den Z80-Prozessor bewährte sich im Einsatz der Aside-Assembler |
![]() |
Software zum Lesen der Dumps - möglichst ein zugehöriger Disassembler |
![]() |
die sich durch die Disassemblierung Befehle müssen in einem Zusammenhang stehen - wird ein Register mit einem Wert geladen, dann muss mit dessen Inhalt in absehbarer Folge eine logische, arithmetische oder Ein-/Ausgabeoperation erfolgen |
3. Disassemblieren vorhandener Hex-Dumps |
![]() |
![]() |
![]() |
![]() |
Das geht von Hand, aber wenn hier ein Fehler an ungünstiger Stelle auftritt (und diese Wahrscheinlichkeit ist extrem hoch), dann kommt da wie bei kryptologischen Verfahren nur noch Müll heraus. Hat man Glück, erkennt man diesen, das ist aber keine Notwendigkweit. |
![]() |
Voraussetzungen sollten ein fehlerfreies Hex-Dumps - möglichst mit Zeilen und Spalten hexadezimal organisiert sowie eine Übersicht evtl. vorhandener und dokumentierter Subroutinen |
![]() |
Assemblerliste für den entsprechenden Prozessor |
![]() |
Software zum Lesen der Dumps - möglichst ein zugehöriger Disassembler |
![]() |
die sich durch die Disassemblierung Befehle müssen in einem Zusammenhang stehen - wird ein Register mit einem Wert geladen, dann muss mit dessen Inhalt in absehbarer Folge eine logische, arithmetische oder Ein-/Ausgabeoperation erfolgen |
![]() |
Codetabellen beginnen dort, wo der logische Zusammenhang aufhört oder aber sinnlose Befehle das Resultat bilden |
![]() |
genaue Adressrechnung sowie das Verfolgen der Sprungadressen verschaffen letzte Gewissheit ;-) |
![]() |
es muss anfangs des Assemblertextes eine umfangreiche Dokumentatation von Festadressen, ROM- und RAM-Anordnung, reservierter Bereiche entsprechend kommentiert stehen |
5. Verwandte Themen |
![]() |
![]() |
![]() |
![]() |
Aussagenlogik, Logik und Kombinatorik, Kanonische Normalformen - aber auch die Gesetze zur logischen Schaltungsentwicklung sowie auch ihre Vereinfachung spielen alle in diese Feld der Grundlagen. Hier einige Tipps, um diese näher zu beschnuppern, oder daran vollkommen zu verzweifeln. | |||||||||
![]() |
|
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost Juni 2007 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |