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

news/2024/12/29 15:15:40/

文章目录

  • 环境
  • 汇编基础
    • 标志位
    • 常用指令
  • 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.ppmy.cn/news/84216.html

相关文章

多模态对话语言模型-VisualGLM-6B

多模态对话语言模型-VisualGLM-6B 一、简介二、使用模型推理三、部署工具网页版 DemoAPI部署四、example五、交流一、简介 VisualGLM-6B 是一个开源的,支持图像、中文和英文的多模态对话语言模型,语言模型基于 ChatGLM-6B,具有 62 亿参数;图像部分通过训练 BLIP2-Qformer 构…

多地住建局推广工程资料电子化,帮助工程企业“降本增效”

工程资料签署和管理是每个在建工程绕不开的课题&#xff0c;庞大的签署量、动则几十万的签署成本如何优化&#xff1b;有关部门的合规审查如何过关…纸质工程资料需要面对的难题还有很多&#xff1a; 麻烦&#xff1a;从工程立项申报、审批、设计、施工到验收等全过程中产生的大…

如何使用Python和wxPython构建一个HTML Title提取工具

以下代码可以用于以下场景&#xff1a; 在Web开发中&#xff0c;获取网页中的Title内容&#xff0c;以用于页面SEO。在数据挖掘和分析中&#xff0c;获取包含Title信息的HTML页面&#xff0c;以进行进一步的文本处理和分析。在一些需要从HTML源代码中获取元数据的应用中&#…

最全iOS 上架指南

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

【ChatGPT】不会用ChatGPT?这几个镜像网站解决你的烦恼。

个人主页&#xff1a;【&#x1f60a;个人主页】 文章目录 前言ChatGPT介绍WoChatA TalkChatGPT Next WebAI EDUCHATGPTSITES 前言 还在为需要魔法才能与ChatGPT见上一面而叹息吗&#xff0c;今我就为大家汇总了国内能使用ChatGPT的方法。 也就是用国内的镜像网站玩ChatGPT&…

AI别来搅局,ChatGPT的世界不懂低代码

ChatGPT单月访问量再创新高 根据SimilarWeb统计&#xff0c;ChatGPT上月全球访问量17.6亿次&#xff0c;已超越必应、鸭鸭走DuckDuckGo等其他国际搜索引擎&#xff0c;并达到谷歌的2%&#xff0c;百度的60%。 这会&#xff0c;程序员失业的段子又得再来一遍了&#xff1a; 拖…

vue3依赖注入

props逐级透传问题&#xff1a;父组件向子组件传递数据时用props&#xff1b;如果父组件要传递数据给孙子组件&#xff0c;那么需要父组件props传递给子组件&#xff0c;子组件再把props传递给孙子组件&#xff1b;这样沿着组件链传递下去&#xff0c;非常麻烦。 provide和inj…

关于宝塔部署jar包和war包

文章目录 前言一、jar包部署二、war包部署1.maven如果打包不了使用命令打包2.安装Tomcat进行访问是否成功2.进入Tomcat目录进行配置war包 一、项目访问方法 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、jar包部署 1.其实jar包没什么讲的&…