首页
学习
活动
专区
工具
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.8K30

高级静态分析技能基础: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

1K20

汇编语言基础教程-寻址方式

mov eax,00BEH相同,低字节在前s mov eax,0FFFFFFFFH;与 mov eax,-1相同 eax可以存放一个双字 2寄存器寻址 操作数已经在CPU的寄存器中 如: mov EAX,EBX...00404011];地址外面加一个方括号,表示取这个地址的内容 4寄存器间接寻址 操作数的地址放在寄存器中 如: mov ESI,00404011H mov EAX,[ESI] 32位CPU中EAX,EBX...ESI,EDI,EBP,ESP能用作间接寻址 5寄存器相对寻址 如: mov ESI,00404011H mov EAX,[ESI+4] 6基址变址寻址 如: mov ESI,00404011H mov EBX...,4 mov EAX,[ESI+EBX] 7基址变址相对寻址 如: mov ESI,00404011H mov EBX,4 mov EAX,[ESI+EBX+4] 8基址变址比例相对寻址 如: mov...ESI,00404011H mov EBX,4 mov EAX,[ESI+EBX*2+4] 9*段超越 内存操作数的地址由两个部分指定:段和有效地址。

40620
领券