Maschinensprache i8086/ Filter
Theorie:
Einleitung – Maschinensprache –
Assembler – Zahlensysteme –
RAM-Adressen – BWS – Debug –
CPU-Register – Einfache Befehle – Stringbefehle – Interrupts –
I/O-Ports
Versuch:
BWS1 – BWS2 –
Hallo Welt – Bootsektor – MBR
Nützlich:
Befehlsliste – PAUSE – Filter
Analyse:
Bootloader
Aufgabenstellung
[Bearbeiten]Eine größere Anzahl Textdateien soll wikifiziert werden. Diese Quelldateien sind sehr unterschiedlich aufgebaut, je nach Inhalt und Schreibstil der Autoren. Ein universelles Programm vom Typ „eierlegende Wollmilchsau“ ist deshalb kaum möglich. Deshalb wird folgende Konzeption realisiert:
- Die zu wikifizierenden Dateien werden in das .TXT Format umgewandelt.
- Die Textdatei wird durch ein oder mehrere geeignete „Filter“ geschickt und dabei umgewandelt.
- Die resultierende Datei wird über die Zwischenablage in das Fenster des Wiki-Editors eingefügt.
Welche Filter wären dafür sinnvoll?
- Tabulatoren am Zeilenanfang durch |- <br /> | ersetzen
- restliche Tabulatoren durch || ersetzen
- restliche Tabulatoren durch Leerzeichen ersetzen
- Jeden Zeilenwechsel durch zwei Leerzeichen ersetzen
- Leerzeichen vor dem Zeilenende ersatzlos entfernen
- Leerzeichen am Zeilenanfang ersatzlos entfernen
- Einen Zeilenwechsel durch zwei Zeilenwechsel ersetzen
- mal sehen, was sonst noch sinnvoll ist.
Bevor Sie sich in die Programmierung dieser Filter vertiefen, sollten Sie sich ansehen, wie man Filter programmiert und benutzt.
Schwierigkeitsgrad
[Bearbeiten]Am Beispiel der Teilaufgabe „Tabulatoren durch Leerzeichen ersetzen Version 1“ sollen exemplarisch einige Konzepte vorgestellt und einige Möglichkeiten durchgespielt werden. Die Entstehung und der Test des Programmes werden Schritt für Schritt detailliert beschrieben. Zuerst wird ein Programm entwickelt, dem die Dateinamen der Quell- und Zieldatei übergeben werden. In einer zweiten Etappe wird das Programm zu einem Filter umgebaut.
Leider kann ein Programm in der Filter-Ausführung nicht mehr Schritt für Schritt getestet werden. Deshalb kann „Tabulatoren durch Leerzeichen ersetzen Version 1“ als Gerüst zum Testen neuer Algorithmen dienen, um den erprobten Algorithmus dann zu einem Filterprogramm umzubauen.
Die vorgestellten Programme sind aus mehreren Gründen unprofessionell:
- Es wird vorausgesetzt, dass der Quelltext maximal (7FFF-1000)=6FFF = 28671dez Byte lang ist. Falls er länger ist, erfolgt keine Warnung.
- Weil einige Zeichen durch mehrere Zeichen ersetzt werden, kann der Zieltext länger werden als der Quelltext. Es wird stillschweigend angenommen, dass es nicht mehr als (FFFF-8000)=7FFFh = 32767dez Byte werden. Falls es mehr werden, erfolgt keine Warnung.
- Das Programm erzeugt keine Text-Fehlermeldungen, lediglich die Variable ERRORLEVEL wird erstellt und kann ausgewertet werden.
- Jedes „ordentliche“ Programm enthält eine Beschreibung, die man durch Eingabe von " /?" hinter dem Programmnamen abrufen kann. Dieses nicht.
Es sind also keine Musterbeispiele für strukturierte Programmierung, denn die Beispielprogramme sollen überschaubar bleiben.
Vorbereitung
[Bearbeiten]- Sichern Sie Ihre Daten.
- Legen Sie ein Verzeichnis für das Experiment an.
- Erstellen Sie eine kleine Musterdatei Q.TXT mit einer Anzahl Tabulatoren am Zeilenanfang und in der Zeile.
Anmerkungen:
- Den Umgang mit dem Debugger sollten Sie in den vorhergehenden Kapiteln gelernt haben.
- Im Weiteren sind alle Zahlen selbstverständlich hexadezimal, wenn nicht ausdrücklich anders angegeben.
- Die Segmentadresse vor der Befehlsadresse wurde in allen Listings weggelassen, da sie je nach Speichernutzung ständig anders ist.
Beginnen Sie jetzt mit dem Programm „Tabulatoren durch Leerzeichen ersetzen Version 1“ (Sie müssen das Programm nicht unbedingt eintippen, Verstehen reicht). Wenn Sie das Konzept der Dateibenutzung verstanden haben, machen Sie weiter mit Was ist ein Filter und danach „Tabulatoren durch Leerzeichen ersetzen Version 2“.