汇编,mov和lea 指令问题
发布网友
发布时间:2022-05-27 07:26
我来回答
共2个回答
热心网友
时间:2023-10-11 12:50
首先,[esi+18]这种写法,是表示对存储器寻址,是带偏移的寄存器间接寻址,用在MOV指令上,访问的是存储器,地址值是esi+18,
用在LEA指令上,那就是取存储器的地址。
mov esi, [edi+18];存储器地址为 edi+18 处的一个dword 的内容读出后送到esi
mov esi,dword ptr [edi+18];和上一条无差异,因为送入esi就隐含了dword ptr的操作
lea eax,esi;此指令不存在
lea eax,[esi+18] ;esi+18作为地址,送入eax,效果是eax=esi+18
lea eax,esi+18;此指令不存在
lea eax,dword ptr [esi+18] ;此指令和lea eax,[esi+18]等同,实际上,在lea指令中,不必用dword ptr 等运算
热心网友
时间:2023-10-11 12:50
lea 是去地址
[xx] 是取xx地址下的内容
lea eax,[esi+18] 相当于 取esi+18地址下内容的地址 就相当于eax 等于esi+18