简单回顾下汇编相应知识点
一.寄存器
通用寄存器:ax(累加) bx(基址) cx(计数) dx(数据)
段寄存器:cs(代码段) ds(数据段) ss(堆栈段) es(附加段)
指令指针寄存器:ip
栈指针寄存器:sp bp
变址寄存器:si di
标志寄存器:psw
32位相应为:exx
64位相应为:rxx
二.指令
1.CALL,RET和LEAVE
CALL指令的步骤:首先是将返回地址(也就是call指令要执行时EIP的值)压入栈顶,然后是将程序跳转到当前调用的方法的起始地址。执行push和jump指令。
#汇编解释 (近位移/段间位移)
(push cs)
push ip
jump near s
RET指令则是将栈顶的返回地址弹出到EIP,然后按照EIP此时指示的指令地址继续执行程序。
(pop cs)
pop ip
LEAVE指令是将栈指针指向帧指针,然后POP备份的原帧指针到%EBP。