backup

函数栈初始化

00B92340  push        ebp
00B92341  mov         ebp,esp
00B92343  sub         esp,0E4h
00B92349  push        ebx
00B9234A  push        esi
00B9234B  push        edi
00B9234C  lea         edi,[ebp-0E4h]
00B92352  mov         ecx,39h
00B92357  mov         eax,0CCCCCCCCh
00B9235C  rep stos    dword ptr es:[edi]rep:执行后边的语句ecx遍stosw:将eax值写入edi指向地址,           edi地址加4  

If汇编对照

if (i > 0 && i < 1)
008749B5  cmp      dword ptr [i],0
008749B9  jle         disifelse+3Ch (08749CCh)
008749BB  cmp      dword ptr [i],1
008749BF  jge        disifelse+3Ch (08749CCh)
{
008749CA  jmp      disifelse+56h (08749E6h)
}
else if (i > 10)
008749CC  cmp      dword ptr [i],0Ah
008749D0  jle         disifelse+4Dh (08749DDh)
{
008749D8  mov       dword ptr [i],eax
}
else
008749DB  jmp         disifelse+56h (08749E6h)
{
008749DD  nop
}
..........................................
CMP 条件
jle <下一个分支>
else if 和 else 开始处都有一个无条件跳转指令,阻止前面的分支结束后直接直接进入此分支

Switch汇编对照

Imm(,r0,r)

switch (c)
00343D35  mov      eax,dword ptr [c]
00343D38  mov      dword ptr [ebp-0D0h],eax
00343D3E  cmp      dword ptr [ebp-0D0h],0
00343D45  je          diswitch+42h (0343D52h)
00343D47  cmp      dword ptr [ebp-0D0h],1
00343D4E  je          diswitch+4Dh (0343D5Dh)
00343D50  jmp       diswitch+56h (0343D66h)
{
case 0:
00343D52  nop
break;
00343D5B  jmp         diswitch+56h (0343D66h)
case 1:
00343D5D  nop
break;
default:
break;
}
.....................................................
switch 不用于判断大小,所有都是je,分别跳转到每个case处,最后一个无条件跳转到default处

While循环汇编对照表

t = test-expr

if !t:

goto done

do ...while

while (_sum > 0)
013A3D05  cmp      dword ptr [_sum],0
013A3D09  jle         diswhile+36h (013A3D16h)
{
_sum--;
013A3D0B  mov     eax,dword ptr [_sum]
013A3D0E  sub       eax,1
013A3D11  mov     dword ptr [_sum],eax
}
013A3D14  jmp      diswhile+25h (013A3D05h)
.................................
A:CMP <循环变量>,<限制变量>JLE <循环外>(循环体)

Do-While循环汇编对照

Loop:

body_statement

t= test-expr

if t:

goto loop

do {
_sum++;
00971AB5  mov        eax,dword ptr [_sum]
00971AB8  add         eax,1
00971ABB  mov        dword ptr [_sum],eax
} while (_sum < 100);
00971ABE  cmp        dword ptr [_sum],64h
00971AC2  jl             disdo+25h (0971AB5h)
......................................
(循环体)
CMP <循环变量>,<限制变量>
JL <循环起点>

For循环汇编对照

for init-expr;test-expr;update-expr:

body-statement

转换为while

init-expr

while test-expr:

body-statement

update-expr

for (int i = 0; i < 50; i++)
00B91AB5  mov       dword ptr [ebp-14h],0
00B91ABC  jmp       disfor+37h (0B91AC7h)
00B91ABE  mov       eax,dword ptr [ebp-14h]
00B91AC1  add        eax,1
00B91AC4  mov       dword ptr [ebp-14h],eax
00B91AC7  cmp       dword ptr [ebp-14h],32h
00B91ACB  jge         disfor+48h (0B91AD8h)
{
_sum += i;
00B91ACD  mov        eax,dword ptr [_sum]
00B91AD0  add         eax,dword ptr [ebp-14h]
00B91AD3  mov        dword ptr [_sum],eax
}
00B91AD6  jmp         disfor+2Eh (0B91ABEh)
............................
MOV <循环变量>,<初始值>
JMP B
A:(   修改循环变量)...
B:  CMP <循环变量>,<限制变量>jge (跳出循环)循环体JMP A

