導航:首頁 > 操作系統 > 單片機移兩位指令

單片機移兩位指令

發布時間:2024-11-01 17:18:40

單片機中<<是左移還是右移

<< : 是左移指令,低位補零。移出去的就消失了。

ROL: 循環左移指令,低位補高位移除的數據。

這是因為計算機的數值在單片機里都是二進制的數值,對它進行左移一位,,相當於每一位都進了一位。例如數值2,用二進製表示為0010,左移一位變成了4,即0100。

例如: 1000,0001 b,

a = 1000,0001 b << 1; 則: a = 0000,0010 b;

a = ROL 1000,0001 b,1; 則: a = 0000,0011 b;

補充:

循環左移ROL(Rotate Left):移出的位不僅要進入CF,而且還要填補空出的位。

帶進位的循環左移RCL(Rotate Left Through Carry):用原CF的值填補空出的位,移出的位再進入CF。

(1)單片機移兩位指令擴展閱讀

算術左移=邏輯左移

說明:算術左移和邏輯左移一樣都是右邊補0:比如 00101011

算術左移一位:01010110

邏輯左移一位:01010110

(對於二進制的數值來說左移n位等於原來的數值乘以2的n次方。比如00011010十進制是26,左移兩位後是01101000轉成十進制是104恰好是26的4倍。)

註:這種倍數關系只適用於左移後被舍棄的高位不含1的情況,否則會溢出。

邏輯右移很簡單,只要將二進制數整體右移,左邊補0即可,如10101101邏輯右移一位為01010110

算術右移符號位要一起移動,並且在左邊補上符號位,也就是如果符號位是1就補1符號位是0就補0 比如:11100算術右移一位為11110(符號位1跟著一起移動並且左邊補了1)

(對於二進制的數值來說右移n位等於原來的數值除以2的n次方,比如10110100十進制是76(需要先將這個補碼轉換成原碼之後再轉換成十進制),右移兩位後是11101101轉成十進制是19恰好是76的1/4倍。)

② 單片機移位指令問題:為什麼RLC A 左移一位相當於剩餘2 啊 !

你這個程序只有第一個問題的解答,即只有X2的操作。X2的操作比較好理解,P進制運算中,將數左移一位就是乘P。如10進制數左移一位就是乘10。你對後面的程序理解有問題。注釋「;累加器高位送入41H單元」是整個後面三條語句完成的,而並不是MOV 40H,A這條語句完成的。另:程序有問題,CLR C 這句應該是CLR A 。因為移位之後A的最高位會丟失,但如果最高位為1,移出時會產生進位,這時進位標志CY會置1,這樣,相當於將A的最高位移入CY中了,因此CY即表示乘法結果的高位。RLC A 將CY移入A的低位,然後MOV 41H,A 將A送入41H保存,即保存了乘法結果的高位。
另一個問題,絕對轉移指令和長轉移指令的區別就是轉移的地址范圍不一樣。絕對轉移指令的轉移地址為11位(2K),長轉移指令的轉移地址為16位(64K)。詳細區別與使用可參考網路文庫

③ 單片機循環移位指令中A=7AH,CY=1,執行指令RLC A,結果是怎麼算的

首先,RLC表示A帶進位標志(CY)循環左移一次,相當於乘以2;
進位標志CY=1,則A=7AH=123D(十進制的123)的帶進位標志用二進製表示為1 0111 1010 ,將其整體左移一位(就像是排頭走到最後一個,其他8個依次補位),
變為0 1111 0101,即十六進制的F5H=246D(即十進制的246),此時,第一個數 0 就是進位標志,即CY=0
所以,執行後結果為,(A)=F5H,CY=0。F5H=246D=123D×2

④ 單片機里的"rl a"是什麼意思

單片機里的"rl a"是循環左移指令,執行一次,累加器中的值左移一位,最高位移到最低位,比如:

MOV A,#90H

RL A

執行後,結果為(A)=21H。

(4)單片機移兩位指令擴展閱讀

用到循環移位的操作時,在匯編裡面是比較容易實現的,ror,rol指令就行了。利用位運算進行循環移位操作比較容易理解。如果不是循環移位,使用x<<n(左移n位),x>>n右移n位。

循環移位也容易理解。比如我們有個1位元組的數: x = 10111110。現在需要對其循環右移4位。也就是最後結果為x = 11101011。其實思路就是分離數據,我們需要提取出前四位1011,後四位1110。

其實需要兩個數的或操作,也就是00001011,11100000,我們只要得到這兩個數然後讓他們就行或操作:00001011|11100000 =11101011。把10111110 右移4位變為00001011(x>>4),把10111110左移4位變為11100000(x<<4),注意移位後的「空格」是用0填充的。最後執行或操作。

⑤ 單片機的左移指令什麼意思

這是匯編語言中的指令,是對累加器A中的8位數依此向左移一位,還分帶Cy的移位和不帶Cy的移位。指令分別為
RLC A ;帶Cy的左移位
RL A ;不帶Cy的移位
以RL A為例說明:假如A=10110010,則左移位一次後,這8位數向左移一位,最高位回到最低位,就像是8個人轉了一圈似。
移位後,A=01100101

⑥ 8051單片機用匯編循環移位指令實現除法,被除數為2的倍數,怎麼編啊

很簡單呀,比如一個數除以4
MOV A,DAT
CLR C
RRC A
CLR C
RRC A
被除數是2的幾次方,就用一次右移指令。

閱讀全文

與單片機移兩位指令相關的資料

熱點內容
金屬熱處理pdf 瀏覽:187
電信伺服器lp是什麼意思 瀏覽:335
汽車什麼空調壓縮機好 瀏覽:189
自己擁有伺服器能做什麼 瀏覽:957
高血壓APP論文研究目標怎麼寫 瀏覽:248
編譯apm固件 瀏覽:532
arm和51單片機區別 瀏覽:318
mac電腦如何開伺服器 瀏覽:591
vs重新編譯報錯 瀏覽:6
壓縮加密保存不了 瀏覽:149
解壓視頻催眠抖音 瀏覽:670
汕尾車管所車貸解壓 瀏覽:344
程序員的十大股東 瀏覽:46
如何打開伺服器不穩定的網頁 瀏覽:678
伺服器install是什麼意思 瀏覽:757
pmon源碼編譯 瀏覽:562
網線加密不可上網什麼原因 瀏覽:751
如何作動畫的app 瀏覽:807
安卓十如何使用gg修改器 瀏覽:516
安卓手機怎麼更新zenly 瀏覽:329