(汇编) 基于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/22831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DID-M3D 论文学习

1. 解决了什么问题&#xff1f; 单目 3D 检测成本低、配置简单&#xff0c;对一张 RGB 图像预测 3D 空间的 3D 边框。最难的任务就是预测实例深度&#xff0c;因为相机投影后会丢失深度信息。以前的方法大多直接预测深度&#xff0c;本文则指出 RGB 图像上的实例深度不是一目了…

【学习日记2023.5.22】 之 套餐模块完善

4. 功能模块完善之套餐模块 4.1 新增套餐 4.1.1 需求分析与设计 产品原型 后台系统中可以管理套餐信息&#xff0c;通过 新增功能来添加一个新的套餐&#xff0c;在添加套餐时需要添加套餐对应菜品的信息&#xff0c;并且需要上传套餐图片。 新增套餐原型&#xff1a; 当填…

自动化如何做?爆肝整理企业自动化测试工具/框架选择实施,你要的都有...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…

web基础与HTTP协议

web基础与HTTP协议 一、域名概述二、网页的概念三、HTML四、web概述静态网页&#xff1a;动态页面动态页面与静态页面的区别 五、HTTP 一、域名概述 域名的概念&#xff1a;IP地址不易记忆 早期使用Hosts文件解析域名 – 主机名称重复 – 主机维护困难 DNS&#xff08;域名系…

大学4年做出来这个算不算丢人

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

开发者关系工程师如何帮助开发者在Sui上构建

近期&#xff0c;我们与Sui开发者关系负责人Brian Hennessey-Hsien进行了对话&#xff0c;就Sui上的开源、去中心化和开发者成就等话题展开讨论。 日前&#xff0c;我们采访了Sui基金会的开发者关系负责人Brian Hennessey-Hsieh&#xff0c;共同探讨了其对于Web3中开发者发展历…

2009.03-2022.06华证ESG季度评级(季度)

2009.03-2022.06华证ESG评级&#xff08;季度&#xff09; 1、时间&#xff1a;2009.03-2022.06.15 2、来源&#xff1a;整理自Wind 3、指标&#xff1a;华证ESG&#xff08;只有综合评级&#xff0c;无细分评级数据&#xff09; 4、样本数量&#xff1a;A股4800多家公司 …

【数据安全-02】AI打假利器数字水印,及java+opencv实现

AIGC 的火爆引燃了数字水印&#xff0c;说实话数字水印并不是一项新的技术&#xff0c;但是这时候某些公司拿出来宣传一下特别应景&#xff0c;相应股票蹭蹭地涨。数字水印是什么呢&#xff0c;顾名思义&#xff0c;和我们在pdf中打的水印作用差不多&#xff0c;起到明确版权、…

拉货搬家货运APP开发分析和功能列表

作为国家经济发展的重要基础设施&#xff0c;物流行业正在面对转型升级的风口。巨大的市场体量&#xff0c;也迎来了激烈的市场竞争。为了从同质化的服务中脱颖而出&#xff0c;开拓更大的市场&#xff0c;并且解决线下司机的载货痛点&#xff0c;货运APP的开发必不可少。 开发…

firewalld防火墙

firewalld防火墙 1&#xff1a;firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具&#xff0c;取代了之前的iptables防火墙&#xff0c;也是工作在网络层&#xff0c;属于包过滤防火墙。firewalld和iptables都是用来管理防火墙的工具&#xff08;属于用户态&a…

学习如何将Jenkins与UI测试报告完美整合,事半功倍,轻松获取高薪职位!

目录 引言 &#xff08;一&#xff09;在本地整合出报告 1.在cmd分别安装pytest和allure-pytest 2.进入需要执行的代码所在的路径 3.运行测试报告&#xff0c;代码如下 4.解析此json文件&#xff0c;代码如下&#xff08;新打开cmd进入路径&#xff09; 5.打开此HTML文件…

在CTEX文档生成中使用WinEit编辑带有公式符号的中文文档应用举例

CTEX文档生成中使用WinEit编辑带有公式符号的中文文档应用举例 CTEX在编辑文档格式和排版时具有优秀的性能&#xff0c;可批量处理文档格式&#xff0c;该用格式时候也非常快捷。下面举例介绍CTEX文档生成中怎样使用WinEit编辑带有公式符号的中文文档。 1.需要的代码 .在WinEi…

TPlinker解读

参考&#xff1a; 关系抽取之TPLinker解读加源码分析 TPLinker 实体关系抽取代码解读 实体关系联合抽取&#xff1a;TPlinker TPLinker中文注释版 Tagging TPLinker模型需要对关系三元组(subject, relation, object)进行手动Tagging&#xff0c;过程分为三部分&#xff1a; &…

springboot+java大学生新生入学报到报道系统+jsp004

新生报到系统分为学院管理员&#xff0c;宿舍管理员&#xff0c;财务管理员&#xff0c;辅导员&#xff0c;学生五种登录身份 学院管理员界面登入后台后有个人信息的展示&#xff0c;可对余下的四种身份信息进行增删改查&#xff0c;可进行对高考信息的导入导出&#xff0c;对报…

(三)ArcGIS空间数据的转换与处理——栅格数据变换

ArcGIS空间数据的转换与处理——栅格数据变换 目录 ArcGIS空间数据的转换与处理——栅格数据变换 1.地理配准2.平移3.扭曲4.旋转5.翻转6.重设比例尺7.镜像 数据变换是指对数据进行诸如放大、缩小、翻转、移动、扭曲等几何位置、形状和方位的改变等操作。对于 栅格数据的相应操…

chatgpt赋能python:Pythonsearchsorted:用于搜索排序数组的快速工具

Python searchsorted&#xff1a;用于搜索排序数组的快速工具 在Python编程中&#xff0c;有时需要在有序数组中快速查找值的位置。Python searchsorted工具提供了一种快速而高效的方法&#xff0c;可用于在已排序的数组中搜索值的位置。在本文中&#xff0c;将深入探讨Python…

震惊!人工智能引发灰色经济,ChatGPT变身罪魁祸首!

人工智能技术的日益发展和普及&#xff0c;其呈现出无边界的开发空间&#xff0c;引领出无数的商业应用&#xff0c;越来越多的领域开始依赖这一技术&#xff0c;各种应用场景日益丰富&#xff0c;而其内在的巨大潜力也被不断开发。随之而来的则是&#xff0c;因为技术的滥用和…

java泛型详解

一、什么是泛型&#xff1f; 泛型&#xff08;Generic type 或者 generics&#xff09;是对 Java 语言的类型系统的一种扩展&#xff0c;以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符&#xff0c;就像方法的形式参数是运…

最全iOS 上架指南

一、基本需求信息。 1、苹果开发人员账户&#xff08;公司已经可以无需申请&#xff0c;需要开启开发者功能&#xff0c;每年99美元&#xff09; 2、开发好应用程序 二、证书 上架版本需要使用正式证书。 1、创建Apple Developer证书 2、上传证书Sign In - Apple 3、点击开发者…

TCP通讯(三次握手、四次挥手;滑动窗口;TCP状态转换;端口复用;TCP心跳检测机制)

前言&#xff1a;建议看着图片&#xff0c;根据文字描述走一遍TCP通讯过程&#xff0c;加深理解。 目录 TCP通信时序&#xff1a; 1&#xff09;建立连接&#xff08;三次握手&#xff09;的过程&#xff1a; 2&#xff09;数据传输的过程&#xff1a; 3&#xff09;关闭连…
最新文章