郇正国 發表於 2020-1-19 11:56:15

汇编语言mov指令及基本用法

<p>在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)。其特点是不破坏源地址单元的内容。</p>
<p>例如:</p>
<p>MOV AX,2000H;将16位数据2000H传送到AX寄存器 <br />
MOV AL,20H;将8位数据20H传送到AL寄存器 <br />
MOV AX,BX;将BX寄存器的16位数据传送到AX寄存器 <br />
MOV AL,;将2000H单元的内容传送到AL寄存器</p>
<p>需要注意的是:</p>
<p>(1)两个存储单元之间不能直接传送数据,即:MOV指令只允许一个操作数在存储器中。MOV ,;这是错误的 <br />
(2)MOV指令中立即数不能直接传送给段寄存器(CS、DS、SS、ES)和IP;段寄存器之间不能直接传送。MOV IP,2000 H ;这是错误的 <br />
(3)CS和IP不能作为目的操作数。MOV CS,AX ;这是错误的 <br />
(4)MOV指令中立即数不能作目标操作数。MOV 2000H, ;这是错误的</p>
<p>MOV指令可以在CPU内或CPU和存储器之间传送字或字节,它传送的信息可以从寄存器到寄存器,立即数到寄存器,立即数到存储单元,从存储单元到寄存器,从寄存器到存储单元,从寄存器或存储单元到除CS外的段寄存器(注意立即数不能直接送段寄存器),从段寄存器到寄存器或存储单元。 <br />
</p>
<p>但是注意</p>
<p>*(1) MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器; <br />
(2) MOV指令中绝对不允许在两个存储单元之间直接传送数据; <br />
(3) MOV指令中绝对不允许在两个段寄存器之间直接传送数据; <br />
(4) MOV指令不会影响标志位*</p>
<p>例:MOV AX,DATA_SEG</p>
<p>MOV DS,AX</p>
<p>注意:段寄存器(段地址)必须通过寄存器如AX寄存器进行立即数的初始化。</p>
<p>例: MOV AL,‘E'</p>
<p>把立即数(字符E的ASC码)送到AL寄存器。 <br />
例: MOV BX,OFFSET TABLE <br />
将TABLE的偏移地址(而不是内容)送到BX寄存器中。其中OFFSET为属性操作符,表示的是将其后的符号地址的值(不是内容)作为操作数。 <br />
例 MOV AX,Y <br />
把地址为16d×(SS)十(BP)十(SI)十位移量Y的存储单元的内容送给AX寄存器</p>
<p><span style="color: #ff0000"><strong>PS:下面看下汇编中的mov指令的基本使用</strong></span></p>
<p>mov S ,D 是将D传送到S ,还是S传送到D中去呢?<br />
</p>
<p>在王爽的《汇编》中说: mov ax , 18 是将 18传送到寄存器ax中。<br />
</p>
<p>但是我用gcc反汇编如下函数</p>
<div class="jb51code">
<pre class="brush:plain;">
int test()
{
return 2;
}</pre>
</div>
<p>得到的汇编代码却是</p>
<div class="jb51code">
<pre class="brush:plain;">
_add:
LFB7:
.cfi_startproc
movl$2, %eax;//将eax内容复制到2中???显然不对啊
ret
.cfi_endproc</pre>
</div>
<p><span style="color: #ff0000"><strong>总结</strong></span></p>
<p>以上所述是小编给大家介绍的汇编语言mov指令及基本用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对琼殿技术社区网站的支持!<br />
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>常用的汇编指令与技巧(收藏)</li><li>汇编语言中mov和lea指令的区别详解</li><li>汇编语言lea指令使用方法解析</li><li>详解汇编语言 dup伪指令</li><li>汇编语言中cmp指令用法笔记与总结</li><li>详解汇编语言MOV指令</li><li>汇编语言乘指令 MUL、IMUL的具体使用</li><li>详解汇编语言各种指令的解释与用法</li><li>汇编语言指令大全 X86和X87汇编指令大全(带注释)</li><li>汇编语言中move指令的使用</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 汇编语言mov指令及基本用法