我们在开始写汇编代码的时候,一般是先写出C语言的实现,然后再翻译成汇编的实现。

在这个过程中,我们还可以利用IDE的反汇编功能查看编译器是如何帮我们生成汇编代码的,以及思考编译器为什么这样做,搞懂了这些,不论是对我们的C语言还是汇编语言都有很大的提升。

C语言代码实现如下:

#include <stdio.h>
int main()
{int sum = 0;for (int i = 1; i <= 100; i++){if (i % 2 == 0)sum = sum + i;}printf("the sum is : %d\n", sum);return 0;
}

汇编中寄存器对应C中变量关系如下:

ecx==sum

esi==i

汇编语言代码实现如下:

INCLUDELIB kernel32.lib
INCLUDELIB ucrt.lib
INCLUDELIB legacy_stdio_definitions.lib.386
.model flat,stdcallExitProcess PROTO,
dwExitCode:DWORDprintf    PROTO C : dword,:vararg
scanf    PROTO C : dword,:vararg.data
format byte 'the sum is : %d',10,0;这里的10代表换行,0代表字符串以0结尾.code
main Procxor ecx,ecx;将ECX寄存器的值清零,相当与int sum = 0mov esi,1;给ESI寄存器赋初值1,相当于int i = 1jmp testing;跳转到条件测试
body:mov eax,esi;将ESI的值赋给EAX,EAX为被除数mov ebx,2;将2赋值给EBX,EBX为除数cdqdiv ebx;EAX / EBX ,EDX存有结果的余数cmp edx,0;EDX的值和0进行比较jne next;不为0则跳转到nextadd ecx,esi;为0则代表为偶数,这里进行累加,相当于sum = sum + i
next:inc esi;ESI = ESI + 1,相当于i++
testing:cmp esi,100;将esi和100的值进行比较,相当于 i <= 100jle body;跳转到bodyinvoke printf,offset format,ecx;输出计算结果,相当于printf("%d\n",sum)push 0hcall ExitProcess
main endp
end main

编译运行后结果如下:

【汇编程序】实现1-100偶数求和相关推荐

  1. python 1到n偶数求和 for结构_计算收入/for循环实现1~100偶数求和

    """ 输入月收入和五险一金计算个人所得税deduction 扣除""" salary =float(input('请输入本月收入')) i ...

  2. python1到100偶数求和_python1-100怎样偶数求和?_后端开发

    5个适合小白的Python开发必备工具(推荐)_后端开发 工欲善其事必先利其器,一个好的工具能起到事半功倍的效果,优秀工具的可以帮助开发者更方便的实现一些想法,下面这几个工具给我的工作也带来了很多便利 ...

  3. 19-6/28作业:100以内偶数求和

    ☞作业要求 ☞分析思路 在循环里面增加约束,使累加1变成累加2 ☞do-while循环代码 public class GaoSiFor { public static void main(String ...

  4. HDU2015 偶数求和

    偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  5. 杭电acm2015偶数求和

    偶数求和 http://acm.hdu.edu.cn/showproblem.php?pid=2015 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  6. HDOJ 2015 偶数求和 解题报告

    偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. C++描述杭电OJ 2015.偶数求和 ||

    C++描述杭电OJ 2015.偶数求和 || Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个 ...

  8. 杭电 2015 偶数求和

    http://acm.hdu.edu.cn/showproblem.php?pid=2015 偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  9. HDU2015 偶数求和【入门】

    偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...

最新文章

  1. JQUERY打造隐藏在左侧的弹性弹出菜单
  2. Visual Studio 2015价格大幅下调
  3. java8 lamda快速入门
  4. 翻译 github上How to be a good programmer
  5. pureref 平移用不了_关于参考图管理神器 PureRef 的一些快捷键
  6. oracle 判断是否位汉字,js判断字符是否是汉字的两种方法小结
  7. mysql myisam 分表_mysql myisam简单分表设计
  8. [毕业生的商业软件开发之路]C#语法基础结构
  9. MyBatis3系列__05查询补充resultMap与resultType区别
  10. adb avd install 失败_Android 模拟器(emulator-5554...)出现错误解决办法
  11. VB连接SQL2000数据库代码
  12. python软件是什么作用,python-dotenv的用途是什么?
  13. Java一般操作 对象序列化和反序列化
  14. 求两个数最小公倍数的7种方法
  15. x战娘2服务器维护,x战娘2变态版攻略
  16. 积极心理学第十九课 如何让爱情天长地久
  17. JAVA实现Tom猫
  18. Windows无法连接到无线网络
  19. android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)
  20. 4k显示服务器,远程服务器4k显示器

热门文章

  1. [Matlab] 界面布局最牛篇
  2. 谈谈css中的伪类和伪元素,谈谈css中的伪类和伪元素
  3. 《鬼谷子本经阴符七术》1五龙盛神法 (翻译)
  4. DSP/BIOS的基本介绍
  5. 中科院学术专用版GPT Academic项目实现
  6. 如何让直通车点击率做到5~8% ,PPC下降到3~5毛?
  7. Python 爬虫入门四——代理服务器
  8. 抖查查参数解析 【2023/03/29】
  9. 4.3寸RGB屏幕显示泛红
  10. 将logo转换为ico图标