delphi.gif (306 バイト) インラインアセンブラの使い方


インラインアセンブラを使うとPascalでは実現できないような処理を行うことができます。特に、低レベル処理や高速処理が必要な場合は有効です。

インラインアセンブラはasm文を使って記述します。

asm アセンブラ文 end

 

delphi1.gif (322 バイト) 次の例はセグメントセレクタの値を表示します。(注意:このプログラムはWindows NTでは動作しません)

procedure TForm1.GetSegment(var wds,wes,wfs,wgs: Word);
var
  x: Word;
begin
  asm
     mov  ax, ds
     mov  x, ax
  end;
  wds := x;
  asm
     mov  ax, es
     mov  x, ax
  end;
  wes := x;
  asm
     mov  ax, fs
     mov  x, ax
  end;
  wfs := x;
  asm
     mov  ax, gs
     mov  x, ax
  end;
  wgs := x;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ds,es,fs,gs: Word;
begin
    GetSegment(ds, es,fs,gs);
    Edit1.Text := IntToHex(ds, 4);
    Edit2.Text := IntToHex(es, 4);
    Edit3.Text := IntToHex(fs, 4);
    Edit4.Text := IntToHex(gs, 4);
end;


toach.gif (917 バイト) ラベルの使い方

ローカルラベルは@を先頭に付けなければなりません。また、Labelによって宣言する必要はありません。