首页 | 社区 | 博客 | 招聘 | 文章 | 新闻 | 下载 | 读书 | 代码
亲,您未登录哦! 登录 | 注册

变速齿轮Delphi实现

打印文章

分享到:
{D7+Win98,不能用于2000}
unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure speed(count:word);stdcall;
const
  ExceptionUsed=$03;
var
  IDT:array [0..5]of byte;
  lpOldGate:dword;
begin
  asm
    sidt IDT
    mov ebx,dword ptr [IDT+2]
    add ebx,8*ExceptionUsed
    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
    int ExceptionUsed
    mov ebx,dword ptr[IDT+2]
    add ebx,8*ExceptionUsed
    mov edx,[lpOldGate]
    mov word ptr [ebx],dx
    shr edx,16d
    mov word ptr [ebx+6],dx
    jmp @@exit


    @@Ring0Code:
    mov al,$34
    out $43,al
    mov ax,Count
    out $40,al
    mov al,ah
    out $40,al
    iretd
  @@exit:
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  speed($6000);//慢
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Speed($1044);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
speed($500);
end;

end.

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )

编程爱好者论坛

本栏最新文章