第26节:C语言的汇编表示
1)编写第一个C程序
void main() //程序入口,程序开始执行的地方
{
__asm{
mov eax,eax
mov ecx,ecx
}
return; //程序结束
}
以上的代码在MOV eax,eax 按F9下段,进行调试如下汇编代码:
0040D440 push ebp
0040D441 mov ebp,esp
0040D443 sub esp,40h
0040D446 push ebx
0040D447 push esi
0040D448 push edi
0040D449 lea edi,[ebp-40h]
0040D44C mov ecx,10h
0040D451 mov eax,0CCCCCCCCh
0040D456 rep stos dword ptr [edi]
0040D45C pop edi
0040D45D pop esi
0040D45E pop ebx
0040D45F add esp,40h
0040D462 cmp ebp,esp
0040D464 call _chkesp (00401050)
0040D469 mov esp,ebp
0040D46B pop ebp
0040D46C ret
注意:查看汇编代码是右键选择GOTO Disassembly选项。
什么是C语言就是将C语言的代码转换成汇编代码,这就是C语言,所以从这个角度讲不懂汇编的人不是C语言的高手,因为真正了解汇编了,才知道我写每一行C代码最终变成什么样子的,这样你才能真正掌握一个程序。
2)什么是函数
{
}
<1>返回类型,函数名不能省略
<2>参数列表可以省略
例子:
int plus(int x,int y)
{
return 0;
}
函数名,参数名的命名规则:
1、只能以字母,数字,下划线组成,且第一个字母必须是字母或下划线
2、区分大小写
3、不能使用C语言的关键字
3)什么是函数的调用
<1>汇编中函数调用
PUSH 参数 1 MOV EAX,参数1
PUSH 参数 2 MOV EDX,参数2
CALL 内存地址 或 CALL 内存地址
<2>C语言的函数调用
函数名(参数1,参数2)
总结:函数名就是编辑器结起来的内存地址的别名。
1)编写第一个C程序
void main() //程序入口,程序开始执行的地方
{
__asm{
mov eax,eax
mov ecx,ecx
}
return; //程序结束
}
以上的代码在MOV eax,eax 按F9下段,进行调试如下汇编代码:
0040D440 push ebp
0040D441 mov ebp,esp
0040D443 sub esp,40h
0040D446 push ebx
0040D447 push esi
0040D448 push edi
0040D449 lea edi,[ebp-40h]
0040D44C mov ecx,10h
0040D451 mov eax,0CCCCCCCCh
0040D456 rep stos dword ptr [edi]
0040D45C pop edi
0040D45D pop esi
0040D45E pop ebx
0040D45F add esp,40h
0040D462 cmp ebp,esp
0040D464 call _chkesp (00401050)
0040D469 mov esp,ebp
0040D46B pop ebp
0040D46C ret
注意:查看汇编代码是右键选择GOTO Disassembly选项。
什么是C语言就是将C语言的代码转换成汇编代码,这就是C语言,所以从这个角度讲不懂汇编的人不是C语言的高手,因为真正了解汇编了,才知道我写每一行C代码最终变成什么样子的,这样你才能真正掌握一个程序。
2)什么是函数
函数就是一系列指令的集合,为了完成某个会重复使用的特定功能语法如下:
{
}
<1>返回类型,函数名不能省略
<2>参数列表可以省略
例子:
int plus(int x,int y)
{
return 0;
}
函数名,参数名的命名规则:
1、只能以字母,数字,下划线组成,且第一个字母必须是字母或下划线
2、区分大小写
3、不能使用C语言的关键字
3)什么是函数的调用
<1>汇编中函数调用
PUSH 参数 1 MOV EAX,参数1
PUSH 参数 2 MOV EDX,参数2
CALL 内存地址 或 CALL 内存地址
<2>C语言的函数调用
函数名(参数1,参数2)
总结:函数名就是编辑器结起来的内存地址的别名。