摘要:
当执行函数调用call指令的时候,会把call指令下一条指令的内存地址压入堆栈(ESP值减4)。 在call指令里面,我们可以随意使用,比如push压入堆栈,使用堆栈传参等。 但是要保证,在函数调用结束的时候 即执行ret指令之前,要把esp-栈顶寄存器的值修改为执行call指令压入堆栈的那个值。 阅读全文
posted @ 2020-11-03 21:02
KeepMoving2018
阅读(1032)
评论(0)
推荐(0)
摘要:
函数 就是一堆指令,可以实现特定功能,这个功能以后可能反复使用。 函数调用--call指令就是在调用函数。 参数--使用函数需要的参数。 如果参数很多,寄存器数量不够,(假如要实现10个数相加),该怎么办? 阅读全文
posted @ 2020-11-03 20:41
KeepMoving2018
阅读(204)
评论(0)
推荐(0)
摘要:
通常用call指令调用函数,执行结束很容易回来,继续执行。 汇编中,EAX通常用来存储返回值。 传递参数,上面用的是ECX,EDX,这个不是一定的,可以用其它方式传递参数--后面会将如何用其它方式传递参数。 阅读全文
posted @ 2020-11-03 20:31
KeepMoving2018
阅读(150)
评论(0)
推荐(0)
摘要:
EIP 不叫通用寄存器,它里面存放的值,是CPU下次要执行的指令的地址。那么如何去修改它的值呢? 使用MOV 0xxxxx,是不可以的。 mov eip,0x12345678 相当于 jmp 0x12345678 CALL指令,与jmp指令相同的点 修改EIP的值。 不同的点,会将call指令下一条 阅读全文
posted @ 2020-11-03 06:43
KeepMoving2018
阅读(507)
评论(0)
推荐(0)

浙公网安备 33010602011771号