位测试操作
點(diǎn)擊下載演示工程
BT指令
功能:用于對指定位進(jìn)行位測試(將該位送往CF),但并不改變該位的值。
BTS指令
功能:用于對指定位進(jìn)行位測試(將該位送往CF),并將該位置1。
BTC指令:
功能:用于對指定位進(jìn)行位測試(將該位送往CF),并將該位取反。
BTR指令:
功能:用于對指定位進(jìn)行位測試(將該位送往CF),并將該們清0。
JC指令:
功能:用于跳轉(zhuǎn),如果CF標(biāo)志位等于1則跳轉(zhuǎn)。
JNC指令:
???? 功能:用于跳轉(zhuǎn),如果CF標(biāo)志位等于0則跳轉(zhuǎn)。
關(guān)于二進(jìn)制串的位:
00001001? 這是一個(gè)有8個(gè)位的二進(jìn)制串,從最右邊數(shù)起第1個(gè)數(shù)字'1'稱為第0位,第2個(gè)數(shù)字稱為第1位,其它的依此類推。最高位是最左邊的數(shù)字,最低位是最右邊的數(shù)字。
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = 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;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); labelNotZero; begin{如果二進(jìn)制串(00001001b)的第3位(從右數(shù)起第1個(gè)二進(jìn)制位叫做第0位,那么第3位即是'1')為1那么跳轉(zhuǎn)到NotZero,否則退出過程。}asmXOR 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+'業(yè)務(wù)聯(lián)系QQ:82530662'); end;procedure TForm1.Button2Click(Sender: TObject); vari:Integer; labelNotZero; begin{如果二進(jìn)制串(00001001b)的第3位為1那么跳轉(zhuǎn)到NotZero,(并且把第3位取反,即執(zhí)行BTC指令后EAX=00000001),否則退出過程。}asmXOR 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); vari:Integer; labelNotZero; begin{如果二進(jìn)制串(00001001b)的第3位為1那么跳轉(zhuǎn)到NotZero,(并且把第3位復(fù)位,即執(zhí)行BTR指令后EAX=00000001),否則退出過程。}asmXOR EAX,EAX;MOV AL,00001001b;BTR EAX,3;MOV i,EAX;JC NotZero;end;Exit; NotZero:ShowMessage('位測試并復(fù)位后i的值為:'+IntToStr(i)); end;procedure TForm1.Button4Click(Sender: TObject); vari:Integer; labelIsZero; begin{如果二進(jìn)制串(00000001b)的第3位為0那么跳轉(zhuǎn)到IsZero,(并且把第3位置位,即執(zhí)行BTS指令后EAX=00001001),否則退出過程。}asmXOR EAX,EAX;MOV AL,00000001b;BTS EAX,3;MOV i,EAX;JNC IsZero;end;Exit; IsZero:ShowMessage('位測試并置位后i的值為:'+IntToStr(i)); end;end.轉(zhuǎn)載于:https://www.cnblogs.com/JiangHuakey/archive/2010/10/14/1851662.html
總結(jié)
- 上一篇: 利用序列化进行文件读写
- 下一篇: 深度剖析云计算背后采用的技术(转载)