Jam*_*gas 2 x86 assembly x86-16
在iAP88/86文档中,移位和旋转的时序信息取决于CL中的移位计数(p2-64).这似乎意味着它在CL中循环计数,进行许多单位移位.
所以我的问题是,在旋转/移位完成后CL仍然具有相同的值,或者操作是否将其计数,类似于LOOP指令的行为?
在Intel 8088上,按CL移动或旋转一个值会使CL保持不变.对于这些说明,这是正确的:RCL RCR ROL ROR SAL SAR SHL SHR
英特尔8088上的这些说明的语义在1981年7月的iAPX 88 Book中有详细说明.
以ROL为博览会,语法为: ROL destination,count
编码规范确定COUNT了语义规范中使用的符号的值.对于相关的指令形式,CL的值被分配给符号:
if v = 0 then COUNT = 1
else COUNT = (CL)
Run Code Online (Sandbox Code Playgroud)
语义规范指示符号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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |