_main函数调用子函数.ppt

_main函数调用子函数.ppt

ID:48741508

大小:350.00 KB

页数:20页

时间:2020-01-21

_main函数调用子函数.ppt_第1页
_main函数调用子函数.ppt_第2页
_main函数调用子函数.ppt_第3页
_main函数调用子函数.ppt_第4页
_main函数调用子函数.ppt_第5页
资源描述:

《_main函数调用子函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、main函数调用子函数---活动记录的变化//―――――――――――――――――――――――――――――//first//―――――――――――――――――――――――――――――/*voidsum(intx,inty){intresult;result=x+y;}voidmain(intargc,char*argv[]){inta=1;intb=2;sum(a,b);}*/汇编代码(一)1:#include2:3:voidsum(intx,inty)4:{00401020pu

2、shebp00401021movebp,esp00401023subesp,44h00401026pushebx00401027pushesi00401028pushedi00401029leaedi,[ebp-44h]0040102Cmovecx,11h00401031moveax,0CCCCCCCCh00401036repstosdwordptr[edi]5:intresult;6:7:result=x+y;00401038moveax,dwordptr[ebp+8]0040103Badde

3、ax,dwordptr[ebp+0Ch]0040103Emovdwordptr[ebp-4],eax8:}00401041popedi00401042popesi00401043popebx00401044movesp,ebp00401046popebp00401047ret9:10:11:voidmain(intargc,char*argv[])12:{00401060pushebp汇编代码(二)00401061movebp,esp00401063subesp,48h00401066pushe

4、bx00401067pushesi00401068pushedi00401069leaedi,[ebp-48h]0040106Cmovecx,12h00401071moveax,0CCCCCCCCh00401076repstosdwordptr[edi]13:inta=1;00401078movdwordptr[ebp-4],114:intb=2;0040107Fmovdwordptr[ebp-8],215:16:sum(a,b);00401086moveax,dwordptr[ebp-8]00

5、40108Ecall@ILT+5(sum)(0040100a)00401093addesp,817:}00401096popedi00401097popesi00401098popebx00401099addesp,48h0040109Ccmpebp,esp0040109Ecall__chkesp(004010c0)004010A3movesp,ebp004010A5popebp004010A6ret00401089pusheax0040108Amovecx,dwordptr[ebp-4]004

6、0108Dpushecx代码分析及表格(一)1.把ebp压入栈中2.把esp的值赋值给ebp3.让esp指向esp-48h的地方4.ebx,esi,edi依次进栈,3次压栈使得esp-35.取得ebp-48h的偏移地址放入edi中6.声明整型变量a并赋值1,由把1放入ebp-4的空间来实现,声明整型变量b并赋值2,由把2放入ebp-8的空间来实现7.把ebp-8地址存放的值赋值给eax,并且把eax压栈,sp减1.把ebp-4地址存放的值赋值给eax,并且把eax压栈,sp减1代码分析及表格(二

7、)8.把ebp压入栈中9.把esp的值赋值给ebp10.让esp指向esp-44h的地方11.ebx,esi,edi进栈,3次压栈使得esp-312.取得ebp-44h的偏移地址放入edi中,初始化ebp到ebp-44h的空间13.把ebp+8地址放的值放入eax中,再加上ebp+0CH地址放的值,把结果放入ebp-4中14.ediesiebx出栈15.把ebp的值赋值给esp并且ebp出栈代码分析及表格(三)16.esp指向esp+8的地方17.edi,esi,ebx出栈18.esp指向esp

8、+48h的地方19.比较ebp和esp并且检查esp20.把ebp的值赋值给esp,然后ebp出栈,程序结束//―――――――――――――――――――――――――――――//second//―――――――――――――――――――――――――――――intsum(intx,inty){intresult;result=x+y;returnresult;}voidmain(intargc,char*argv[]){inta=1;intb=2;intc;c=sum(a,b);}汇编代码(一)1:#in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。