Assembler-Seminaraufgabe WS00/01 (IA)

Diskussionsergebnisse zu dieser Seminaraufgabe werden regelmäßig in die Newsgroup ptl.ia gepostet

Entwickeln Sie das Dienstprogramm TSEARCH, welches innerhalb eines bestimmten Verzeichnis den Inhalt aller Dateien auf das Vorhandensein eines bestimmten Musters untersucht. Die Namen der gefundenen Dateien werden (incl. Pfadname) über die Standardausgabe ausgegeben. Per Option "/S" kann die Suche auch auf alle Unterverzeichnisse ausgedehnt werden. Bei der Mustersuche wird das Wildcard-Zeichen "*" (beliebig viele Zeichen) unterstützt. Eine Datei gilt als gefunden, wenn bei der Interpretation im MS-DOS-Textdateiformat mindestens eine Zeile in den ersten maximal 255 Zeichen durch das Muster beschrieben wird.

Die Aufrufsyntax von TSEARCH - beschrieben in Backus-Naur-Form (BNF) - lautet :

TSEARCH <Path> <Pattern> [/S]

<Path>        ::= <Drive>\{<Directory>\}
<Drive>       ::= <Letter>:
<Directory>   ::= <LetterDigit>{<LetterDigit>}[.<LetterDigit>{<LetterDigit>}]
<Pattern>     ::= *|([*]{<LetterDigit>[*]}) 
<LetterDigit> ::= <Letter>|<Digit>
<Letter>      ::= a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|
                  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<Digit>       ::= 0|1|2|3|4|5|6|7|8|9

<...> syntaktische Variable
::=   wird erklärt durch
(...) Sequenz
|     Auswahl
{...} beliebig häufig wiederholt
[...] optional

Im Sinne einer strengen Syntaxüberprüfung ist die Veränderung der Parameterreihenfolge beim Programmaufruf unzulässig.

Für die Option Durchsuchen aller Unterverzeichnisse soll zwecks Erkennung des Verarbeitungsfortschritts das aktuell zu bearbeitende Verzeichnis angezeigt werden. Der dem Durchsuchen des Verzeichnisbaums zugrundeliegende Algorithmus muß eine beliebige Verzeichnistiefe (zumindest theoretisch, denn praktisch wird die Rekursion durch die Stackgröße begrenzt) und eine beliebige Anzahl von Einträgen pro Verzeichnis zulassen.

Im Sourcecode des Dienstprogramms TSEARCH sollen die Möglichkeiten der Code- und Datenstrukturierung durch Module, Segmente und Prozeduren sowie Parameterübergaben an Unterprogramme und lokale Variablen in Unterprogrammen ausgenutzt werden. Zur Ablage der Parameter und lokalen Variablen bietet sich der Stack an (vgl. Techniken von Borland TurboPascal).

Zur weiteren Information dienen insbesondere folgende Quellen :

In dieser Seminaraufgabe sind vordefinierte Module oder Makros nicht erwünscht; davon ausgenommen sind selbstverständlich alle während der Bearbeitung dieser Seminaraufgabe erstellten Module und Makros sowie alle während der Vorlesung besprochenen Beipielprogramme.

Als Zielkonfiguration für das Dienstprogramm TSEARCH ist ein Personalcomputer (PC) gemäß Intel-Architektur (>= 8086) unter Microsoft DOS (>= Version 5.0) gefordert. Die Lauffähigkeit auf den Win98-PC´s im RZ5 (sofern zum Abgabezeitpunkt noch vorhanden) sowie auf den WinNT-PC´s (ggfs. Nachfolger-Systeme) in den RZ´s 1, 2 und 3 muß gewährleistet sein.

Spätester Abgabetermin für die Seminaraufgabe ist der 15.01.2001. Für verspätete Abgaben gilt folgende Regelung : Pro Tag Verspätung (incl. Sonnabende und Sonntage) werden pauschal 5% der erreichbaren Punktzahl abgezogen (z.B. erreichbare Punktzahl = 100, erreichte Punktzahl = 80, Abgabe am 17.01.2001 (d.h. zwei Tage zu spät) => bewertete Punktzahl = 70). Im Gegensatz zum Nachweis IA 901 Übung Assembler ist die Assembler-Seminaraufgabe eine Einzelarbeit.

Ansprechpartner : Birger Wolter