{D7+Win98, 不能用于 2000}
Einheit MainUnit;
Schnittstelle
Verwendung
Fenster, Nachrichten, Systeme, Varianten, Klassen, Grafiken, Steuerelemente, Formulare,
Dialoge, Stdctrls;
Typ
Tform1 = Klasse (tform)
Button1: Tbutton;
Button2: Tbutton;
Button3: Tbutton;
PROCEDURE Taste1Click (Absender: Tobject);
PROCEDURE Button2Click (Absender: Tobject);
PROCEDURE Button3Click (Absender: Tobject);
Privat
{Private Deklarationen}
öffentlich
{Öffentliche Erklärungen}
Ende;
var
Form1: tform1;
Durchführung
{$ R *.dfm}
Verfahrensgeschwindigkeit (Graf: Wort); stdcall;
Const
Ausgenommen = $ 03;
var
IDT: Array [0..5] von Byte;
lpoldgate: dword;
beginnen
Asm
Sidt Idt
MOV EBX, DWORD PTR [IDT+2]
Fügen Sie EBX, 8*ausnahmsweise hinzu
Cli
MOV DX, WORD PTR [EBX+6]
Shl edx, 16d
MOV DX, WORD PTR [EBX]
mov [lpoldgate], edx
MOVE EAX, OUTSET @@ RING0CODE
MOV WORD PTR [EBX], AX
Shr e ex, 16d
MOV WORD PTR [EBX+6], AX
int ausnahmsweise
MOV EBX, DWORD PTR [IDT+2]
Fügen Sie EBX, 8*ausnahmsweise hinzu
MOV EDX, [lpoldgate]
MOV WORD PTR [EBX], DX
Shr edx, 16d
MOV WORD PTR [EBX+6], DX
JMP @@ Exit
@@ Ring0Code:
Mov al, $ 34
Aus 43 Dollar, al
MOV AX, Zählen
out 40 $, al
MOV AL, AH
out 40 $, al
Iretd
@@Ausfahrt:
Ende;
Ende;
procedure tform1.button1click (Absender: tobject);
beginnen
Geschwindigkeit ($ 6000); // 慢
Ende;
procedure tform1.button2click (Absender: tobject);
beginnen
Geschwindigkeit ($ 1044);
Ende;
procedure tform1.button3click (Absender: tobject);
beginnen
Geschwindigkeit ($ 500);
Ende;
Ende.