【汇编程序】实现1-100偶数求和
我们在开始写汇编代码的时候,一般是先写出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偶数求和相关推荐
- python 1到n偶数求和 for结构_计算收入/for循环实现1~100偶数求和
""" 输入月收入和五险一金计算个人所得税deduction 扣除""" salary =float(input('请输入本月收入')) i ...
- python1到100偶数求和_python1-100怎样偶数求和?_后端开发
5个适合小白的Python开发必备工具(推荐)_后端开发 工欲善其事必先利其器,一个好的工具能起到事半功倍的效果,优秀工具的可以帮助开发者更方便的实现一些想法,下面这几个工具给我的工作也带来了很多便利 ...
- 19-6/28作业:100以内偶数求和
☞作业要求 ☞分析思路 在循环里面增加约束,使累加1变成累加2 ☞do-while循环代码 public class GaoSiFor { public static void main(String ...
- HDU2015 偶数求和
偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 杭电acm2015偶数求和
偶数求和 http://acm.hdu.edu.cn/showproblem.php?pid=2015 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- HDOJ 2015 偶数求和 解题报告
偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- C++描述杭电OJ 2015.偶数求和 ||
C++描述杭电OJ 2015.偶数求和 || Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个 ...
- 杭电 2015 偶数求和
http://acm.hdu.edu.cn/showproblem.php?pid=2015 偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- HDU2015 偶数求和【入门】
偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...
最新文章
- JQUERY打造隐藏在左侧的弹性弹出菜单
- Visual Studio 2015价格大幅下调
- java8 lamda快速入门
- 翻译 github上How to be a good programmer
- pureref 平移用不了_关于参考图管理神器 PureRef 的一些快捷键
- oracle 判断是否位汉字,js判断字符是否是汉字的两种方法小结
- mysql myisam 分表_mysql myisam简单分表设计
- [毕业生的商业软件开发之路]C#语法基础结构
- MyBatis3系列__05查询补充resultMap与resultType区别
- adb avd install 失败_Android 模拟器(emulator-5554...)出现错误解决办法
- VB连接SQL2000数据库代码
- python软件是什么作用,python-dotenv的用途是什么?
- Java一般操作 对象序列化和反序列化
- 求两个数最小公倍数的7种方法
- x战娘2服务器维护,x战娘2变态版攻略
- 积极心理学第十九课 如何让爱情天长地久
- JAVA实现Tom猫
- Windows无法连接到无线网络
- android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)
- 4k显示服务器,远程服务器4k显示器