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

(汇编) 基于VS的x86汇编基础指令

文章目录

  • 环境
  • 汇编基础
    • 标志位
    • 常用指令
  • vs配置
  • END

环境

visual studio 选择x86运行

示例代码

/**
| 32位 | 16位 | 高8位 | 低8位 |
| ---- | ---- | ----- | ----- |
| EAX  | AX   | AH    | AL    |*/
#include <iostream>int main() {int32_t x = 1;int32_t y = 2;// 简单加法示例__asm {mov eax, x;mov ebx, y;add eax, ebx;mov x, eax;};::std::printf("x = %d y = %d\n", x, y);return 0;
}

汇编基础

标志位

# visual studio 中的标志位
# OV UP EI PL ZR AC PE CY
  • OV 溢出
    • 超出表示范围为溢出 1,否则 0
  • UP 增量
    • 1:以递减顺序对数据串处理;0:以递增顺序对数据串处理
  • EI 允许中断
    • CPU允许中断1,否则0
  • PL 正
    • 运算结果为正则为1,否则0
  • ZR 零
    • 运算结果为0则为1,否则0
  • AC 辅助进位
    • 低4位向高位进位1,否则0
  • PE 奇偶校验
    • 最低16位中含1的个数为偶数为1,否则0
  • CY 进位
    • 最高位进位1,否则0

常用指令

此处介绍汇编的常用基础指令,不做过多展开,仅记录基本含义

指令作用e.g.
add加法add eax, ebx;
and按位与操作and eax, ebx;
call下一条指令地址入栈,跳到目标进行指令执行call 地址;
cmp操作数1-(符号扩展)操作数2
不保存,观察标志位
cmp eax, ebx;
dec自减dec eax;
div除法
结果,余数 (不同参数不同)
div bx;
imul乘法
(不同参数不同)
imul eax, ebx, ecx;
inc自增inc eax;
jmp跳转这是一系列指令
lea加载地址lea eax, 地址;
movmov eax, 114514;
movsd双精度赋值到寄存器
movss但精度数赋值到浮点寄存器
movsx/movsxd符号扩展传输
movs系列批量内存传输
movzx0扩 展传输
neg取反(±)neg eax;
not按位取反not eax;
or按照位或or eax, ebx;
pop及相关出栈pop eax;
push及相关入栈push eax;
rcl循环左移
最高位到cf,cf移入最低位
rcl eax, 次数;
rcr循环右移
cf填入最高位,最低位填入cf
rcr eax, 次数;
ret从栈中恢复地址ret ;
rol循环左移
最高位到cf和最低位,cf原值丢弃
rol eax, 次数;
ror循环右移
最低位填入最高和cf
ror eax, 次数
sar算数右移
符号位保留
sar eax, 数值;
shr逻辑右移
高位补0
shr eax, 次数
sub减法sub eax, ebx;
test按位与
不保存,观察标志位
cmp eax, ebx;
xor按位异或xor eax, ebx;

vs配置

寄存器

进入debug模式后,在顶部调试->窗口->寄存器

反汇编

在编辑界面,右击->转到反汇编

进入后右击选择显示具体信息

检测变量

注意设置不开优化




END

相关文章:

(汇编) 基于VS的x86汇编基础指令

文章目录 环境汇编基础标志位常用指令 vs配置END 环境 visual studio 选择x86运行 示例代码 /** | 32位 | 16位 | 高8位 | 低8位 | | ---- | ---- | ----- | ----- | | EAX | AX | AH | AL |*/ #include <iostream>int main() {int32_t x 1;int32_t y 2;//…...

算法Day16 | 104.二叉树的最大深度,559.n叉树的最大深度, 111.二叉树的最小深度,222.完全二叉树的节点个数

Day16 104.二叉树的最大深度559.n叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数 104.二叉树的最大深度 题目链接&#xff1a; 104.二叉树的最大深度 深度和高度相反。 高度&#xff0c;自然是从下向上数&#xff1a;叶子节点是第一层&#xff0c;往上数&#x…...

java设计模式之责任链设计模式的前世今生

责任链设计模式是什么&#xff1f; 责任链设计模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许多个对象都有机会处理请求&#xff0c;从而避免请求的发送者与接收者之间的耦合关系。在责任链模式中&#xff0c;每个处理对…...

是面试官放水,还是公司太缺人了?华为原来这么容易就进了...

华为是大企业&#xff0c;是不是很难进去啊&#xff1f;” “在华为做软件测试&#xff0c;能得到很好的发展吗&#xff1f; 一进去就有9.5K&#xff0c;其实也没有想的那么难” 直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节和腾…...

PLC/DCS系统常见的干扰现象及判断方法

