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

 

posted @ 2019-08-11 23:15  狂奔~  阅读(905)  评论(0编辑  收藏  举报