Programmiersprache Pascal

Integrierte Assembler-Anweisungen

Einige Pascal-Systeme lassen es zu, Assembler-Anweisungen in den Pascal-Quelltext zu integrieren.
Dies ist für solche Situationen interessant, in denen entweder Die Kombination von Pascal- und Assembleranweisungen bietet sowohl Vor- als auch Nachteile: Beispiel für Turbo Pascal:
  PROCEDURE mouse_reset(VAR mouse: Boolean);
  { Maus initialisieren - Test auf Verfügbarkeit des Maustreibers }
  BEGIN
    ASM
      MOV AX, 0                     { Maustreiber-Funktion 0 }
      INT 33h
      MOV mouse_installed, AL;      { Maustreiber verfügbar Ja/Nein }
    END;
    mouse := mouse_installed;
  END;

Turbo Pascal und Delphi lassen nicht nur die Integration von Assembler-Anweisungen, sondern erlauben auch das Einfügen von Maschinenbefehlen mit Hilfe der INLINE-Anweisung.

Beispiel:

  PROCEDURE fillword(VAR dest; count: WORD; data: WORD);
  BEGIN
    INLINE(
      $C4/$7E/dest/    (* LES   DI,dest[BP]  *)
      $8B/$4E/count/   (* MOV   CX,count[BP] *)
      $8B/$46/data/    (* MOV   AX,data[BP]  *)
      $FC/             (* CLD                *)
      $F3/$AB);        (* REP   STOSW        *)
  END;

Unix-Pascal-Systeme bieten oft einen anderen Weg an:
Beim Compileraufruf können Pascal- und Assemblerquelltextdateien gemeinsam als Parameter angegeben werden.
Beispiel (XL Pascal):

  xlp -o bsp bsp1.pas bsp2.pas bsp3.s bsp4.s
Der Dateisuffix weist auf Pascal (.pas) bzw. Assembler (.s) Quelltexte hin.



P. Böhme, 27.08.1996