(汇编) 基于VS的x86汇编基础指令 您所在的位置:网站首页 connect指令的含义 (汇编) 基于VS的x86汇编基础指令

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

2023-06-01 04:46| 来源: 网络整理| 查看: 265

文章目录 环境汇编基础标志位常用指令 vs配置END

环境

visual studio 选择x86运行

示例代码

/** | 32位 | 16位 | 高8位 | 低8位 | | ---- | ---- | ----- | ----- | | EAX | AX | AH | AL | */ #include 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填入最高位,最低位填入cfrcr eax, 次数;ret从栈中恢复地址ret ;rol循环左移最高位到cf和最低位,cf原值丢弃rol eax, 次数;ror循环右移最低位填入最高和cfror eax, 次数sar算数右移符号位保留sar eax, 数值;shr逻辑右移高位补0shr eax, 次数sub减法sub eax, ebx;test按位与不保存,观察标志位cmp eax, ebx;xor按位异或xor eax, ebx; vs配置

寄存器

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

反汇编

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

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

检测变量

注意设置不开优化

END


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有