汇编指令test的用法 汇编中的TEST指令

\u6c47\u7f16\u8bed\u8a00\u4e2dtest\u7684\u7528\u6cd5

Test\u5bf9\u4e24\u4e2a\u53c2\u6570(\u76ee\u6807\uff0c\u6e90)\u6267\u884cAND\u903b\u8f91\u64cd\u4f5c\uff0c\u5e76\u6839\u636e\u7ed3\u679c\u8bbe\u7f6e\u6807\u5fd7\u5bc4\u5b58\u5668\uff0c\u7ed3\u679c\u672c\u8eab\u4e0d\u4f1a\u4fdd\u5b58\u3002
TEST AX,BX \u4e0e AND AX,BX \u547d\u4ee4\u6709\u76f8\u540c\u6548\u679c\uff0c\u53ea\u662fTest\u6307\u4ee4\u4e0d\u6539\u53d8AX\u548cBX\u7684\u5185\u5bb9\uff0c\u800cAND\u6307\u4ee4\u4f1a\u628a\u7ed3\u679c\u4fdd\u5b58\u5230AX\u4e2d\u3002
Test\u547d\u4ee4\u5c06\u4e24\u4e2a\u64cd\u4f5c\u6570\u8fdb\u884c\u903b\u8f91\u4e0e\u8fd0\u7b97\uff0c\u5e76\u6839\u636e\u8fd0\u7b97\u7ed3\u679c\u8bbe\u7f6e\u76f8\u5173\u7684\u6807\u5fd7\u4f4d\u3002\u4f46\u662f\uff0cTest\u547d\u4ee4\u7684\u4e24\u4e2a\u64cd\u4f5c\u6570\u4e0d\u4f1a\u88ab\u6539\u53d8\u3002\u8fd0\u7b97\u7ed3\u679c\u5728\u8bbe\u7f6e\u8fc7\u76f8\u5173\u6807\u8bb0\u4f4d\u540e\u4f1a\u88ab\u4e22\u5f03\u3002
est\u7684\u4e00\u4e2a\u975e\u5e38\u666e\u904d\u7684\u7528\u6cd5\u662f\u7528\u6765\u6d4b\u8bd5\u4e00\u65b9\u5bc4\u5b58\u5668\u662f\u5426\u4e3a\u7a7a\uff1atest ecx, ecx jz somewhere\uff0c\u5982\u679cecx\u4e3a\u96f6\uff0c\u8bbe\u7f6eZF\u96f6\u6807\u5fd7\u4e3a1\uff0cjz\u8df3\u8f6c\u3002

\u6269\u5c55\u8d44\u6599
pytest \uff1a
pytest \u5141\u8bb8\u4f60\u5728\u4efb\u4f55\u540d\u4e3a test_*.py \u7684\u6587\u4ef6\u4e2d\u5b9a\u4e49\u6d4b\u8bd5\uff0c\u5e76\u5c06\u5176\u5b9a\u4e49\u4e3a\u4ee5 test_* \u5f00\u5934\u7684\u51fd\u6570\u3002\u7136\u540e\uff0cpytest \u5c06\u5728\u6574\u4e2a\u9879\u76ee\u4e2d\u67e5\u627e\u6240\u6709\u6d4b\u8bd5\uff0c\u5e76\u5728\u63a7\u5236\u53f0\u4e2d\u8fd0\u884c pytest \u65f6\u81ea\u52a8\u8fd0\u884c\u8fd9\u4e9b\u6d4b\u8bd5\u3002
pytest \u63a5\u53d7\u6807\u5fd7\u548c\u53c2\u6570 \uff0c\u5b83\u4eec\u53ef\u4ee5\u5728\u6d4b\u8bd5\u8fd0\u884c\u5668\u505c\u6b62\u65f6\u66f4\u6539\uff0c\u8fd9\u4e9b\u5305\u542b\u5982\u4f55\u8f93\u51fa\u7ed3\u679c\uff0c\u8fd0\u884c\u54ea\u4e9b\u6d4b\u8bd5\u4ee5\u53ca\u8f93\u51fa\u4e2d\u5305\u542b\u54ea\u4e9b\u4fe1\u606f\u3002
\u5b83\u8fd8\u5305\u62ec\u4e00\u4e2a set_trace() \u51fd\u6570\uff0c\u5b83\u53ef\u4ee5\u8fdb\u5165\u5230\u4f60\u7684\u6d4b\u8bd5\u4e2d\u3002\u5b83\u4f1a\u6682\u505c\u60a8\u7684\u6d4b\u8bd5\uff0c \u5e76\u5141\u8bb8\u4f60\u4e0e\u53d8\u91cf\u8fdb\u884c\u4ea4\u4e92\uff0c\u4e0d\u7136\u4f60\u53ea\u80fd\u5728\u7ec8\u7aef\u4e2d\u201c\u56db\u5904\u7ffb\u5f04\u201d\u6765\u8c03\u8bd5\u4f60\u7684\u9879\u76ee\u3002pytest \u6700\u597d\u7684\u4e00\u65b9\u9762\u662f\u5176\u5f3a\u5927\u7684\u63d2\u4ef6\u751f\u6001\u7cfb\u7edf\u3002
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-test

