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

在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)。其特点是不破坏源地址单元的内容。

例如:

MOV AX,2000H;将16位数据2000H传送到AX寄存器
MOV AL,20H;将8位数据20H传送到AL寄存器
MOV AX,BX;将BX寄存器的16位数据传送到AX寄存器
MOV AL,[2000H];将2000H单元的内容传送到AL寄存器

需要注意的是:

(1)两个存储单元之间不能直接传送数据,即:MOV指令只允许一个操作数在存储器中。MOV [SI],[2000H];这是错误的
(2)MOV指令中立即数不能直接传送给段寄存器(CS、DS、SS、ES)和IP;段寄存器之间不能直接传送。MOV IP,2000 H ;这是错误的
(3)CS和IP不能作为目的操作数。MOV CS,AX ;这是错误的
(4)MOV指令中立即数不能作目标操作数。MOV 2000H,[SI] ;这是错误的

MOV指令可以在CPU内或CPU和存储器之间传送字或字节,它传送的信息可以从寄存器到寄存器,立即数到寄存器,立即数到存储单元,从存储单元到寄存器,从寄存器到存储单元,从寄存器或存储单元到除CS外的段寄存器(注意立即数不能直接送段寄存器),从段寄存器到寄存器或存储单元。

但是注意

*(1) MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器;
(2) MOV指令中绝对不允许在两个存储单元之间直接传送数据;
(3) MOV指令中绝对不允许在两个段寄存器之间直接传送数据;
(4) MOV指令不会影响标志位*

例:MOV AX,DATA_SEG

MOV DS,AX

注意:段寄存器(段地址)必须通过寄存器如AX寄存器进行立即数的初始化。

例: MOV AL,‘E'

把立即数(字符E的ASC码)送到AL寄存器。
例: MOV BX,OFFSET TABLE
将TABLE的偏移地址(而不是内容)送到BX寄存器中。其中OFFSET为属性操作符,表示的是将其后的符号地址的值(不是内容)作为操作数。
例 MOV AX,Y[BP][SI]
把地址为16d×(SS)十(BP)十(SI)十位移量Y的存储单元的内容送给AX寄存器

PS:下面看下汇编中的mov指令的基本使用

mov S ,D 是将D传送到S ,还是S传送到D中去呢?

在王爽的《汇编》中说: mov ax , 18 是将 18传送到寄存器ax中。

但是我用gcc反汇编如下函数

 int test()
{
  return 2;
}

得到的汇编代码却是

 _add:
LFB7:
  .cfi_startproc
  movl  $2, %eax  ;//将eax内容复制到2中???显然不对啊
  ret
  .cfi_endproc

总结