C常用语句 汇编对照表相关推荐

  1. VBA经典常用语句400句

    VBA经典常用语句400句 定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有 ...

  2. python基础常用语句-Python基本语句

    在学习W3Cschool python高级教程之前,大家接触过许多python语句,在本文中我们将Python一些基本的常用语句做了汇总,并简单介绍下这些python常用语句的用途和标准格式,放在一起 ...

  3. python 语言-Python语言的一些基本常用语句

    在学习玩蛇网python教程高级篇之前,大家接触过许多python语句,在本文中我们将Python一些基本的常用语句做了汇总,并简单介绍下这些python常用语句的用途和标准格式,放在一起方便大家参考 ...

  4. CSDN的Markdown编辑器常用语句

    CSDN的Markdown编辑器还是挺好用的,比那个富文本编辑器用起清爽得多,那个富文本编辑器常常是一个换行符留很宽的距离,而且插入图片.代码等都没有Markdown编辑器方便.Markdown编辑器 ...

  5. legend2---开发常用语句

    legend2---开发常用语句 一.总结 一句话总结: 其实敲代码都是很类似的,比如ajax,模型等等,敲代码就是一个由生到熟的过程 1.ajax? $.post("{:url('broa ...

  6. mysql修改字段名称_MySQL增删改查的常用语句汇总

    以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop database 库名; 3.使用数据 ...

  7. SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用

    SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用 一.引言 在移动开发中,通常会用到一些小型的数据库进行数据管理.SQLite是一款十分小巧便捷的数据库,在iOS ...

  8. MongoDB常用语句

    记录一下MongoDB常用语句,顺带与SQL做个简单的对比. 1.查询(find) (1)查询所有结果 select * from articledb.article.find() (2)指定返回哪些 ...

  9. mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)

    MySQL常用的语句语法 注意:1. | 符号用来指出几个选中中的一个,因此NULL | NOT NULL 表示给出null 或 not null 2.包含在方括号中的关键字或子句是可选的(如 [li ...

最新文章

  1. Expression Blend实例中文教程(2) - 界面快速入门
  2. “xxxx“.zip:这个压缩文件格式未知或者数据已经被损坏,打不开压缩文件,总出现这个提示的解决方法
  3. 变电站计算机在线监控系统,变电站环境在线监测系统
  4. 喵喵的华为DevCloud使用指南(3)-项目构建和部署
  5. 【jQuery笔记Part1】08-jQuery操作css-获取设置样式
  6. Android开发系列(十七):读取assets文件夹下的数据库文件
  7. 978. 最长湍流子数组
  8. java游戏抽卡_怎么处理游戏中抽卡概率算法,每个卡有数量限制,抽完概率也会变。...
  9. [转载] python将图片进行base64编码, 解码
  10. java读取串口设备信息_Java--串口之间的通信及扫描枪的读取
  11. 浏览器中加载CNN进行手写数字识别,并部署到Gitee Page
  12. 关于百度地图(二):只需要定位,不需要地图(什么?回调混乱?一招解决!)
  13. idea类注释模板快捷键设置
  14. php-fpm 开机启动,mac系统,php-fpm加入开机启动项
  15. 详述TCP协议中重要的知识点
  16. Isaac SDK Sim 环境
  17. 机械硬盘显示容量0字节要如何办啊
  18. 远指针,近指针,巨指针
  19. 大型电子商务平台架构
  20. STM32 经过TM1637驱动四位数码管

热门文章

  1. C++基础之C++中的输入输出
  2. 飞利浦携最新健康科技创新成果亮相2021 CES数字展览会
  3. 传智健康-检查项管理
  4. 在魅族、vivo手机下Amaze UI底部导航消失问题
  5. 鸿蒙应用开发:视频播放器,真简单!!!
  6. 快速傅里叶变换 及MATLAB函数
  7. 第9课【USB协议】USB总线 接口 端点 管道 数据包 枚举 STM32_USB-FS-Device_Lib V4.1.0
  8. 模拟IC设计到底怎么学?给初学者一点建议
  9. NLP的文本分析与特征工程
  10. ESP32开发一_开发环境