test\u5c5e\u4e8e\u903b\u8f91\u8fd0\u7b97\u6307\u4ee4\uff0c\u5176\u529f\u80fd\u4e3a\u529f\u80fd\u6267\u884cBIT\u4e0eBIT\u4e4b\u95f4\u7684\u903b\u8f91\u8fd0\u7b97\u548c\u6d4b\u8bd5\u529f\u80fd\uff08\u4e24\u64cd\u4f5c\u6570\u4f5c\u4e0e\u8fd0\u7b97,\u4ec5\u4fee\u6539\u6807\u5fd7\u4f4d\uff0c\u4e0d\u56de\u9001\u7ed3\u679c\uff09\u3002
Test\u5bf9\u4e24\u4e2a\u53c2\u6570\uff08\u76ee\u6807\uff0c\u6e90\uff09\u6267\u884cAND\u903b\u8f91\u64cd\u4f5c\uff0c\u5e76\u6839\u636e\u7ed3\u679c\u8bbe\u7f6e\u6807\u5fd7\u5bc4\u5b58\u5668\uff0c\u7ed3\u679c\u672c\u8eab\u4e0d\u4f1a\u4fdd\u5b58\u3002EST AX, BX\u4e0eAND AX, BX\u547d\u4ee4\u6709\u76f8\u540c\u6548\u679c\u3002TEST\u8bed\u6cd5\u89c4\u683c\uff1aTEST r/m,r/m/data\u3002\u5176\u5f71\u54cd\u6807\u5fd7\u5305\u62ec\uff1aC,O,P,Z,S(\u5176\u4e2dC\u4e0eO\u4e24\u4e2a\u6807\u5fd7\u4f1a\u88ab\u8bbe\u4e3a0)\u3002
test\u7684\u8fd0\u7528\u4e3e\u4f8b\uff1a\u5229\u7528Test\u6307\u4ee4\u6d4b\u8bd5\u4e00\u4e2a\u4f4d\uff0c\u4f8b\u5982\u5bc4\u5b58\u5668\uff1a
test eax, 100b;/b\u540e\u7f00\u610f\u4e3a\u4e8c\u8fdb\u5236/
jnz ******;/\u5982\u679ceax\u53f3\u6570\u7b2c\u4e09\u4e2a\u4f4d\u4e3a1,jnz\u5c06\u4f1a\u8df3\u8f6c/
jnz\u8df3\u8f6c\u7684\u6761\u4ef6\u975e0\uff0c\u5373ZF=0\uff0cZF=0\u610f\u5473\u7740\u96f6\u6807\u5fd7\u6ca1\u88ab\u7f6e\u4f4d\uff0c\u5373\u903b\u8f91\u4e0e\u7ed3\u679c\u4e3a1\u3002

\u6269\u5c55\u8d44\u6599\u4e0e\u6c47\u7f16\u6307\u4ee4test\u529f\u80fd\u76f8\u4eff\u7684\u8fd8\u6709cmp\u6307\u4ee4\uff0cCMP\u5c5e\u4e8e\u7b97\u672f\u8fd0\u7b97\u6307\u4ee4\uff0c\u5176\u529f\u80fd\u4e3a\u529f\u80fd\u4e3a\u6bd4\u8f83\u4e24\u4e2a\u503c(\u5bc4\u5b58\u5668,\u5185\u5b58,\u76f4\u63a5\u6570\u503c)\uff0c\u4e0eTest\u6307\u4ee4\u7684\u6d4b\u8bd5\u529f\u80fd\u76f8\u4eff\uff0c\u5176\u8bed\u6cd5\u683c\u5f0f\u4e3aCMP r/m,r/m/data\uff0c\u5f71\u54cd\u7684\u6807\u5fd7\u4f4d\u5305\u62ecC,P,A,Z,O\u3002
CMP\u6bd4\u8f83.(\u4e24\u64cd\u4f5c\u6570\u4f5c\u51cf\u6cd5,\u4ec5\u4fee\u6539\u6807\u5fd7\u4f4d,\u4e0d\u56de\u9001\u7ed3\u679c)\u3002cmp\u5b9e\u9645\u4e0a\u662f\u53ea\u8bbe\u7f6e\u6807\u5fd7\u4e0d\u4fdd\u5b58\u7ed3\u6784\u7684\u51cf\u6cd5\uff0c\u5e76\u8bbe\u7f6eZ-flag(\u96f6\u6807\u5fd7)\u3002\u96f6\u6807\u5fd7\u5f88\u50cfcarry\uff0c\u4e5f\u662f\u5185\u90e8\u6807\u5fd7\u5bc4\u5b58\u5668\u7684\u4e00\u4f4d\u3002
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-test\uff08\u6c47\u7f16\u6307\u4ee4\uff09
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-CMP\u6307\u4ee4

