第20节:函数和参数、返回值的概念
1、什么是函数
函数就是一系列指令的集合,为了完成某个会重复使用的特定功能。
函数例子:向寄存器中赋值
MOV EAX,1
MOV ECX,1
MOV EDX,1
MOV EBX,1
2、什么是函数的调用
函数调用我首先回想到调用一个值使用的JMP,但是JMP不能被调用多次,这时候我们想到了CALL指令
和RET指令组合。
例子:
0041EFCE CALL 0414FFDC
0414FFDC MOV EAX,1
RET
CALL指令会把0041EFCE 下一行的地址写到ESP-4中,跟JMP不同,JMP是直接跳到你要指定的那行。
3、什么是参数,什么是返回值
我们用例子来解释什么是参数和返回值:
MOV ECX,1
MOV EDX,2
CALL 004183FD
004183FD ADD ECX,EDX
004183FE MOV EAX,ECX
RET
ADD 这行就是要传入的参数的变量,分别是1和2,然后进行相加,加完后的值返回给EAX(也就是MOV EAX,ECX)。
1、什么是函数
函数就是一系列指令的集合,为了完成某个会重复使用的特定功能。
函数例子:向寄存器中赋值
MOV EAX,1
MOV ECX,1
MOV EDX,1
MOV EBX,1
2、什么是函数的调用
函数调用我首先回想到调用一个值使用的JMP,但是JMP不能被调用多次,这时候我们想到了CALL指令
和RET指令组合。
例子:
0041EFCE CALL 0414FFDC
0414FFDC MOV EAX,1
RET
CALL指令会把0041EFCE 下一行的地址写到ESP-4中,跟JMP不同,JMP是直接跳到你要指定的那行。
3、什么是参数,什么是返回值
我们用例子来解释什么是参数和返回值:
MOV ECX,1
MOV EDX,2
CALL 004183FD
004183FD ADD ECX,EDX
004183FE MOV EAX,ECX
RET
ADD 这行就是要传入的参数的变量,分别是1和2,然后进行相加,加完后的值返回给EAX(也就是MOV EAX,ECX)。