在iAP88 / 86文档中,移位和旋转的时间信息取决于CL中的移位计数(p2-64)。这似乎意味着它循环遍历CL中的计数,进行了许多单位移位。
所以我的问题是,在旋转/移位完成之后,CL是否仍具有相同的值,或者该操作是否将其递减,类似于LOOP指令的行为?
在Intel 8088上,按CL中的值进行移位或旋转可保持CL不变。这些说明适用于以下情况:RCL RCR ROL ROR SAL SAR SHL SHR
从1981年7月开始的iAPX 88手册中指定了Intel 8088上这些指令的语义。
以ROL进行说明,语法为: ROL destination,count
编码规范确定COUNT
了语义规范中使用的符号的值。对于相关的指令形式,CL的值分配给该符号:
if v = 0 then COUNT = 1
else COUNT = (CL)
语义规范指示将符号COUNT的值分配给临时变量。寄存器CL从不改变。
(temp) ← COUNT
do while (temp) ≠ 0
(CF) ← high-order bit of (EA)
(EA) ← (EA) * 2 + (CF)
(temp) ← (temp)-1
if COUNT = 1 then
if high-order bit of (EA) ≠ (CF)
then (OF) ← 1
else (OF) ← 0
else (OF) undefined
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句