{D7+win98, 不能用于 2000}
unidade principal;
interface
usos
Janelas, mensagens, sysutils, variantes, classes, gráficos, controles, formulários,
Diálogos, stdctrls;
tipo
Tform1 = classe (tform)
Button1: tbutton;
Button2: tbutton;
Button3: tbutton;
Procedimento Button1Click (remetente: Tobject);
Procedimento Button2Click (remetente: Tobject);
Procedimento Button3Click (remetente: Tobject);
privado
{Declarações privadas}
público
{Declarações públicas}
fim;
var
Form1: TForm1;
implementação
{$ R *.dfm}
Velocidade do procedimento (contagem: word); stdcall;
const
ExcepcionSused = $ 03;
var
Idt: matriz [0..5] de byte;
lpoldgate: dword;
começar
ASM
SIDT IDT
MOV EBX, DWORD PTR [IDT+2]
Adicione EBX, 8*ExcepcionSused
CLI
mov dx, palavra ptr [ebx+6]
Shl Edx, 16d
mov dx, word ptr [ebx]
mov [lpoldgate], edx
MOV EAX, deslocamento @@ ring0code
mov word ptr [ebx], machado
SHR EAX, 16d
MOV Word Ptr [EBX+6], Ax
int excepcilSused
MOV EBX, DWORD PTR [IDT+2]
Adicione EBX, 8*ExcepcionSused
Mov Edx, [Lpoldgate]
mov word ptr [ebx], dx
SHR EDX, 16d
mov word ptr [ebx+6], dx
jmp @@ exit
@@ ring0code:
mov al, US $ 34
fora de US $ 43, Al
MOV AX, Count
fora de US $ 40, Al
mov al, ah
fora de US $ 40, Al
Iretd
@@saída:
fim;
fim;
procedimento TForm1.Button1Click (remetente: TOBJECT);
começar
velocidade (US $ 6000); // 慢
fim;
procedimento TForm1.Button2Click (remetente: TOBJECT);
começar
Velocidade (US $ 1044);
fim;
Procedimento TForm1.Button3Click (remetente: Tobject);
começar
velocidade (US $ 500);
fim;
fim.