下面的示例代码用 STC 将进位标志位置 1,然后,对AH 寄存器执行一次带进位循环右移操作:
stc ; CF = 1
mov ah, 10h ; AH, CF = 00010000 1
rcr ah, 1 ; AH, CF = 10001000 0
有符号数溢出
如果有符号数循环移动一位生成的结果超过了目的操作数的有符号数范围,则溢出标志位置 1。换句话说,即该数的符号位取反。下例中,8 位寄存器中的正数(+127)循环左移后变为负数(-2):
mov al, +127 ; AL = 01111111b
rol al, 1 ; OF = 1, AL = 11111110b
同样,-128 向右移动一位,溢出标志位置 1。AL 中的结果(+64)符号位与原数相反:
mov al, -128 ; AL = 10000000b
shr al, 1 ; OF = 1, AL = 01000000b
如果循环移动次数大于 1,则溢出标志位无定义。