当前位置:首页 > 达人秀 > 学员作品 > C语言第8周学习总结
v_link | 积分:6 | 学分:0
C语言第8周学习总结 2016-11-07 02:13
c语言不难,真心不难。。但是其汇编表示得很熟悉而且得牢牢记住才行。。例
如,switch的没有表-大表-小表(case数目比较小的时候不生成表,数目比较多而且连续的时候生成大表,数目多且不连续则即生成大表也生成小表),printf,scanf,getchar,putchar,,这些
特殊的函数,还有while,if-else等等。。不然你只是看懂汇编代码但是连在一
起就不知道是什么意思了。。


这里是编译器中的getchar:(调试器中的有点复杂,可自行查看)
00401035   mov         eax,[__iob+4 (00425a34)]
0040103A   sub         eax,1
0040103D   mov         [__iob+4 (00425a34)],eax
00401042   cmp         dword ptr [__iob+4 (00425a34)],0
00401049   jl          main+5Ch (0040106c)
0040104B   mov         ecx,dword ptr [__iob (00425a30)]
00401051   movsx       edx,byte ptr [ecx]
00401054   and         edx,0FFh
0040105A   mov         dword ptr [ebp-4],edx
0040105D   mov         eax,[__iob (00425a30)]
00401062   add         eax,1
00401065   mov         [__iob (00425a30)],eax
0040106A   jmp         main+6Ch (0040107c)
0040106C   push        offset __iob (00425a30)
00401071   call        _filbuf (004010c0)          //这里跟进去,看不懂,,有点蛋疼(因为涉及到文件流以及缓冲区的读写,,所以会比较麻烦)
00401076   add         esp,4
00401079   mov         dword ptr [ebp-4],eax

为getchar比较特殊,它也是有返回值。当调用getchar的时候,程序等着用户按键,直至按回车为止,这期间键入的字符都是被存在缓冲区中,当回车以后,会以输入字符的ascll码值返回。(getchar读取我们键入的字符串的时候是逐个字符读取的,所以在分析的时候会跳很多次.....)

printf和scanf都比较好认,有自己的特点,切到反汇编看几遍就能记住特征。

果真是越学越觉得收获大,脚踏实地的跟着海哥好好学~~





网友评论
匿名用户 | 积分:0 | 学分:0
版权所有 Copyright(C) 2016  昆山爱达人信息技术有限公司
地址:江苏省昆山市学院路88号   电话:0512-57882866  QQ:1250121864 备案号:苏ICP备16047577号