【汇编语言】通用数据处理指令——数据传送类指令
通用数据处理指令——数据传送类指令
文章目录
- 通用数据处理指令——数据传送类指令
- 一、MOV指令
- 1.数据长度
- 2.传送方式
- 3.常见错误
- 二、XCHG指令
- 1.数据长度
- 2.空操作指令NOP(no-operation)
- 三、LEA指令
- 1.LEA与OFFSET的作用
- 2.地址传送程序
- 3.用LEA指令实现运算功能
- 数据传送
►把数据从一个位置传送到另一个位置
►计算机中最基本的操作
►程序设计中最常使用的指令- 除标志寄存器传送指令外,均不影响状态标志
一、MOV指令
把一个字节、字或双字的操作数从源位置传送至目的位置。
MOV reg/mem,imm
MOV reg/mem/seg,reg
MOV reg/seg,mem
MOV r16/m16,seg
1.数据长度
8位(字节)数据,byte类型
mov al,200
16位(字)数据,word类型
mov ax,[ebx]
32位(双字)数据,dword类型
mov eax,dvar
2.传送方式
立即数传送:
MOV reg/mem,imm
寄存器reg为目的操作数
mov al,200
;8位立即数i8
mov ax,200
;16位立即数i16
mov eax,200
;32位立即数i32
寄存器传送:
MOV reg/mem/seg,reg
寄存器reg为目的操作数
mov al,ah
;8位通用寄存器r8
mov ax,bx
;16位通用寄存器r16
mov eax,edx
;32位通用寄存器r32
存储器mem为目的操作数
mov bvar,cl
;8位通用寄存器r8
mov [ebx],cx
;16位通用寄存器r16
mov [esi+8],edi
;32位通用寄存器r32
段寄存器seg为目的操作数
mov ds,bx
存储器传送:
MOV reg/seg,mem
寄存器reg为目的操作数
mov dl,bvar
;8位储存器m8
mov dx,[ebx]
;16位存储器m16
mov edx,dvar[edi]
;32位存储器m32
段寄存器seg为目的操作数
mov ds,wvar
;16位存储器m16
mov es,[ebx]
;16位存储器m16
mov ss,[ebp+8]
;16位存储器m16
(16位)段寄存器传送:
MOV r16/m16,seg
寄存器r16为目的操作数
mov ax,ds mov dx,es mov si,fs mov di,gs
存储器m16为目的操作数
mov wvar,ds mov [ebx],ss mov [esi-8],cs mov [ebp+8],cs
3.常见错误
注意1:双操作数必须类型一致
MOV ESI,DL
;错误:类型不一致
;ESI为32位寄存器,DL为8位寄存器mov esi,edx
;正确:两个32位寄存器传送
MOV AL,050AH
;错误:类型不一致
;050AH超过了寄存器AL范围mov eax,050ah
;正确:双字量数据传送
注意2:操作数必须有明确的类型
MOV [EBX+4],200
;错误:无明确类型
mov byte ptr [ebx+4],200
;正确:BYTE PTR说明是字节操作
mov wvar[esi],200
;正确:字变量WVAR说明是字操作
mov dvar[edi*4],200
;正确:双字变量DVAR说明是双字操作
无变量名的寄存器相对和变址寻址无明确类型
注意3:双操作数不允许都是主存单元
MOV DBUF2,DBUF1
;假设dbuf1和dbuf2是两个双字变量
;错误:两个操作数都是存储单元mov eax,dbuf1
;正确:EAX=DBUF1(将DBUF1内容送EAX)
mov dbuf2,eax
;正确:DBUF2=EAX(将EAX内容送DBUF2)
注意4:不可随意操作专用寄存器
MOV DS,@DATA
;错误:立即数不能直接传送段寄存器
(@DATA是数据段地址)mov ax,@data
;正确:立即数传送给AX
mov ds,ax
;正确:通过AX间接传送给DS
MOV EIP,EAX
;错误:没有显式操作指令指针寄存器EIP的指令
二、XCHG指令
将源操作数和目的操作数内容交换
XCHG reg,reg/mem
XCHG reg/mem,reg
►通用寄存器与通用寄存器之间
►通用寄存器或存储器之间
1.数据长度
32位数据交换
xchg esi,edi
xchg esi,[edi]
16位数据交换
xchg si,di
xchg si,[edi]
8位数据交换
xchg bl,bh
xchg al,bvar
2.空操作指令NOP(no-operation)
空操作指令是一条不做实质操作的指令(交换指令的一个特例)
NOP = XCHG EAX, EAX
一个字节的指令代码;90H
- 处理器执行需要化费时间,占用一个字节存储空间
- 所以,具有实际意义:
►实现短时间延时
►临时占用代码空间
三、LEA指令
地址传送指令获取存储器操作数的地址
LEA r16/r32,mem
- r16/r32←mem的有效地址EA(不需类型一致)
- IA-32使用32位地址,保存于32位通用寄存器r32
1.LEA与OFFSET的作用
LEA指令在指令执行时计算出偏移地址
►OFFSET操作符在汇编阶段取得变量的偏移地址lea edi, var
OFFSET无需在执行时计算、指令执行速度更快
►LEA指令能获取汇编阶段无法确定的偏移地址mov edi, offset var
2.地址传送程序
mov eax,dvar
lea esi,dvar
mov ebx,[esi]
mov edi,offset dvar
mov ecx,[edi]
3.用LEA指令实现运算功能
lea edx,[esi+edi*4+100h]
EDX=ESI+EDI×4+100H
- LEA指令在计算地址时,可进行加和移位操作
►编译器将其用于实现加法,或者乘以2、4和8 - 不能用OFFSET操作符实现
mov edx, offset [esi+edi*4+100h];错误
【汇编语言】通用数据处理指令——数据传送类指令相关推荐
- 汇编语言数据传送指令之通用数据传送类指令
文章目录 1.通用数据传送类指令 1. 1)Mov reg/mem,imm//立即数传送 1. 2)Mov reg/mem/seg,reg//寄存器传送] 1. 3)Mov reg/seg,mem// ...
- 数据传送类指令(PUSH,POP,LEA)
目录 数据传送类指令 堆栈的概念: 进栈指令 (PUSH) 出栈指令(POP) 练习 LEA取偏移地址(有效地址EA)指令(去括号) LEA和OFFSET区别: 用法注意 LEA和MOV指令的比较 数 ...
- 数据传送类指令LAD的数据传送方向是( )。 A 从寄存器到内存 B 从寄存器到寄存器 C 从内存到内存 D 从内存到寄存器...
LAD (Load Effective Address) 是一种数据传送类指令,它的数据传送方向是从内存到寄存器.因此答案是 D 从内存到寄存器. LAD 指令用于将某个内存地址中的值加载到寄存器中. ...
- 《计算机组成原理》数据传送类指令不包括( ),兰大《计算机组成原理》20秋平时作业1【标准答案】...
可做奥鹏全部院校作业论文!答案请添加qq:599792222 或 微信:1095258436 <计算机组成原理>20秋平时作业1 1.[单选题] CRT的分辨率为1024×1024像素,像 ...
- 8086CPU指令系统——数据传送类指令
数据传送(Data Transfer)类指令是指令系统中用的最多的一类指令,也是条数最多的一类指令,常用于将原始数据.中间运算结果.最终结果及其它信息在CPU(中央处理器)的寄存器和存储器之间进行传送 ...
- 8086指令系统 操作数地址,双操作数,单操作数,无操作数指令。一,传送类指令;二,二、算数运算类指令
双操作数指令:OPR DEST,SRC 单操作数指令:OPR DEST 无操作数指令:OPR 按指令功能划分为六大类: 1传送类指令 2算术运算类指令 3位操作类指令 4串操作类指令 5程序转移类指令 ...
- 微机原理——指令系统——传送类指令(MOV、LEA、LDS、LES、LAHF、SAHF、XCHG、XLAT、PUSH、POP、PUSHF、POPF)
博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问. [没事儿可以到我主页看看 ...
- verilog实现多周期处理器之——(五)移动操作(通用数据传送)指令的实现
本文参考作者 自己动手写CPU之第六阶段(1)--移动操作指令说明 自己动手写CPU之第六阶段(2)--移动操作指令实现思路 本文会添加笔者自己的思路以及理解在其中. 指令说明 这6条指令都是R类型指 ...
- 总结:常用的通用数据处理指令
作者:bakari 时间:2012.4.21 1. 操作数类型 Imm立即操作数 Reg寄存器操作数 Mem内存操作数 2. 操作数寻址方式 立即数寻址 寄存器数寻址 存储器寻址 3. 数据传送类指 ...
最新文章
- Struts2中action获取request、response、session的方式
- Python使用xlrd和xlwt读取和写入excel详细教程
- 公钥私钥 多久过期_上传到公钥服务器的gpg公钥过期了会被删除吗?
- Mongodb自带工具
- 新冠患者样本单细胞测序文献汇总
- 大话存储pdf 百度网盘_学用系列|亲身体验百度网盘内测在线文档,有遗憾也有期待...
- 后缀自动机(学习笔记)
- Java 学习经验[转]
- SaaS应用架构师所面临的最大挑战
- java备份_手把手教你实现Java权限管理系统 后端篇(十三):系统备份还原
- 20200718每日一句
- 网站采集工具免费采集发布网站后台
- 小红帽免费酒店管理系统PMS
- QT 录制音频(麦克风、系统)
- python可以开发软件_python可以开发软件吗
- 独立站运营 | 聊天聚合部件,助你提升100%私域转化率
- Spring-@Bean
- 【vue打包】线上部署报错net::ERR_ABORTED 404 (Not Found)
- 易语云模块-易语言邮件发送模块下载(含命令详解)
- 博士生在校没药吃,父亲寄6斤布洛芬引热议!最新回应
热门文章
- d3d 渲染遇到的几个问题
- 杭电2103---Family planning
- linux的python2.7的paramiko_centos7 python2.7下安装paramiko模块
- word 产生很多temp 不显示_word表格中文字显示到最下面的时候不自动换页-解决办法...
- python数组横向合并_python中合并数组的方法
- python读取url中存储的数据_Python实现从URL地址提取文件名的方法
- python分词词典_基于python的分词算法的实现(3) – 建立字典 | 学步园
- linux编译android源码,ubuntu16.04 Android源码下载编译
- ftp文件推送 linux_Linux 终端访问 FTP 及 上传下载 文件
- 调查问卷java源码_2020年Java技术趋势