汇编基础学习20

文章转自 http://www.mcany.cn/article/295.htm

博主 没落的残阳

 

这节来继续讲解移位指令---循环移位指令,今天我们学到的这两个指令比较有用,通常我们可以用来调换一个寄存器中的数据。。 以后我们学到win32汇编的时候,你就知道我们现在学习这些指令集的用处了。。

  
       循环移位指令

      1.循环左移
      
      指令名称 ROL(rotate left)
  
      介绍:ROL指令在向左移动一位后,把最高位同时复制到进位标志和最低位中。其指令格式与SHL相似。

循环移位和逻辑移位不同的是前者不会丢失任何数据位,也就是每次移出高位就会补到最低位上。
  
      举例1:
      al = 26h
      al = 00100110B
      
      那么 执行ROL al, 1
      al = 01001100     ;因为循环移位最高位移动到最低位,所以此时al = 01001100B
  
      举例2:
      al = 26h
      al = 00100110B
      那么执行ROL al, 4
      al = 01100010B   ;因为循环移位每次移位后最高位就会移动到最低位,移动4次后,正好是将其之前的高4位移动到了低4位上,很简单所以我们一般用这个指令来交换数据。

      
  
     2.循环右移
    
     指令名称 ROR指令

     指令介绍:ROR指令在向右移动一位后,把最低位同时复制到进位标志位和最高位中。指令的格式于shl指令相同。


     我们的ROR指令和ROL一样,同样不会丢失数据位,每次移出的最低位补到最高位上。


     举例1

     al = 26h
     al = 00100110B
    
     执行:ROR al, 1

     al = 00010011b ;很简单,其实移位后将之前的移出的最低位补到最高位上。

     举例2:
    
     al = 32h
     al = 00110010B

     执行 ROR al, 4

     al = 00100011B
    
     其实我们在交换数据的时候(限定每个数据的1/2),用ROL和ROR是一样的。前者是将前1/2转移到后1/2,而后者是将后1/2转移到前1/2。 所以是一样的。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值