-284- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
9位、17位的循环移位,而不是普通的8位、16位移位。那么多出的一位从何处而来呢? | |||||||||||||||||||||
![]() |
助记符:RCL/RCR(Rotate Left/Right through Carry) 用 途:带进位循环左右移位 格 式:RCL/RCR 寄存器,1 RCL/RCR 寄存器,CL RCL/RCR 存储单元,1 RCL/RCR 存储单元,CL 执 行:指令执行时使操作数向左(右)移动指定位数,移出的位进入CF标 志,同时原CF标志位由操作数右(左)侧进入操作数。 |
||||||||||||||||||||
![]() 图10-1 指令RCL与RCR的执行情况 |
|||||||||||||||||||||
图10-1给出了这两个指令执行的情况,可以看出多出的一位就是CF标志。RCL/RCR指令的用途与ADC/SBB有些相似,前面我们说过ADC/SBB通常用于多位算术,RCL/RCR则通常用于多位移位。比如下面的程序可以将一个64Bit的数向右移动一位: | |||||||||||||||||||||
SHIFT64. data number data code main |
ASM segment assume db db ends segment assume proc push xor push mov mov mov mov std |
ds:data 88h,77h,66h,55h 44h,33h,22h,11h cs:code far ds ax,ax ax ax,data ds,ax cx,8 si,offset number+7 |
;定义一个64Bit的数据 ;初始化堆栈 ;初始化DS寄存器 ;准备处理8个字节 ;SI寄存器指向64Bit数据的最高16位 ;向低地址方向处理数据 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |