汇编 LEA指令

xiaoxiao2021-02-28  10

LEA指令返回间接操作数的偏移地址。由于间接操作数可能使用一个或多个寄存器,因此其偏移值是在运行时计算的。

void makeArray( ){ char myString[30]; for(int i = 0;i < 30;i++) myString[i] = '#'; }

虽然数组有30字节,但按4字节对其,ESP减去了32。

makeArray PROC push ebp mov ebp,esp sub wsp,32 lea esi,[ebp-32] mov ecx,30 L1: mov BYTE PTR [esi],'#' inc esi loop L1 add esp,32 pop ebp ret makeArray ENDP

使用OFFSET操作符获取堆栈参数的地址是不可能的,因为OFFSET只能获取在编译时就已经知道的地址。

lea esi,FFSET [ebp-32] ;错误
转载请注明原文地址: https://www.6miu.com/read-1100187.html

最新回复(0)