汇编语言——数据传送类指令

数据传送类指令

作用:把数据、地址或立即数传送到寄存器或存储单元中

通用传送指令

传送指令MOV
  • 格式:MOV 目的操作数,源操作数
    功能:将源操作数的内容传送给目的操作数,源操作数不变

在这里插入图片描述

  • 注:MOV指令不改变标志位。
    操作数的位数需要匹配。即8位配8位,16位配16位
    两个操作数不能同时为段寄存器,也不能为存储器
    CS不能作为目的操作数
    IP不能做目的操作数和源操作数
    立即数不能直接传送给段寄存器
    对于存储器单元与立即数同时作为操作数的情况,必须显式指明;byte ptr指示字节类型,word ptr指示字类型、
  • 例子
    MOV AX, 1010H
    MOV BL, 58H
    MOV BYTE PTR [BX], 10H
    MOV WORD PTR [BX], 2255H
    MOV BYTE PTR [SI+20H], 10H

在这里插入图片描述

数据交换指令XCHG
  • 格式:XCHG 寄存器,存储器操作数/寄存器
  • 功能:实现源操作数和目的操作数之间的的内容互换
  • 注:不能存储器与存储器之间交换
    XCHG指令不影响标志位
mov ax,1234h	;ax=1234h
mov bx,5678h	;bx=5678h
xchg ax,bx
;ax=5678h,bx=1234h
xchg ah,al	;ax=7856h
表转换指令XLAT (了解)
  • 格式 XLAT 或XLAT 首地址
  • 功能:将AL与BX寄存器内容之和作为偏移地中,将其所对应的存储单元的内容送入AL寄存器。
  • 执行前:在内存建立一个字节表格,内含要转换成的目的代码
    BX——存放表格首地址
    AL——存放相对表格首地址的偏移量
  • 执行后:将AL寄存器的内容转换为目标代码
    在这里插入图片描述

堆栈存储指令(字操作 2个字节)

  • 堆栈:后进先出FILO,位于堆栈段;SS段寄存器记录其段地址
  • 堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定
进栈指令PUSH
  • PUSH:进栈指令先使堆栈指针SP-2,然后把一个字操作数存入堆栈顶部
  • 格式: PUSH r16/m6/seg;sp<-sp-2(高地址向低地址)
    ;SS:【SP】<-r16/m16/seg
    在这里插入图片描述
出栈指令POP
  • POP:出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP+2
  • POP r16/m16/seg ;r16/m16/seg<-SS:[SP]
    ;SP<-SP+2

在这里插入图片描述

  • 堆栈操作的单位是字,进栈和出栈只对字量
    字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节
  • 堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据
  • 作用:临时存放数据,传递参数,保存和恢复寄存器

地址传送指令

功能:地址传送指令将存储器单元的逻辑地址送至指定的寄存器

有效地址传送指令LEA
  • 特点:传送的是存储器操作数的地址(偏移地址,段地址),而不是内容源操作数必须是存储器操作数,目的操作数是16位通用寄存器。
    OPD可为一个16位的通用寄存器,通常为:BX、BP、SI、DI。OPS可为变量名、标号或地址表达式。
  • LEA r16,mem
    功能:将源操作数的有效地址传送至指定的16通用寄存器
MOV BX,0400H
MOV SI,3CH
LEA BX,[BX+SI+0F62H] ;BX=0400h+003ch+0f62h=139EH

  • 例子
    设BX=0100H,DI=0030H,DS:[0030H]=2436H, 变量DATA的有效地址为0050H
    LEA BP, [3000H] ;执行后 BP=3000H
    LEA BX, [BX+DI] ;执行后 BX=0130H
    LEA SI, DATA ;执行后 SI=0050
    LEA SI, [DI] ;执行后 SI=0030H
    MOV SI, [DI] ;执行后 SI=2436H
指针传送指令LDS,LES
  • LDS r16,mem;r16←mem, DS←mem+2
    LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器
  • LES r16,mem;r16←mem, ES←mem+2
    LES指令将主存中mem指定的字送至r16,并将mem的下一字送ES寄存器
MOV WORD PTR [3060H],0100H
MOV WORD PTR [3062H],1450H
LES DI,[3060H]	;DI=0100H,ES=1450H
LDS SI,[3060H]	;SI=0100H,DS=1450H
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值