东深 發表於 2020-1-19 11:43:31

详解汇编语言中中括号[]作用及lea和mov指令的区别

<p>汇编中中括号[]作用及lea和mov指令的区别</p>
<p>现在总结一下:其中牵扯到lea指令,mov指令,[]</p>
<p><span style="color: #ff0000"><strong>一.lea指令:</strong></span></p>
<p>对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,如:</p>
<p>mov eax,2<br />
lea ebx,;执行后ebx=2<br />
mov ebx,eax;等同于上句<br />
lea ebx,eax;编译器报错: error A2070: invalid instruction operands</p>
<p>对于变量来说加不加[]都是一样的效果,都是取变量的地址,相当于指针</p>
<p>如:</p>
<p>num dword 2<br />
lea ebx,num<br />
lea eax,; eax为num的地址,如eax=4206598,随程序不同不同,这时ebx==eax</p>
<p><span style="color: #ff0000"><strong>二.mov指令</strong></span>:</p>
<p>对于变量来说</p>
<p>num dword 2<br />
mov eax,2<br />
mov ebx,num<br />
mov ecx,;执行完ebx==ecx==2</p>
<p>对寄存器</p>
<p>mov ebx,eax;ebx==2</p>
<p>mov ecx,;可能会报错,因为这里翻译成汇编是mov ecx,DS:</p>
<p>总的说来加不加中括号[]的区别就是:</p>
<p>lea对变量没有影响是取地址,对寄存器来说加[]时取值,第二操作数不加[]非法</p>
<p>mov对变量来说没有影响是取值,对寄存器来说是加[]时取地址,第二操作数不加[]是取值</p>
<p>还有一点这里顺便说下,看有的教程说mov指令不支持mov ebx,归根结底就是对于mov来说当第二个操作数是寄存器的时候如果加上[]就是寻址了....</p>
<p><span style="color: #ff0000"><strong>ps:汇编中中括号的作用[]</strong></span></p>
<p>在汇编中[]的作用不是单纯的c语言中指针类似,可以分为两种情况,对于变量来说和var作用是一样的</p>
<p>但是对于寄存器来说就有区别了,是eax的地址(这里是c语言中的指针) 而不加中括号的eax就是c语言中的变量值了,理解有谬误之处望指正</p>
<div class="jb51code">
<pre class="brush:plain;">
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
.data
buffer byte "%d",0
num dword 12
.data&#63;
lpszSize db 50 dup(&#63;)
.CODE
START:
lea ebx,
mov eax,
mov eax,num
mov eax,
invoke wsprintf,offset lpszSize,offset buffer,eax
invoke MessageBox,NULL, offset lpszSize, offset lpszSize,MB_OK
invoke ExitProcess,0
end START</pre>
</div>
<p><span style="color: #ff0000"><strong>总结</strong></span></p>
<p>以上所述是小编给大家介绍的汇编语言中中括号[]作用及lea和mov指令的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对琼殿技术社区网站的支持!<br />
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>详解汇编语言MOV指令</li><li>汇编语言中mov和lea指令的区别详解</li><li>详解汇编语言 dup伪指令</li><li>汇编语言指令集之条件转移指令实现</li><li>汇编语言lea指令使用方法解析</li><li>汇编语言指令mov、add、sub、jmp详解</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 详解汇编语言中中括号[]作用及lea和mov指令的区别