インラインアセンブラの使い方
インラインアセンブラを使うと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によって宣言する必要はありません。