Lea是返回偏移地址,对于 Lea EAX,s1 这样很好解释,就是返回变量s1的偏移地址
Lea EAX,[EBX+10]就比较复杂了
[EBX+10]表示EBX+10后作为地址,此地址指向位置的值,取的是EBX+10地址内的内容。
那Lea究竟是把这个内容作为地址存入EAX,还是把这个内容的地址赋给EAX呢?如果是后者,那不是跟MOV EAX,EBX+10的效果一样了?
实际的效果应该是后者,Mov EAX,EBX+10是非法的语句,汇编不允许操作数有2个寄存器和立即数存在。
Lea EAX,[EBX+10]的作用就是把EBX+10作为地址存入EAX。