我有一个简单的高级汇编程序,我正在学习位移和旋转的来龙去脉。我有这个简单的程序,可以在单个字节中移位。为什么没有设置进位标志?
static
var: int8 := 127;
begin test1;
stdout.put(var, nl);
shl(1, var);
stdout.put(var, nl);
if (@C) then stdout.put("carry set"); endif;
end test1;
由于字节设置为127,应该通过左移一次是01111111
当然,作为最后一位保留签约进位标志应提高?
然而,这并不是看起来会发生的事情,实际上所有的字节都会左移一次,因此字节现在是11111110或-2。
如果每次都发生这种情况,什么情况会导致进位标志置位?
平台是赢得7 64位
可能重复的[关于组件CF(进位)和(溢出)标志(http://stackoverflow.com/questions/791991/ about-assembly-cfcarry-and-ofoverflow-flag) – Amber
我认为“转移”的意图是 – WaelJ
@paul,对不起,我已经改变了代码来反映我的问题。 –