C语言基础
简单的代码
程序开始执行的时候,就是从入口程序开始执行。
void main()//入口
{
return;//结束
}
构建(F7),并且运行(F5)程序
void main()//开始执行
{
__asm
{
mov eax,eax
mov ecx,ecx
mov edx,edx
}
return;//执行结束
}
现在什么都没有写,这程序是空的。但是学过汇编,所以可以在花括号内插入必须要用__asm开头,告诉编译器,我们这写的是汇编代码,如果直接写mov或者add等,编译器是无法识别。
按F5黑框一闪而过,因为插入的汇编代码也是无用代码,花指令,程序还是空的。
解程序的运行本质就看他的汇编代码
利用F9设置一个断点
程序断了下来
查看汇编代码
我们的__asm上面和return下面的代码,都是编译器帮我们生成的函数
这里单步快捷键是F10。F10到代码的最后一句ret,也就是程序结束的地方,
最后跑过ret指令后,Shift + F5结束调试。
体验C语言的函数
函数:一系列指令的集合,为了重复使用调用
在C语言中,他是如下格式调用
函数类型 函数名(参数)
{
程序执行代码;
}
(1)函数类型、函数名,不可省略,参数可以省略(不必要/不重要的参数)
(2)函数名、参数名,只能以字母、数字、下划线组成,且第一个字母必须是字母或者下划线
(3)区分大小写,不可使用关键字
列:
int wdnmd(int a,int b)
{
return 0;
}
那么,这样一个简单的函数就写完了!
现在要去调用它!
在汇编格式是这样的:
push 1 //传参
push 2 //传参
call 内存地址 //CALL到函数
而在C语言中是这样的:
wdnmd(参数);
//用例子就是:
wdnmd(1,2); //这样就是把1和2传入
实际操作:
int wdnmd(int a,int b) //自定义的函数wdnmd
{
return 0;
}
void main() //程序入口,开始执行的地方
{
wdnmd(5,5); //调用函数
return; //执行结束
}
现在如果要在9行出设置一个断点
查看汇编代码 F10步过,在CALLF11步入进入函数