大三夏季小学期汇编语言练习.pptxVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

已知某32位整数X,其值为-101(十进制),则其16进制补码为,另一32位整数Y的补码为0xFFFFFF6A,则X+Y的16进制补码(32位)为,X-Y的16进制补码为。练习题 0xFFFFFF9B0xFFFFFF050x31

练习题 intdecode2(intx,inty,intz){intt1=z-y;intt2=(t115)15;intt3=x^t1;intt4=t2*t1;returnt4;}

练习题一种C函数调用的参数传递与栈恢复模式被称为fastcall,其与我们课堂上学的默认的C函数参数传递与栈恢复方法不同(称为cdecl)。请根据下列的C代码与汇编代码的对应关系,写出fastcall的参数是如何传递的,即哪些参数是通过通用寄存器传递(包括对应关系如何),哪些是通过栈传递、压栈顺序如何,以及传递参数的栈是由被调者还是调用者负责恢复。

int__fastcalldummy(intw,intx,inty,intz){return((w*2+(x+y))2-y*23)*z;}voidcalldummy(intw,intx,inty,intz){intres=dummy(w,x,y,z);}_calldummy:pushl %ebpmovl %esp,%ebpsubl $8,%esp……call dummysubl $8,%espleaveretdummy: …… movl 8(%ebp),%ebx addl %ebx,%edx leal (%edx,%ecx,2),%eax leal (%ebx,%ebx,2),%edx movl $2,%ecx sall $3,%edx subl %ebx,%edx subl %edx,%ecx sarl %cl,%eax movl 12(%ebp),%ecx imull %ecx,%eax …… ret $8……

fastcall:(1)函数的第一个和第二个DWORD参数(或者尺寸更小的)通过ecx和edx传递,其他参数通过从右向左的顺序压栈(2)被调用函数清理栈

练习题_function: pushl %ebp movl %esp,%ebp pushl %edi xorl %edi,%edi pushl %esi xorl %esi,%esi pushl %ebx xorl %ebx,%ebxL11: xorl %ecx,%ecx leal _N(%edi),%edx jmp L10L18: movl (%edx),%eax incl %ecx addl $4,%edx addl %eax,%ebx cmpl $9,%ecx jg L17L10:leal (%esi,%ecx),%eax testb $1,%al jne L18 movl (%edx),%eax incl %ecx addl $4,%edx subl %eax,%ebx cmpl $9,%ecx jle L10L17: incl %esi addl $40,%edi cmpl $9,%esi jle L11 movl %ebx,%eax popl %ebx popl %esi popl %edi popl %ebp retm _N,400 #400intN[10][10];//初始化数组省略!intfunction(intn){intres=0;inti,j;for(i=0;i10;i++){ //????}returnres;}

intN[10][10];intfunction(intn){intres=0;inti,j;for(i=0;i10;i++)for(j=0;j10;j++){if((i+j)%2) res=res+N[i][j];else res=res-N[i][j];}returnres;}

练习题C函数返回struct类型是如何实现的?typedefstruct{intage;intbye;intcoo;intddd;inteee;}TEST_Struct;inti=2;TEST_Struct__cdeclreturn_struct(intn){TEST_Structlocal_struct;local_struct.age=n;local_str

您可能关注的文档

文档评论(0)

zhishifuwu + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档