我有一個簡單的高級彙編程序,我正在學習位移和旋轉的來龍去脈。我有這個簡單的程序,可以在單個字節中移位。爲什麼沒有設置進位標誌?
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,對不起,我已經改變了代碼來反映我的問題。 –