详解x86汇编指令:test edx, edx

前言

有不少新手在学习汇编指令的时候可能会被网上一些人误导(很显然我就被误导了),认为test与cmp指令相同,都是在比较两个值是否相同的,那么来看这两个指令:

在这里插入图片描述

test edx,edx
jne 0040BCA3

jne 指令为不等于0时跳转

那么思考一下,这个jne会跳转吗。

edx与edx寄存器进行比较,那么肯定为true啊,true=1肯定跳转啊。

这实际上是错误的。

了解test指令

test指令并不是跟网上说的那样用来比较的,而是一个位操作的指令

用于将寄存器 edx 与自身进行按位与操作(AND)。这其实是一个快捷方式,用来测试寄存器的内容是否为零

test 指令的执行结果会影响 CPU 的标志位,特别是 ZF(零标志位)。如果 edx 的值是零,test edx, edx 的结果也会是零,进而设置 ZF 标志。如果 edx 的值不是零,ZF 标志不会被设置。

在这里插入图片描述

因此,jne 0040BCA3 仅在 ZF 未被设置时(即 edx 不为零时)执行跳转。如果 edx 是零,则跳

版权所有:XuanRan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值