目录 上一页 下一页 下一章

-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

目录 上一页 下一页 下一章