test属于逻辑运算指令,其功能为功能执行BIT与BIT之间的逻辑运算和测试功能(两操作数作与运算,仅修改标志位,不回送结果)。

Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。EST AX, BX与AND AX, BX命令有相同效果。TEST语法规格:TEST r/m,r/m/data。其影响标志包括:C,O,P,Z,S(其中C与O两个标志会被设为0)。

test的运用举例:利用Test指令测试一个位,例如寄存器:

test eax, 100b;/b后缀意为二进制/

jnz ******;/如果eax右数第三个位为1,jnz将会跳转/

jnz跳转的条件非0,即ZF=0,ZF=0意味着零标志没被置位,即逻辑与结果为1。

扩展资料

与汇编指令test功能相仿的还有cmp指令,CMP属于算术运算指令,其功能为功能为比较两个值(寄存器,内存,直接数值),与Test指令的测试功能相仿,其语法格式为CMP r/m,r/m/data,影响的标志位包括C,P,A,Z,O。

CMP比较.(两操作数作减法,仅修改标志位,不回送结果)。cmp实际上是只设置标志不保存结构的减法,并设置Z-flag(零标志)。零标志很像carry,也是内部标志寄存器的一位。

参考资料来源:百度百科-test(汇编指令)

参考资料来源:百度百科-CMP指令



test指令和and 指令执行同样的操作,但test指令不送回操作结果,而仅仅影响标志位。test al,01; 如al的最低位为1,则zf=0,否则zf=1 test指令

这类指令主要影响 ZF 标志位test ax,100b将 ax的值和100b进行“与”操作 ,但不改变ax本身若与操作的结果为零则ZF置位。

扩展资料:

汇编指令是汇编语言中使用的一些操作符和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。

通用数据传送指令

MOV 传送字或字节。

MOVSX 先符号扩展,再传送。

MOVZX 先零扩展,再传送。

PUSH 把字压入堆栈。

POP 把字弹出堆栈。

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈。

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈。

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈。

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈。

BSWAP 交换32位寄存器里字节的顺序。

XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)。

CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )。

XADD 先交换再累加.( 结果在第一个操作数里 )。

XLAT 字节查表转换。

参考资料来源:百度百科-汇编指令



这类指令主要影响 ZF 标志位
test ax,100b 将 ax的 值 和 100b进行“与”操作 ,但不改变ax本身
若与操作的结果为零则ZF置位

