{D7+win98, 不能用于 2000}
единица mainunit;
интерфейс
Использование
Windows, сообщения, Sysutils, варианты, классы, графика, управления, формы,
Диалоги, stdctrls;
тип
Tform1 = class (tform)
Баттон1: Tbutton;
Button2: Tbutton;
Button3: Tbutton;
Процедура Button1click (отправитель: tobject);
процедура Button2click (отправитель: tobject);
процедура Button3click (отправитель: Tobject);
частный
{Частные объявления}
публичный
{Публичные объявления}
конец;
вар
Форма1: tform1;
выполнение
{$ R *.dfm}
Скорость процедуры (счет: слово); stdcall;
констант
Исключительно = 03 долл. США;
вар
IDT: массив [0..5] байта;
LPOLDGATE: DWORD;
начинать
Асм
SIDT IDT
MOV EBX, DWORD PTR [IDT+2]
Добавить EBX, 8*Исключительно
Кли
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 доллара, Ал
MOV AX, COUNT
Выпуск 40 долларов, AL
Mov Al, ах
Выпуск 40 долларов, AL
Иретд
@@Выход:
конец;
конец;
Процедура tform1.button1click (отправитель: tobject);
начинать
скорость ($ 6000); // 慢
конец;
Процедура tform1.button2click (отправитель: tobject);
начинать
Скорость ($ 1044);
конец;
Процедура tform1.button3click (отправитель: tobject);
начинать
скорость (500 долларов);
конец;
конец.