首页 > 汇编语言 > 数据操作相关运算符和指令
阅读:1,438
汇编语言MOV指令:将源操作数复制到目的操作数
MOV 指令将源操作数复制到目的操作数。作为数据传送(data transfer)指令,它几乎用在所有程序中。在它的基本格式中,第一个操作数是目的操作数,第二个操作数是源操作数:
下面是 MOV 指令的标准格式:
MOV destination,source
其中,目的操作数的内容会发生改变,而源操作数不会改变。这种数据从右到左的移动与 C++ 或 Java 中的赋值语句相似:dest = source;
在几乎所有的汇编语言指令中,左边的操作数是目标操作数,而右边的操作数是源操作数。只要按照如下原则,MOV 指令使用操作数是非常灵活的。- 两个操作数必须是同样的大小。
- 两个操作数不能同时为内存操作数。
- 指令指针寄存器(IP、EIP 或 RIP)不能作为目标操作数。
下面是 MOV 指令的标准格式:
MOV reg, reg MOV mem, reg MOV reg, mem MOV mem, imm MOV reg, imm
内存到内存
单条 MOV 指令不能用于直接将数据从一个内存位置传送到另一个内存位置。相反,在将源操作数的值赋给内存操作数之前,必须先将该数值传送给一个寄存器:.data var1 WORD ? var2 WORD ? .code mov ax,var1 mov var2,ax
提示:在将整型常数复制到一个变量或寄存器时,必须考虑该常量需要的最少字节数。
覆盖值
下述代码示例演示了怎样通过使用不同大小的数据来修改同一个 32 位寄存器。当 oneWord 字传送到 AX 时,它就覆盖了 AL 中已有的值。当 oneDword 传送到 EAX 时,它就覆盖了 AX 的值。最后,当 0 被传送到 AX 时,它就覆盖了 EAX 的低半部分。.data oneByte BYTE 78h oneWord WORD 1234h oneDword DWORD 12345678h .code mov eax,0 ;EAX=OOOOOOOOh mov al,oneByte ;EAX=00000078h mov ax,oneWord ;EAX=00001234h mov eax,oneDword ;EAX=12345678h mov ax, 0 ;EAX=12340000h
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频