当前位置: 首页 > article >正文

详解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


http://www.kler.cn/news/311181.html

相关文章:

  • 如何基于Redis通过对接阿里云短信服务实现验证码登录
  • LeetCode 876
  • 后端往前端传递数据json方法大全
  • 汇编实现从1加到1000(《X86汇编语言 从实模式到保护模式(第2版》) 第135页第2题解答)
  • 【Kubernetes】常见面试题汇总(十三)
  • 学习ROS2第一天—新手笔记(humble版本)
  • 关于Redis
  • Mamba YOLO World
  • 集合是什么
  • 金手指设计
  • CefSharp_Vue交互(Element UI)_WinFormWeb应用(3)---通过页面锁屏和关机(含示例代码)
  • 新的突破,如何让AI与人类对话变得“顺滑”:Moshi背后的黑科技
  • 【Webpack--011】配置开发和生产模式的webpack.config.js
  • 【算法】滑动窗口—找所有字母异位词
  • 解决使用nvm ls命令没有出现*的问题
  • 华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 2024 E卷 200分)
  • 【分立元件】案例:新人加了个TVS管为什么可能导致系统不能正常工作
  • 【Unity】URP Rendering总结
  • 【C++STL简介】——我与C++的不解之缘(八)
  • 【PyTorch】深入浅出PyTorch
  • 模版进阶(template)
  • Java项目: 基于SpringBoot+mybatis+maven洗衣店订单管理系统(含源码+数据库+开题报告+任务书+毕业论文)
  • 【Flink Flick CDC】学习笔记
  • 架构设计 - 常用日志收集方案选型对比与推荐
  • 【java面试每日五题之基础篇一】(仅个人理解)
  • ACL 2024:交叉领域情感分析——论文阅读笔记
  • Kotlin cancel CoroutineScope.launch的任务后仍运行
  • PDF标准详解(五)——图形状态
  • 104. 二叉树的最大深度【 力扣(LeetCode) 】
  • VIM使用技巧