以上所述是小编给大家介绍的汇编语言mov指令及基本用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

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

    汇编中中括号[]作用及lea和mov指令的区别 现在总结一下:其中牵扯到lea指令,mov指令,[] 一.lea指令: 对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,如: mov eax,2 lea ebx,[eax];执行后ebx=2 mov ebx,eax;等同于上句 lea ebx,eax;编译器报错: error A2070: invalid instruction operands 对于变量来说加不加[]都是一样的效果,都是取变量的地址,相

  • 汇编语言中mov和lea指令的区别详解

    指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) 操作数(通常是必需的) 注释(可选) 最近在学习汇编语言,过程中遇到很多问题,对此在以后的随笔会逐渐更新,这次谈谈mov,lea指令的区别   一,关于有没有加上[]的问题 1,对于mov指令来说: 有没有[]对于变量是无所谓的,其结果都是取值 如: num dw 2 mov bx,num mov

  • 详解汇编语言MOV指令

    在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的). 32位指令集 1.一般传送指令 MOV指令: 格式: MOV目的-->除CS.IP以外的寄存器或存储器 源-->寄存器.存储器.立即数 ex : MOV  ECX ,EDX ;   EDX->ECX ECX =00000034H EDX =00000052H 指令执行结果: ECX = 00000052H, EDX不变,标志寄存器也不变. MOVSX

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

    在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的).其特点是不破坏源地址单元的内容. 例如: MOV AX,2000H:将16位数据2000H传送到AX寄存器 MOV AL,20H:将8位数据20H传送到AL寄存器 MOV AX,BX:将BX寄存器的16位数据传送到AX寄存器 MOV AL,[2000H]:将2000H单元的内容传送到AL寄存器 需要注意的是: (1)两个存储单元之间不能直接传送数据,即:MOV

  • 详解汇编语言各种指令的解释与用法

    [数据传输指令] 一.通用数据传送指令 1.传送指令MOV(move) 指令的汇编格式:MOV DST,SRC 指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址.指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令.指令的执行对标志位的影响:不影响标志位.指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器:目的操作数DST不能是CS,也不能用立即数方式. 2.进栈指令 PUSH(push onto the sta

  • 汇编语言lea指令使用方法解析

    这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 leal #4个字节 leaq #8个字节 lea的用法: leaq a(b, c, d), %rax 首先lea指令是mov指令的变种,据说,lea指令是x86体系结构中,是一条最古老但是从某个方面来讲又是最神奇的指令. 表面上看,它做的事情非常简单,根据括号里的源操作数来计算地址,然后把地址加

  • 汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)

    汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令.特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植. XOR 指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中: XOR dest

  • 汇编语言MUL指令无符号数乘法的使用

    32 位模式下,MUL(无符号数乘法)指令有三种类型: 第一种执行 8 位操作数与 AL 寄存器的乘法: 第二种执行 16 位操作数与 AX 寄存器的乘法: 第三种执行 32 位操作数与 EAX 寄存器的乘法. 乘数和被乘数的大小必须保持一致,乘积的大小则是它们的一倍.这三种类型都可以使用寄存器和内存操作数,但不能使用立即数: MUL reg/mem8 MUL reg/meml6 MUL reg/mem32 MUL 指令中的单操作数是乘数.下表按照乘数的大小,列出了默认的被乘数和乘积.由于目的操

  • Angular4 中内置指令的基本用法

    前言 大家都知道ng内置了许多自定义的指令,这避免了我们自己去造轮子.同时,ng也提供了自定义指令的功能,可以让我们的页面元素标签更加实例化. 在这篇文章中,我们将分别列举每一个内置指令的用法,并提供一个例子作为演示.尽量用最少最简单的描述,让你在更快更准确地学会每一种内置指令的基本用法. ngFor 作用:像 for 循环一样,可以重复的从数组中取值并显示出来. 例子: // .ts this.userInfo = ['张三', '李四', '王五']; // .html <div class

  • 详解vue中v-on事件监听指令的基本用法

    一.本节说明 我们在开发过程中经常需要监听用户的输入,比如:用户的点击事件.拖拽事件.键盘事件等等.这就需要用到我们下面要学习的内容v-on指令. 我们通过一个简单的计数器的例子,来讲解v-on指令的使用. 二. 怎么做 定义数据counter,用于表示计数器数字,初始值设置为0 v-on:click 表示当发生点击事件的时候,触发等号里面的表达式或者函数 表达式counter++和counter--分别实现计数器数值的加1和减1操作 语法糖:我们可以将v-on:click简写为@click 三

  • 汇编语言MIPS指令分类及寻址模式原理概念

    目录 一.相关概念 二.MIPS操作数之32个寄存器 三.MIPS汇编语言指令类型及寻址方式 1. R型指令 2. I型指令 3. J型指令 四.MIPS类型及寻址方式分析 1. MIPS字段命名 2. 指令类型 3. MIPS寻址方式 一.相关概念 指令集:一个给定的计算机体系结构所包含的指令集合. 存储程序概念:多种类型的指令和数据均以数字形式存储于存储器的概念,存储程序型计算机即缘于此. 二.MIPS操作数之32个寄存器 寄存器名字 寄存器编号 寄存器功能 $zero $0 恒等于零 $a

随机推荐