mov,lea指令的区别
一,关于有没有加上[]的问题 1,对于mov指令来说: 有没有[]对于变量是无所谓的,其结果都是取值 如: num dw 2 mov bx,num mov cx,[num];bx=cx=2 对于寄存器而言,有[]表示取地址,没[]表示取值 如: num dw 2 mov ax,num mov bx,ax;bx=2 mov bx,[ax];mov bx;DS:[ax],这里可能存在报错的情况,总之大体意思能理解就行 2,对于lea指令来说 Load Effective Address 它的操作数就是地址 : 有没有[]对于变量是无所谓的,其结果都是取变量的地址,相当于指针(与mov相反) 如:num dw 2 lea ebx,num; lea eax,[num];ebx=eax 对于寄存器而言,有[]表示取值,没[]表示取地址 lea eax,[edx-02] 就是把 edx 中的值减去2再送入eax, 而不是把由[edx-02]指明的内存地址上的值放到eax. 其结果是[eax]和[ebx-02]都表示同一个地址. 其实这句就相当于mov eax,edx-2 来源: https://www.cnblogs.com/xiangtingshen/p/11337236.html