一般来说&#xff0c;常见的干扰现象有以下几种&#xff1a; 1.系统发指令时&#xff0c;电机无规则地转动&#xff1b; 2.信号等于零时&#xff0c;数字显示表数值乱跳; 3。传感器工作时&#xff0c;DCS/PLC 采集过来的信号与实际参数所对应的信号值不吻合&#xff0c;且误…...

c++ 11标准模板(STL) std::map(四)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…...

6.开源非对称加密算法SM2实现

6.开源非对称加密算法SM2实现 前期内容导读&#xff1a; 开源加解密RSA/AES/SHA1/PGP/SM2/SM3/SM4介绍开源AES/SM4/3DES对称加密算法介绍及其实现开源AES/SM4/3DES对称加密算法的验证实现开源非对称加密算法RSA/SM2实现及其应用开源非对称加密算法RSA实现 1. 开源组件 非对称秘…...

Toolformer and Tool Learning(LLMs如何使用工具)

大模型的能力让学术和工业界都对通用人工智能的未来充满幻想&#xff0c;在前一篇博文中已经粗略介绍&#xff0c; Augmented Language Models&#xff08;增强语言模型&#xff09; ALM的两大思路是推理和工具&#xff0c;本篇博文整理两篇关于Toolformer或Tool Learning的论…...

029:Mapbox GL绘制铁路黑白交替的线段

第029个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载数据显示铁路标识的那种黑白交替的线段。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共94行)相关API参考:专栏目标示例效果 配置方式 1)…...

结对编程 --- 大部分程序员喜欢的编程方式

一、介绍 结对编程起源时间可以追溯到 1990 年代早期。这种编程方法最初由 Jim Highsmith 和 Alistair Cockburn 等人提出。后来&#xff0c;Kent Beck 和 Ward Cunningham 等人将其发展成为一种敏捷开发方法&#xff0c;被称为“极限编程”&#xff08;Extreme Programming&am…...

kubernetes-informer机制

一、概念 informer 是 client-go 中的核心工具包&#xff0c;在kubernetes中&#xff0c;各个组件通过HTTP协议跟 API Server 进行通信。如果各组件每次都直接和API Server 进行交互&#xff0c;会给API Server 和ETCD造成非常大的压力。在不依赖任何中间件的情况下&#xff0…...

LeetCode 2451. Odd String Difference【字符串,哈希表】简单

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

切片工具tippecanoe的全网最详细的解释

1.下载和安装 tippecanoe工具是mapbox官方提供的一个服务端切片工具,因此它是运行在服务器上的,它比较友好的支持mac和linux机器。对于windows来讲,就比较麻烦了。 首先对于mac系统,你只需配置好自己的homebrew,保证homebrew能够正常下载东西。 然后只需要一个命令: …...

Linux系统初始化命令的备忘单,Linux运维工程师收藏!

在管理和维护Linux系统时&#xff0c;有一些常用的命令可以帮助您进行系统初始化和配置。这些命令涵盖了各种任务&#xff0c;包括系统设置、用户管理、软件安装和网络配置等。 本文将为您提供一个Linux系统初始化命令的备忘单&#xff0c;以便在需要时方便查阅和使用。 系统设…...

五月最近一次面试,被阿里P8测开虐惨了...

都说金三银四涨薪季&#xff0c;我是着急忙慌的准备简历——5年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程...薪资要求&#xff1f;5年测试经验起码能要个20K吧 我加班肝了一页半简历&#xff0c;投出去一周&#xff0c;面试电话倒是不少&a…...

工业机器视觉缺陷检测工作小结

工业机器视觉检测工作小结 &#xff08;因为网上没有很系统的讲义和文档&#xff0c;都是零零散散的&#xff0c;因此&#xff0c;我自己尝试着总结一下、仅供参考&#xff09; 你想知道的大概率在这都可以找到、相机的了解镜头的了解光源的了解传统算法DL深度学习方法 &#…...

技术笔记:默默耕耘,赢得铁粉的秘密策略!

目录 第一步&#xff1a;真实实践&#xff0c;价值分享第二步&#xff1a;高质量文章的撰写第三步&#xff1a;积极互动&#xff0c;回复评论和留言第四步&#xff1a;定期更新和持续学习第五步&#xff1a;参与技术社区第六步&#xff1a;社区问答和问题解答总结 导语&#xf…...

回收站中怎么找回误删除的文件?这几种方法很实用

当我们在电脑上操作文件的时候&#xff0c;难免会有不小心删除文件的情况发生。这个时候&#xff0c;我们可以打开回收站来找回误删除的文件。但是&#xff0c;有时候我们也会误将回收站清空。那么&#xff0c;该怎样才能找回已经误删除的文件呢&#xff1f;在这里提供了回收站…...

Gateway网关参数进行验签POST 包含requestbody 请求体封装

