test edi, edi是什么作用???

jacky_shen 2004-07-15 12:13:11
....
mov edi, [eax]
test edi, edi
jnle +$1a
test edi, edt
jnl +$07
....

test edi, edi <---- 是什么作用???
...全文
1035 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallmaster 2004-07-15
  • 打赏
  • 举报
回复
错了,是1
smallmaster 2004-07-15
  • 打赏
  • 举报
回复
设置z标志位为0
dunkel 2004-07-15
  • 打赏
  • 举报
回复
test edi, edi 这类的源操作数和目的操作一致的时候, 一般有两类作用: 一是看看该寄存器是否为 0; 另外就是看看是正数还是负数:
...
test edi, edi
jz l_zero ; 是 0, 转去 l_zero 处
l_notzero: ; 不是 0
....

下面的是从反汇编软件里出来的吧
mov edi, [eax]
test edi, edi ; 检查 edi
jnle +$1a ; 不小于/等于转走, 即 大于 0 时转走
test edi, edt ; test edi, edi ? 如果是的话, 应该没有必要了, 可以直接继续判断的
jnl +$07 ; 不小于转走, 由上面的条件下来的话, 实际上就是 等于 0 时转走
... ; 这里就是 edi 小于 00 时
jacky_shen 2004-07-15
  • 打赏
  • 举报
回复
To: smallmaster(小和尚)

那test edi, edi
又表示什么含义呢?

edi and edi = edi

mov edi, [eax]
test edi, edi
jnle +$1a
test edi, edt
jnl +$07

对其后的指令是如何变化的呢?
smallmaster 2004-07-15
  • 打赏
  • 举报
回复
我是用MASM的,不用TEST,所以时间一长就生疏了。
qxhzzz 2004-07-15
  • 打赏
  • 举报
回复
楼上说的非常好,本人十分烦test指令,每次总搞不懂条件。。
谢谢了。。。
smallmaster 2004-07-15
  • 打赏
  • 举报
回复
Sorry.太久没用,有点生疏,所以被一本烂书扰乱视线。
ZF zero flag 零标志 运算结果等于0时为1,否则为0.
TEST OPR1 , OPR2 //Byte/Word
执行操作:opr1 & opr2
1.两个操作数相与的结果不保存,结果影响标志位PF,SF和ZF,使CF=0, OF=0,而AF位无定义.
2.TEST指令常用于在不改变原有的操作数的情况下,检测某一位或某几位的条件是否满足.只要令用来测试的操作数对应检测位为1,其余位为0,相与后判断零标志ZF值的真假.
检测某位是否为1:
令用来测试的操作数对应检测位为1,其余位为0,TEST指令后,若该位为1则 JNZ...
TEST AL , 0000 00001B //测试AL最低位是否为1:: 令用来测试的操作数对应检测位为1,其余位为0,执行TEST指令
JNZ THER  //最低位若为1, 则ZF=FALSE(0), 执行JNZ THER, 否则执行下一条指令.
或者:先对操作数求反,令用来测试的操作数对应检测位为1,其余位为0,TEST指令后,若该位为1则JZ...
MOV DL , AL //将AL 传送到DL,主要是不要影响AL的值. 以下测试AL的b2位是否为1
NOT DL //先对操作数求反
TEST 0000 0100B //令用来测试的操作数对应检测位为1,其余位为0,执行TEST指令
JZ THER //若AL的b2位为1,则ZF=TRUE(1), 执行JZ THER



jacky_shen 2004-07-15
  • 打赏
  • 举报
回复
上面的代码是在Delphi的CPU窗口中部分代码,
通过
test edi, edi后 CF OF ZF 都为0

To: herofour444(不只是吸引)
$表示数值是十六进制的。
herofour444 2004-07-15
  • 打赏
  • 举报
回复
jnle +$1a
jnl +$07
是什么意思,$ 是什么意思

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