{D7+Win98 ، 不能用于 2000}
وحدة MAYUNIT ؛
واجهة
يستخدم
Windows ، الرسائل ، sysutils ، المتغيرات ، الفئات ، الرسومات ، عناصر التحكم ، النماذج ،
مربعات الحوار ، stdctrls ؛
يكتب
tform1 = فئة (tform)
Button1: Tbutton ؛
Button2: Tbutton ؛
Button3: Tbutton ؛
الإجراءات button1click (المرسل: tobject) ؛
الإجراءات button2click (المرسل: tobject) ؛
الإجراء button3click (المرسل: tobject) ؛
خاص
{إعلانات خاصة}
عام
{الإعلانات العامة}
نهاية؛
var
Form1: Tform1 ؛
تطبيق
{$ r *.dfm}
سرعة الإجراء (العد: كلمة) ؛ stdcall ؛
كونست
استثناء = $ 03 ؛
var
IDT: Array [0..5] of Byte ؛
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 ، إزاحة Ring0Code
كلمة mov ptr [ebx] ، الفأس
Shr Eax ، 16d
Mov Word Ptr [ebx+6] ، الفأس
استثناء int
MOV EBX ، DWORD PTR [IDT+2]
إضافة EBX ، 8*استثناء
MOV EDX ، [Lpoldgate]
كلمة mov ptr [ebx] ، dx
shr edx ، 16d
كلمة mov ptr [ebx+6] ، dx
jmp exit
Ring0Code:
MOV AL ، 34 دولار
من 43 دولار ، آل
فأس موف ، العد
من 40 دولار ، آل
موف آه ، آه
من 40 دولار ، آل
IRETD
@@مخرج:
نهاية؛
نهاية؛
الإجراء tform1.button1click (المرسل: tobject) ؛
يبدأ
السرعة (6000 دولار) ؛ // 慢
نهاية؛
الإجراء tform1.button2Click (المرسل: tobject) ؛
يبدأ
السرعة (1044 دولار) ؛
نهاية؛
الإجراء tform1.button3click (المرسل: tobject) ؛
يبدأ
السرعة (500 دولار) ؛
نهاية؛
نهاية.