インラインアセンブラの使い方
インラインアセンブラを使うとPascalでは実現できないような処理を行うことができます。特に、低レベル処理や高速処理が必要な場合は有効です。
インラインアセンブラはasm文を使って記述します。
asm アセンブラ文 end
次の例はセグメントセレクタの値を表示します。(注意:このプログラムは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;
ラベルの使い方
ローカルラベルは@を先頭に付けなければなりません。また、Labelによって宣言する必要はありません。