DEBUG ist am schnellsten

Die dritte und letzte Schlußfolgerung ist so einfach wie logisch: Übung macht den Meister. Haben Sie sich aber einmal in die Maschinensprache eines Microprozessors eingearbeitet, fällt Ihnen der Umstieg auf einen anderen Prozessor nicht sonderlich schwer.

Auch verfeinert sich Ihr Verständnis für höhere Programmiersprachen, da Sie während der Programmerierung in Assembler einen sicheren Spürsinn für Details entwickeln. Für stundenlanges Ausprobieren und zahlreiche Abstürze Ihres PCs werden Sie durch rasend schnelle Ausführung Ihrer Assemblerprogramme entschädigt. Auch dafür haben wir ein Beispiel parat. Das folgende Programm in Turbo-Pascal Version 3.0 benötigt auf einem 80286-AT mit einer Hercules-Grafikkarte ungefähr 13 Sekunden um 4096mal »Hallo!« auf dem Bildschirm auszugeben. Dabei gehört Turbo-Pascal nicht zu den langsamsten Programmiersprachen:

Var: CX: Integer;
Begin
 For CX:= 1 to 4096 do
 Begin
  Write('Hallo! ');
 End;
End.

Ein vergleichbares Assemblerprogramm benötigt für die gleiche Aufgabe nur etwa 7 Sekunden (Prüfsumme E52A):

A 	 	
MOV CX,1000      ;100
MOV BL,0F        ;103
MOV AH,0E        ;105
MOV SI,00        ;107
MOV AL,[SI+0119] ;10A
INT 10           ;10E
INC SI           ;110
CMP SI,7         ;111
JNZ 010A         ;114
LOOP 0107        ;116
RET              ;118
DB 'Hallo! '

RCX
20
NHALLO!.COM
W
Q

Wie Sie gerade festgestellt haben, ist Assembler superschnell. Das stimmt – die Ausführungsgeschwindigkeit von Maschinenroutinen bricht meist sämtliche Rekorde. Jedoch können Sie auch in Assembler uneffiktiven Code programmieren, der die sonst für alle Mühen entschädigende Schnelligkeit hemmt – von erhöhter Absturzgefahr während der Testphase ganz zu schweigen… Und auch die aktuellsten Compiler höherer Programmiersprachen, vor allem die Sprache C, machen es dem Assemblerprogrammierer schwer, bei vergleichbarem Aufwand noch bemerkenswert schnellere Programme zu realisieren. Programmieren in Assembler ist mit hundertprozentiger Sicherheit kompliziert, setzt Kenntnisse über andere als das uns geläufige dezimale Zahlensystem voraus und ist deshalb – selbst für Profis – für schnelle Problemlösungen nicht immer geeignet. Weil die Logik in kleinsten – leicht zu übersehenden, aber extrem wichtigen Details beginnt, müssen Sie meist für die korrekte Anwendung von Maschinenbefehlen das Zahlensystem mit der niedrigsten Basis zurückgreifen (Näheres hierzu im nächsten Kapitel).

Obwohl Maschinensprache eine Herausforderung an den Programmierer darstellt und Sie auf jedes selbstentwickelte und funktionierende Assemblerprogramm stolz sein können, sollten Sie stets überlegen, ob sich die Lösung des Problems in einer höheren Programmiersprache leichter bewerkstelligen läßt. Wer sich jedoch seiner Sache sicher ist und einfach auf kurze knackige Routinen steht, der sollte nicht davor scheuen, auch DEBUG zur Programmentwicklung einzusetzen. Daß es hierfür nahezu unendlich viele Möglichkeiten gibt, soll dieses Buch beweisen.

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot