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

汇编学习之《运算和逻辑指令》

工具使用:

学习之前我研究了下如何用cursor 配置c++,其实cursor就是和vscode一样, 去vscode官网查看就可以了。这里调试c++程序同步观察汇编执行情况很方便 。

cursor (vscode)配置c++

这章其实都很简单,但是为了加深映像,建议还是都敲一遍。

add 加法运算

其实这里比较简单,我放过来去搞了一个c++代码,然后同步调整汇编,观察执行过程。

MOV DWORD PTR SS:[ESP+0xC], 1
ADD DWORD PTR SS:[ESP+0xC],1

可以看到汇编中在栈段寄存器

sub减法运算

mov DWORD PTR [esp+0xc],0x2
sub DWORD PTR [esp+0xc],0x1

以上有一个问题, 我们c++代码申请了一个4个字节的整数的临时变量,为啥汇编语言是偏移了12个字节 (0xC), 有知道原因的朋友在评论区告诉我下呢?

逻辑与: and

mov eax, 1;

and eax, 2;

二进制: 0001 and  0010 ==> 0000 (十进制0)

相同为1, 不同为0

逻辑或: or

mov eax,1;

mov eax, 2;

二进制: 0001 or 0010 ==> 0011 (十进制3)

有一个为1,则为1

逻辑异或 xor 

mov eax,1

xor eax, 2

二进制: 0001 xor 0010 ==> 0011 (十进制3)

相同为0,不同为1

逻辑非 not 

mov eax, 3

not eax

二进制  not 0011 == >  1111 1111 1111 1111 1111 1111 1111 1100 (十六进制FFFFFFFC)

OD 查看32位,四个字节,所以前面的0也会被反转。

上一篇:汇编学习之《数据传输指令》

下一篇: 汇编学习之《移位指令》

http://www.dtcms.com/a/104638.html

相关文章:

  • GO语言学习(14)GO并发编程
  • 40.C++哈希6(哈希切割/分片/位图/布隆过滤器与海量数据处理场景)
  • 最大正方形(前缀和)
  • seq2seq
  • USB转串口数据抓包--Bus hound
  • 人工智能之数学基础:初等反射阵
  • C# Winform 入门(1)之跨线程调用,程序说话
  • 敏捷开发10:精益软件开发和看板kanban开发方法的区别是什么
  • Windows 下的多功能汉字笔顺学习与字帖生成软件
  • 三维重构 优质视频
  • 【TS学习】(15)分布式条件特性
  • RoboOS与RoboBrain:引领具身智能新时代的跨本体协作框架
  • SpringCloud概述
  • JMeter脚本录制(火狐)
  • 【多线程】线程池
  • 【开发问题记录】Docker Hub 执行 docker pull命令,拉取镜像失败/sudo docker run hello-world报错
  • 爬虫获取1688关键字搜索接口的实战指南
  • PyTorch量化进阶教程:第二章 Transformer 理论详解
  • [GESP202503 C++六级题解]:P11962:树上漫步
  • Docker学习--容器生命周期管理相关命令--docker rm 命令
  • 【word】导出批注具体到某段引用
  • 【一起来学kubernetes】31、Helm使用详解
  • Redis 02
  • 深入C++栈:从STL到底层实现的全面解析
  • TCP 三次握手与四次挥手深度解析(面试高频)
  • 百度热力图数据获取,原理,处理及论文应用25
  • SEO长尾关键词优化实战策略
  • webpack和vite的区别是什么
  • NAT穿越
  • Ollama+open-webui搭建私有本地大模型详细教程