文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>位测试操作

位测试操作

时间:2010-10-14  来源:江湖一键客

点击下载演示工程

BT指令
  功能:用于对指定位进行位测试(将该位送往CF),但并不改变该位的值。
BTS指令
  功能:用于对指定位进行位测试(将该位送往CF),并将该位置1。
BTC指令:

  功能:用于对指定位进行位测试(将该位送往CF),并将该位取反。
BTR指令:

  功能:用于对指定位进行位测试(将该位送往CF),并将该们清0。

JC指令:

  功能:用于跳转,如果CF标志位等于1则跳转。

JNC指令:

     功能:用于跳转,如果CF标志位等于0则跳转。

关于二进制串的位:

  00001001  这是一个有8个位的二进制串,从最右边数起第1个数字'1'称为第0位,第2个数字称为第1位,其它的依此类推。最高位是最左边的数字,最低位是最右边的数字。

unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
label
    NotZero;
begin
      {如果二进制串(00001001b)的第3位(从右数起第1个二进制位叫做第0位,那么第3位即是'1')
       为1那么跳转到NotZero,否则退出过程。}
      asm
          XOR EAX,EAX;
          MOV AL,00001001b;
          BT EAX,3;
          JC NotZero;
      end;
      Exit;
NotZero:
      ShowMessage('程序名称:位测试操作'+#13+
                  '版本:1.0.0.0'+#13+
                  '日期:2010-10-14'+#13+
                  '作者:江湖一键客'+#13+
                  '业务联系QQ:82530662');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
    i:Integer;
label
    NotZero;
begin
      {如果二进制串(00001001b)的第3位为1那么跳转到NotZero,(并且把第3位取反,即执行BTC指令后
       EAX=00000001),否则退出过程。}
      asm
          XOR EAX,EAX;
          MOV AL,00001001b;
          BTC EAX,3;
          MOV i,EAX;
          JC NotZero;
      end;
      Exit;
NotZero:
      ShowMessage('位测试并取反后i的值为:'+IntToStr(i));
end;

procedure TForm1.Button3Click(Sender: TObject);
var
    i:Integer;
label
    NotZero;
begin
      {如果二进制串(00001001b)的第3位为1那么跳转到NotZero,(并且把第3位复位,即执行BTR指令后
       EAX=00000001),否则退出过程。}
      asm
          XOR EAX,EAX;
          MOV AL,00001001b;
          BTR EAX,3;
          MOV i,EAX;
          JC NotZero;
      end;
      Exit;
NotZero:
      ShowMessage('位测试并复位后i的值为:'+IntToStr(i));
end;

procedure TForm1.Button4Click(Sender: TObject);
var
    i:Integer;
label
    IsZero;
begin
      {如果二进制串(00000001b)的第3位为0那么跳转到NotZero,(并且把第3位置位,即执行BTS指令后
       EAX=00001001),否则退出过程。}
      asm
          XOR EAX,EAX;
          MOV AL,00000001b;
          BTS EAX,3;
          MOV i,EAX;
          JNC IsZero;
      end;
      Exit;
IsZero:
      ShowMessage('位测试并置位后i的值为:'+IntToStr(i));
end;

end.

相关阅读 更多 +
排行榜 更多 +
我是班长去广告版下载

我是班长去广告版下载

模拟经营 下载
什么鸭小游戏安卓版下载

什么鸭小游戏安卓版下载

策略塔防 下载
极光影院官方最新版本2025下载

极光影院官方最新版本2025下载

趣味娱乐 下载