test影响OF,SF,ZF,AF,PF,CF

  • 姹囩紪鎸囦护test鐨勭敤娉
    绛旓細Test瀵逛袱涓弬鏁帮紙鐩爣锛屾簮锛夋墽琛孉ND閫昏緫鎿嶄綔锛屽苟鏍规嵁缁撴灉璁剧疆鏍囧織瀵勫瓨鍣紝缁撴灉鏈韩涓嶄細淇濆瓨銆侲ST AX, BX涓嶢ND AX, BX鍛戒护鏈夌浉鍚屾晥鏋溿俆EST璇硶瑙勬牸锛歍EST r/m,r/m/data銆傚叾褰卞搷鏍囧織鍖呮嫭锛欳,O,P,Z,S(鍏朵腑C涓嶰涓や釜鏍囧織浼氳璁句负0)銆倀est鐨勮繍鐢ㄤ妇渚嬶細鍒╃敤Test鎸囦护娴嬭瘯涓涓綅锛屼緥濡傚瘎瀛樺櫒锛歵est ea...
  • 姹囩紪鎸囦护test鐨勭敤娉
    绛旓細test鎸囦护鍜宎nd鎸囦护鎵ц鍚屾牱鐨勬搷浣滐紝浣唗est鎸囦护涓嶉佸洖鎿嶄綔缁撴灉锛岃屼粎浠呭奖鍝嶆爣蹇椾綅銆倀estal,01;濡俛l鐨勬渶浣庝綅涓1锛屽垯zf=0,鍚﹀垯zf=1test鎸囦护 杩欑被鎸囦护涓昏褰卞搷ZF鏍囧織浣峵estax锛100b灏哸x鐨勫煎拰100b杩涜鈥滀笌鈥濇搷浣滐紝浣嗕笉鏀瑰彉ax鏈韩鑻ヤ笌鎿嶄綔鐨勭粨鏋滀负闆跺垯ZF缃綅銆
  • 姹囩紪璇█涓test鐨勭敤娉
    绛旓細Test鍛戒护灏嗕袱涓搷浣滄暟杩涜閫昏緫涓庤繍绠楋紝骞舵牴鎹繍绠楃粨鏋滆缃浉鍏崇殑鏍囧織浣銆備絾鏄紝Test鍛戒护鐨勪袱涓搷浣滄暟涓嶄細琚敼鍙樸傝繍绠楃粨鏋滃湪璁剧疆杩囩浉鍏虫爣璁颁綅鍚庝細琚涪寮冦俥st鐨勪竴涓潪甯告櫘閬嶇殑鐢ㄦ硶鏄敤鏉ユ祴璇曚竴鏂瑰瘎瀛樺櫒鏄惁涓虹┖锛歵est ecx, ecx jz somewhere锛屽鏋渆cx涓洪浂锛岃缃甖F闆舵爣蹇椾负1锛宩z璺宠浆銆
  • 姹囩紪涓殑TEST鎸囦护
    绛旓細test鎵ц鐨勫氨鏄痑nd鐨鎸囦护锛屽彧涓嶈繃涓嶄細淇濆瓨and鎵ц鐨勭粨鏋滐紝鑰屾槸鏍规嵁and鐨勭粨鏋滆缃甪lags瀵勫瓨鍣ㄧ殑鍚勭鏍囧織 test al, 08h 灏辨槸娴嬭瘯al鐨勭4浣嶆槸涓嶆槸1锛8h = 0000 1000 鍚岀悊 test ax, 0200h 娴嬭瘯ax鐨勭10浣嶏紝 0200h = 0000 0010 0000 0000 test cl, 01h 娴嬭瘯cl鐨勭1浣嶏紝01h = 0000 0001 姣斿...
  • 璇锋暀涓姹囩紪璇彞闂(TEST 涓 CMP)
    绛旓細1.Test鐢ㄦ潵娴嬭瘯涓涓綅,渚嬪瀵勫瓨鍣: test eax, 100b; b鍚庣紑鎰忎负浜岃繘鍒 jnz ***; 濡傛灉eax鍙虫暟绗笁涓綅涓1,jnz灏嗕細璺宠浆 鎴戞槸杩欐牱鎯崇殑,jnz璺宠浆鐨勬潯浠舵槸ZF=0,ZF=0鎰忓懗鐫ZF(闆舵爣蹇)娌¤缃綅,鍗抽昏緫涓庣粨鏋滀负1. 2.Test鐨涓涓潪甯告櫘閬鐨勭敤娉鏄敤鏉ユ祴璇曚竴鏂瑰瘎瀛樺櫒鏄惁涓虹┖: test ecx, ec...
  • 姹囩紪璇█TEST鎸囦护
    绛旓細TEST鎸囦护鍜孉ND鎸囦护鎵ц鍚屾牱鐨勬搷浣滐紝浣員EST鎸囦护涓嶉佸洖鎿嶄綔缁撴灉锛岃屼粎浠呭奖鍝嶆爣蹇椾綅銆備緥濡傦細TEST EAX锛01H 锛涙寚浠や細鎶婂瘎瀛樺櫒EAX涓殑鍊煎拰1杩涜鎸変綅鐩镐笌锛屽苟褰卞搷鏍囧織浣嶃傚鏋淓AX鐨勬渶浣庝綅涓1鍒欐爣蹇椾綅ZF涓0锛屽惁鍒橺F涓1銆傜敤TEST鍙互鍒ゆ柇鏌愪竴浣嶆槸1杩樻槸0锛屼篃鍙互鍒ゆ柇鏌愬嚑浣嶆槸鍚﹀叏涓0 ...
  • 璇烽棶涓涓姹囩紪璇█涓殑test璇彞闂銆
    绛旓細TEST鎸囦护鎵ц鍚嶤F=0锛孫F=0锛孉F涓嶇‘瀹氾紝SF銆乑F銆丳F鏍规嵁鎸囦护鎵ц缁撴灉纭畾銆傚洜涓轰竴涓暟涓庢湰韬繘琛屸滀笌鈥濇搷浣滅殑缁撴灉杩樻槸杩欎釜鏁帮紝鍥犳鍙互鏍规嵁SF銆乑F鏉ョ‘瀹氳繖涓暟鏄惁鏄礋鏁帮紝闆讹紝杩樻槸姝f暟銆傚鏋淪F=1 锛屽垯涓鸿礋鏁帮紱SF=0锛屽垯涓烘鏁帮紱ZF=1锛屽垯涓0锛孼F=1锛屽垯涓嶄负0銆
  • 姹囩紪璇█鐨TEST鎸囦护鍙笉鍙互璇︾粏瑙i噴鏁欐垜鍛?鏈濂芥湁渚嬪瓙銆俆HANKS!_鐧惧害...
    绛旓細瑙f瀽:TEST鎸囦护鍜孉ND鎸囦护宸笉澶氾紝鍙槸AND鎸囦护鎵ц鍚庝細鎶婄粨鏋滈佸埌鐩殑鎿嶄綔鏁帮紝鑰孴EST鍗翠笉浼氾紝鍙槸褰卞搷鏍囧織浣 渚嬪锛氭祴璇旳L涓殑bit3浣嶏紝浣跨敤TEST AL,08H锛庤嫢ZF=1,琛ㄧず璇ヤ綅鏄0锛岃嫢ZF锛0锛岄偅涔堣浣嶈〃绀1锛庣敤鍝釜鏁版潵娴嬭瘯瀵勫瓨鍣ㄧ殑浣嶏紝渚嬪鏈緥锛08H琛ㄧず浜岃繘鍒舵暟***B锛宐it3浣嶆槸1锛屽叾浣欐槸0锛屾墍浠ョ敤 ...
  • 姹囩紪璇█涓TEST AX,DX 鏄粈涔堟剰鎬濆晩?
    绛旓細鎸囦护TEST鍜孉ND鎸囦护涓鏍凤紝瀹炵幇鈥滀笌鈥濊繍绠椼備笉涓鏍风殑灏辨槸锛孴EST涓嶄慨鏀瑰瘎瀛樺櫒鐨勫硷紝鍙奖鍝嶆爣蹇椾綅锛汚ND淇敼瀵勫瓨鍣ㄧ殑鍊硷紝鍚屾椂涔熷奖鍝嶆爣蹇椾綅銆俆EST AX,DX鐨勬剰鎬濆氨鏄細灏咥X涓殑鍊煎拰DX涓殑鍊艰繘琛屸滀笌鈥濊繍绠楋紝浣嗘槸涓嶄慨鏀笰X鐨勫硷紝鍙奖鍝嶆爣蹇椾綅銆
  • 姹囩紪涓殑test鍜宑mp鏈変粈涔堝尯鍒?绛斿鏈夊姞鍒!!!
    绛旓細test閫氬父鐢ㄤ簬妫娴嬫煇浜涗綅鏄惁涓1锛屼絾鍙堜笉甯屾湜鏀瑰彉鎿嶄綔鏁扮殑鍦哄悎銆傛瘮濡傛鏌L涓殑浣6鍜屼綅2鏄惁鏈変竴浣嶄负1锛屽彲浠ョ敤濡備笅鎸囦护锛歵est AL锛01000100b锛屽鏋滆繖涓や釜浣嶅叏涓0.鍒橺F鐨勫间负1锛屽惁鍒欐竻0锛岄偅涔堟牴鎹爣蹇椾綅璁剧疆鐨勮烦杞氨鍙兘涓簀z鎴杍nz 杩欎袱鏉鎸囦护鐨鐩稿悓鐐规槸閮戒笉浼氬奖鍝嶆搷浣滄暟锛屽彧鏄氳繃鏍囧織瀵勫瓨鍣ㄧ殑鏌愪簺...
  • 扩展阅读:汇编指令大全 ... 汇编语言指令test ... 汇编test指令详解 ... test al 80h ... test是什么汇编指令 ... linux test命令 ... 汇编test指令怎么用 ... test指令详解大全 ... test是什么意思 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网