Gateway网关自定义拦截器的不可重复读取数据 特别注意一点, 因为在网关层 拿出 request 流之后,必须重写getbody()方法把所有的参数放进去,否则后面转发的请求无法接收到任何数据, 坑,巨坑,因为版本问题网上很多都不能兼容, 我的springboot环境 依赖包 <parent><gr…...

【Netty】字节缓冲区 ByteBuf (六)(上)

文章目录 前言一、ByteBuf类二、ByteBuffer 实现原理2.1 ByteBuffer 写入模式2.2 ByteBuffer 读取模式2.3 ByteBuffer 写入模式切换为读取模式2.4 clear() 与 compact() 方法2.5 ByteBuffer 使用案例 总结 前言 回顾Netty系列文章&#xff1a; Netty 概述&#xff08;一&…...

图像做 DCT:揭秘那个让像素“开口说话“的数学魔法

一、一个让我"开窍"的乐谱解读故事 我有一个学钢琴的表妹&#xff0c;从小就有一种让我惊叹的能力——她听任何一段陌生的旋律&#xff0c;都能立刻在钢琴上准确弹出来。我一直觉得她有"绝对音感"这种天赋。有一次我好奇地问她&#xff1a;“你怎么做到的&…...

魔兽争霸3闪退修复终极指南:5步让你的经典游戏重获新生

魔兽争霸3闪退修复终极指南&#xff1a;5步让你的经典游戏重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3闪退而烦恼吗&…...

IEMOCAP数据集预处理实战:用Python和Librosa搞定语音情感识别的数据准备

IEMOCAP数据集预处理实战&#xff1a;用Python和Librosa搞定语音情感识别的数据准备语音情感识别&#xff08;SER&#xff09;作为人机交互领域的重要研究方向&#xff0c;其核心挑战之一是如何从原始音频中提取有效的特征表示。本文将手把手带你完成IEMOCAP数据集的预处理全流…...

高能物理数据分析实战:从W玻色子截面测量到机器学习应用

1. 项目概述&#xff1a;从海量对撞数据到物理发现如果你对宇宙的构成充满好奇&#xff0c;想知道我们是如何发现希格斯玻色子&#xff0c;或者顶夸克的质量是如何被精确测量的&#xff0c;那么高能物理数据分析就是你正在寻找的钥匙。这听起来可能离日常生活很远&#xff0c;但…...

自动去偏机器学习:正交损失与Riesz表示定理驱动的高效统计推断

1. 项目概述与核心价值在统计机器学习和因果推断的实际研究中&#xff0c;我们经常面临一个经典困境&#xff1a;为了捕捉数据中复杂的非线性关系&#xff0c;我们不得不使用像梯度提升树、深度神经网络这类灵活且强大的机器学习模型来拟合干扰参数&#xff08;例如倾向得分、条…...

从《原神》到《黑神话》都在用的AI Agent中间件:轻量级推理框架v0.9.3内部测试版首次泄露(仅限前500名开发者)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI Agent游戏行业应用全景图 AI Agent 正在重塑游戏开发、运营与玩家体验的全生命周期。从智能NPC行为建模到实时动态世界生成&#xff0c;从自动化测试脚本到个性化内容推荐&#xff0c;AI Agent已不再局限于…...

Decompyle++:Python字节码源码恢复实战指南

1. 这不是“反编译”&#xff0c;是字节码层面的源码重建——为什么Decompyle成了Python逆向事实标准你有没有遇到过这样的情况&#xff1a;接手一个只有.pyc文件的遗留项目&#xff0c;没有源码&#xff0c;连__pycache__目录都被人删干净了&#xff1b;或者审计第三方SDK时&a…...

ISP模型与硬件平台配置迁移实践指南

1. 理解ISP模型与硬件平台的配置迁移在图像信号处理器&#xff08;ISP&#xff09;开发过程中&#xff0c;我们经常需要在软件模型和实际硬件平台之间进行配置迁移。这种迁移的核心挑战在于确保模型仿真结果与硬件输出完全一致。根据我的经验&#xff0c;这涉及到两个主要操作模…...

Qwen模型 LeetCode 2581. 统计可能的树根数目 C++实现

哈哈&#xff0c;看来你对这道题特别感兴趣呀&#xff01;让我给你一个**终极优化版**的C实现&#xff0c;这次用位运算哈希 向量预分配&#xff0c;保证又快又稳&#xff01;cpp class Solution { public:int rootCount(vector<vector<int>>& edges, vector&…...

从零到亿级调用量:电商客服Agent重构实录(含对话状态机+意图跳转图+人工接管SLA协议)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;从零到亿级调用量&#xff1a;电商客服Agent重构实录&#xff08;含对话状态机意图跳转图人工接管SLA协议&#xff09; 面对日均峰值超1.2亿次的客服请求&#xff0c;原有基于规则匹配的客服Bot在大促期间频繁…...