{d7+win98、不能用于2000}
ユニットメインユニット;
インタフェース
用途
窓、メッセージ、sysutils、バリアント、クラス、グラフィック、コントロール、フォーム、
ダイアログ、stdctrls;
タイプ
tform1 = class(tform)
Button1:Tbutton;
Button2:tbutton;
Button3:Tbutton;
手順button1click(sender:tobject);
手順button2click(sender:tobject);
手順button3click(sender:tobject);
プライベート
{プライベート宣言}
公共
{公開宣言}
終わり;
var
form1:tform1;
実装
{$ r *.dfm}
手順速度(count:word); stdcall;
const
例外= $ 03;
var
IDT:バイトの配列[0..5]。
lpoldgate:dword;
始める
ASM
SIDT IDT
mov ebx、dword ptr [idt+2]
EBXを追加、8*例外
cli
mov dx、word ptr [ebx+6]
Shl Edx、16d
mov dx、word ptr [ebx]
mov [lpoldgate]、edx
mov eax、offset @@ ring0code
mov word ptr [ebx]、ax
Shr Eax、16d
mov word ptr [ebx+6]、ax
int例外
mov ebx、dword ptr [idt+2]
EBXを追加、8*例外
Mov Edx、[lpoldgate]
mov word ptr [ebx]、dx
Shr Edx、16d
mov word ptr [ebx+6]、dx
jmp @@ exit
@@ ring0code:
Mov Al、34ドル
$ 43、al
mov ax、count
40ドル、アラバマ州
Mov Al、ああ
40ドル、アラバマ州
アイレット
@@出口:
終わり;
終わり;
手順tform1.button1click(sender:tobject);
始める
速度($ 6000); //慢
終わり;
手順tform1.button2click(sender:tobject);
始める
速度($ 1044);
終わり;
手順tform1.button3click(sender:tobject);
始める
速度($ 500);
終わり;
終わり。