{d7+win98, 不能用于 2000}
หน่วย Mainunit;
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutils, ตัวแปร, คลาส, กราฟิก, การควบคุม, รูปแบบ,
กล่องโต้ตอบ stdctrls;
พิมพ์
tform1 = คลาส (tform)
ปุ่ม 1: tbutton;
button2: tbutton;
ปุ่ม 3: tbutton;
ขั้นตอน button1click (ผู้ส่ง: tobject);
ขั้นตอน button2click (ผู้ส่ง: tobject);
ขั้นตอน button3click (ผู้ส่ง: tobject);
ส่วนตัว
{ประกาศส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
วาจา
Form1: TFORM1;
การดำเนินการ
{$ r *.dfm}
ความเร็วขั้นตอน (นับ: Word); stdcall;
const
ยกเว้น = $ 03;
วาจา
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
มีข้อยกเว้น
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 @@ ออกจาก
@@ ring0code:
Mov Al, $ 34
ออก $ 43, อัล
Mov Axe, Count
ออก $ 40 อัล
mov al, ah
ออก $ 40 อัล
Iretd
@@ ทางออก:
จบ;
จบ;
ขั้นตอน tform1.button1click (ผู้ส่ง: tobject);
เริ่ม
ความเร็ว ($ 6000); // 慢
จบ;
ขั้นตอน TFORM1.Button2Click (ผู้ส่ง: TOBJECT);
เริ่ม
ความเร็ว ($ 1044);
จบ;
ขั้นตอน tform1.button3click (ผู้ส่ง: tobject);
เริ่ม
ความเร็ว ($ 500);
จบ;
จบ.