位测试操作
时间: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.
相关阅读 更多 +
排行榜 更多 +