2013-11-20 45 views
0

是什麼,當你正在做一個「邏輯左移」「邏輯右移」二進制補碼溢出標誌的意思是「算術右移」在部件?溢出狀態寄存器標誌時移位

+0

你指的是哪一個微處理器? – lurker

+0

AVR 8位微控制器 – Cristi

+0

但我想知道該標誌一般意味着什麼8位或16位微處理器 – Cristi

回答

2

這可能取決於微處理器,您需要檢查指令集的相應手冊。如果您閱讀AVR指令集手冊,它將解釋狀態寄存器位發生了什麼。

對於LSLV(二的補碼溢出)由下式確定:

V: N ⊕ C (For N and C after the shift) 
N: Set if MSB of the result is set; cleared otherwise. 
C: Set if, before the shift, the MSB of Rd was set; cleared otherwise. 

V是異或負位(移位後的8位值的最高位比特)的和的進位位。在語義上,這意味着您的價值的上兩位,在轉變之前,具有相反的價位。

對於LSRV(二的補碼溢出)由下式確定:

V: N ⊕ C (For N and C after the shift) 
N: 0 
C: Set if, before the shift, the LSB of Rd was set; cleared otherwise. 

在這種情況下,由於N,是0,然後V僅僅是C補。因此,它的位值與移位前8位值的最低有效位值相反。從語義上講,如果它被設置,這意味着你的值的高兩位在移位之前有相反的奇偶性。

對於ASRV(二進制補碼溢出)由以下因素決定:

V: N ⊕ C (For N and C after the shift) 
N: Set if MSB of the result is set; cleared otherwise. 
C: Set if, before the shift, the LSB of Rd was set; cleared otherwise. 

語義,ASR對待,如果它簽署的,因爲它保留了最高級別(符號)位的8位值。所以N表示該值是一個負8位值(在移位之前和之後,因爲它被保留)。如果移位值爲負值,並且在移位前爲偶數(最低位清零),那麼V位將被置1,並且如果位移值爲正值並且它是奇數(設置了最低位位),它將被置位調動,轉移。否則,V將被清除。