随笔二十七:数据传送指令

        将数据从一个位置复制到另一个位置的指令是最频繁使用的指令。下面介绍下 MOV 类指令,MOV 类由三条指令组成, movb、movw 和 movl。这些指令都执行同样的操作;不同的只是它们分别是在大小为 1、2 和 4 个字节的数据上进行操作。

       

指令

效果

描述

  MOV          S, D

  D  S

传送

  movb

  movw

  movl

  传送字节

  传送字

  传送双字

 

  MOVS         S, D

  D  符号扩展(S)

传送符号扩展的字节

  movsbw

  movsbl

  movswl

  将做了符号扩展的字节传送给字

  将做了符号扩展的字节传送给双字

  将做了符号扩展的字传送给双字

 

  MOVZ         S, D

  D  零扩展(S)

传送给零扩展的字节

  movzbw

  movzbl

  movzwl

 

 

  pushl           S

 

 

  popl            D

  将做了零扩展的字节传送给字

  将做了零扩展的字节传给双字

  将做了零扩展的字传给双字

 

  R[%esp] R[%esp] – 4;

  M[R[%esp]] S

 

  D  M[R[%esp]];

  R[%esp] R[%esp] – 4

 

 

 

 

 

双字节压栈

 

 

双字节出栈


MOV 类中的指令将源操作数的值复制到目标的操作数中。源操作数指定的值是一个立即数,存储在寄存器中或者存储器中。目的操作数指定一个位置,要么是一个寄存器,要么是一个存储器地址。

源操作数

目的操作数

立即数

寄存器

寄存器

存储器

存储器

 


注意:IA32 加了一条限制,传送指令的两个操作数不能都指向存储器位置。将一个值从存储器位置复制到另一个存储器位置需要两条指令 —— 第一条指令将源值加载到寄存器中,第二条将寄存器值写入目的位置。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值