Assembler ist die Sprache der Maschinen (1)

Bei unserem Streifzug durch die Programmiersprachen darf Assembler nicht fehlen. Sie ist eindeutig die Sprache der Maschinen. Das belegen Unterschiede zu anderen Programmiersprachen wie zum Beispiel Pascal. Wir wollen versuchen, Ihnen den Einstieg in Assembler schmackhaft zu machen und haben dafür einige Leckerbissen parat.

Lassen Sie uns mit einem einfachen aber wirkungsvollen Beispiel beginnen. Dabei handelt es sich noch nicht um ein Assemblerprogramm – vielmehr nutzen wir nur eine vorhandene Ressource unseres PCs. Die zum Computer gehörenden Disketten mit dem Betriebssystem MS- beziehungsweise PC-DOS beinhalten in fast allen Fällen einen Debugger namens DEBUG oder in neueren Versionen SYMDEB.

Diese Programme ermöglichen Ihnen unter anderem, kleine Assemblerroutinen einzugeben und ähnlich wie bei einem Basic-Interpreter sofort auszuprobieren. Wir möchten jedoch bemerken, dass es für die Programmierung in Maschinensprache wesentlich komfortablere Makro-Assembler gibt. Rufen Sie DEBUG oder SYMDEB durch Eingabe des entsprechenden Namens auf. Wenn der Bindestrich als Bereitschaftszeichen (Prompt) erscheint, geben Sie

g=ffff:0

ein. Drücken Sie die Taste Enter. Doch keine Panik! Es geht zwar hart zur Sache, aber Ihr PC geht nicht kaputt! Es passiert genau das, was beim Einschalten Ihres PCs oder beim so genannten Warmstart (Tastenkombination Control + Alt + Delete) geschieht: ein Reset wird ausgelöst. Gibt es so was in Basic, Pascal oder anderen Sprachen? Ja, aber auch nur mit Hilfe eines in Assembler geschriebenen Unterprogramms oder mit so genannten Inline-Befehlen, die mit denen eines Assemblers so gut wie identisch sind.

Wie bereits erwähnt, ist das oben genannte Beispiel noch kein Assemblerprogramm, sondern nur die Verwendung einer Funktion innerhalb unseres Debuggers, an eine bestimmte Stelle des Arbeitsspeichers unseres PCs zu gehen (g steht für go) und dort eine bereits vorhandene Routine auszuführen. In Assembler geschrieben, muss dieser Aufruf, nachdem Sie den Buchstaben a für assemble eingegeben haben, nämlich so aussehen:

-a
2747:0100 jmp ffff:0000

Anstelle von 2747 zeigt Ihnen Ihr PC bestimmt eine andere Zahl, eine freie Segment-Adresse, was aber für unseren Test nicht weiter von Bedeutung ist.

Diesen Einzeiler ein Assemblerprogramm zu nennen, ist noch etwas übertrieben. Da es nach der Ausführung mit einem Reset endet und eine Rückkehr zum Empfang weiterer Befehle im Debugger nicht zu erwarten ist, brauchen Sie sich ausnahmsweise um das Programmende nicht zu kümmern. Drücken Sie zweimal die Enter-Taste, bis der Bindestrich wieder als Prompt erscheint. Die Anweisung hinter 2747:0100, an die hexadezimale Speicheradresse ffff:0000 zu springen (jmp steht für jump und bedeutet springen), müssen Sie jetzt mit g=100 starten.

Nach diesem kurzen Beispiel können wir dennoch unsere erste Schlussfolgerung ziehen: In Assembler wird unter anderem programmiert, was in höheren Programmiersprachen nicht oder nur bedingt möglich ist.

Quelle: PC Magazin PLUS, August 1988