首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

X86 Assemble指令--LEA

注意:不是实际地址 如LEA EAX, [ EBX + ECX ],它相当于计算EBX和ECX的值,将这个值保存到EAX寄存器中。...原因:由于EBX+ECX计算出来的值是该内存地址,而通过[EBX+ECX]得到的是内存地址保存的值,而LEA命令是加载该值的有效地址并且保存到目标寄存器中,也就是将EBX+ECX的值保存到EAX寄存器中...由于加载的是有效地址,而不是实际地址,所以EAX中保存的是EBX+ECX,而不是ds:EBX+ECX 实例 计算多个数据的运算 一般要计算多个数据相加,例如,将1+2+EBX的值放入EAX寄存器中...,ADD需要三条指令 ADD EAX,1; ADD EAX,2; ADD EAX,EBX; 而使用LEA的话,只需要一条指令 LEA EAX,[1+2+EBX]; 计算地址指针 例如现在有一个struct...所以该条语句的汇编指令为: MOV EDX [EBX+8*EAX+4]; 由于数组基址在EBX寄存器中,并且每一个Point元素都占8个字节,而i保存在EAX寄存器中,所以EBX+8EAX得到的就是points

1.7K30

高级静态分析技能基础:X86汇编语言运算指令说明

mov指令的格式为(mov 目的,源头),源头指的是要被挪到的数据,目的是数据被挪动的目的地, 我们看几个具体例子: mov eax, ebx (把寄存器ebx中的数据拷贝到eax寄存器) mov eax..., 0x42 (把数值0x42赋值给eax寄存器) mov eax, [0x4037c4](把地址为0x4037c4的4字节数据拷贝到eax寄存器] mov eax, [ebx] (先从寄存器ebx中获取数值...,并把给定地址的4字节数据拷贝到eax寄存器) 另一个跟mov指令很像的是指令lea,lea eax, [ebx+8],其作用为把ebx寄存器的值加上8后所得结果放入eax,这里需要注意区别,利润mov...eax, [ebx+8]是把ebx的值加上8,所得结果作为内存地址,然后将地址所在处的4字节数据转移到eax寄存器,因此指令lea eax, [ebx+8]等价于mov eax, ebx+8,这是一个容易混淆之处...对于指令lea ebx, [eax5+5],它会计算0x00000005+5=5,然后把结果5放到寄存器ebx

95620
领券