導航:首頁 > 操作系統 > rrc單片機

rrc單片機

發布時間:2022-05-04 05:11:48

❶ 誰知道單片機中這些縮寫是什麼意思ANL BIT ORL CPL JC JNC JB JBC JNB SETB RLC RL RRC RR CPL XRL ORL...

這些是匯編指令 包括「與,或,非,跳轉(JC JNC JB JBC JNB) ,置位,左移,左環移,右移,右環移,帶進位的加 」
JC C為1跳轉
JNC C為零跳轉
JB B為1跳轉
JBC
JNB B為0跳轉
查一下51單片機的書就行了

❷ 單片機中匯編語言RLC是什麼意思

RLC 是帶進位的循環左移,RLC A即將A的內容左移一位,將進位位C中的值移到累加器A的最低位,A的最高位移到C里。

譬如說:設A=01000001,C=1;

則如果執行RL ,則A=10000010,C=1(A所有位左移一位,最低位補零,C不參加移位操作,保持原值不變),如果執行RLC後,則A=10000011,C=0(A的最高位移到C,C原值移到A最低位)。

C=1,A=55H,RLC A後則為:C=0 A=ABH,即:1 01010101變為:0 10101011

(2)rrc單片機擴展閱讀

匯編語言ROL和RCL的區別方法:

AL=10100000時,ROL AL,1就把最高位的 1 移到最後,使AL變成 0100 0001,同時移出的1送CF;ROL AL,CL(CL=2),相當於2次 ROL AL,1,所以AL變成 1000 0010,最後移出的0送CF。

RCL AL,1則把AL的最高位1送給CF,使CF=1,AL其它位相應左移,成為 0100 000X,最後空下的X位被CF原來的值補齊;同樣,ROL AL,CL(CL=2),相當於2次 RCL AL,1,最後AL變成 1000 00X1,AL原第二位的0到了CF,CF原來的值補AL中的x。

❸ 單片機 RRC右移 指令的用法

RRC指令就是帶進位累加器循環右移。舉例說明:

C =1,A=1100 1100B,

執行RRC A後,C=0,A=1110 0110B(A的最低位移給C,並且C原來的值移給A的最高位。)

SETB C(cy=1)

XCH A,R2(兩數交換R2=54H,A=C2H)

JB A.7 , ELSE(若A的最高位為1,則轉至else)

CLR C

ELSE: RRC A(帶進位位右移A=1110 0 001B=E1H Cy=0)

XCH A ,R2(兩數交換後,R2=E1H,A=54H)

RRC A(帶進位位右移A=0010 1 010B=2AH Cy=0)

所以,最終(R2)=E1H,(A)=2AH

(3)rrc單片機擴展閱讀:

控制轉移類指令還包括以下:

1、無條件轉移指令 AJMP addrll (2位元組指令),2K(地址211)位元組范圍內的無條件跳轉指令。64K程序存儲器空間分為32個區,每區2K位元組,轉移的目標地址必須與AJMP下一條指令的地址高5位地址碼A15-A11相同。

指令執行時,先PC加2,然後把addrll送入PC.10~PC.0,PC.15~PC.11保持不變,程序轉移到目標地址。注意:轉移目標首地址必須在AJMP指令下一條指令地址(PC+2)的2KB范圍內。

2、長跳轉指令 LJMP addr16 (3位元組指令),64K位元組范圍內的無條件跳轉指令。指令執行時,把指令的第二和第三位元組分別裝入PC的高位和低位位元組中,無條件地轉向addr16指出的目標地址。

目標地址可以在64K程序存儲器地址空間的任何位置。注意:短跳轉、長跳轉指令中addrll、addr16直接寫上要轉向的目標地址標號(即符號地址)就可以。

3、相對轉移指令 SJMP rel (雙位元組),rel為8位帶符號二進制補碼數(-128~+127),實現程序的雙向轉移。在編寫程序時,直接寫上要轉向的目標地址標號就可以。

4、間接跳轉(散轉)指令JMP @A+DPTR (三位元組),由A中8位無符號數與DPTR的16位數內容之和來確定。以DPTR內容作為基址,A的內容作變址。

5、條件轉移指令 (雙位元組)

JZ rel ; 如果累加器為「0」,則轉移

JNZ rel; 如果累加器非「0」,則轉移

❹ 匯編語言用RRC指令編寫16位寄存器除8指令

RRC指令,是MCS-51單片機的指令。
----
假設,16位寄存器:R2
R3,其中R2是高八位

❺ 單片機程序中RRC A是什麼意思

將累加器A中的數帶進位右移一位 R 移動R向右C進位標志C

RLC A 將累加器A中的數帶進位左移一位

❻ 51單片機的指令英文全名

MOV(英文為Move):對內部數據寄存器RAM和特殊功能寄存器SFR的數據進行傳送;
MOVC(Move Code)讀取程序存儲器數據表格的數據傳送;
MOVX (Move External RAM) 對外部RAM的數據傳送;
XCH (Exchange) 位元組交換;
XCHD (Exchange low-order Digit) 低半位元組交換;
PUSH (Push onto Stack) 入棧;
POP (Pop from Stack) 出棧;

(2)算術運算類指令(8種助記符)
ADD(Addition) 加法;
ADDC(Add with Carry) 帶進位加法;
SUBB(Subtract with Borrow) 帶借位減法;
DA(Decimal Adjust) 十進制調整;
INC(Increment) 加1;
DEC(Decrement) 減1;
MUL(Multiplication、Multiply) 乘法;
DIV(Division、Divide) 除法;

(3)邏輯運算類指令(10種助記符)
ANL(AND Logic) 邏輯與;
ORL(OR Logic) 邏輯或;
XRL(Exclusive-OR Logic) 邏輯異或;
CLR(Clear) 清零;
CPL(Complement) 取反;
RL(Rotate left) 循環左移;
RLC(Rotate Left throught the Carry flag) 帶進位循環左移;
RR(Rotate Right) 循環右移;
RRC (Rotate Right throught the Carry flag) 帶進位循環右移;
SWAP (Swap) 低4位與高4位交換;

(4)控制轉移類指令(17種助記符)
ACALL(Absolute subroutine Call)子程序絕對調用;
LCALL(Long subroutine Call)子程序長調用;
RET(Return from subroutine)子程序返回;
RETI(Return from Interruption)中斷返回;
SJMP(Short Jump)短轉移;
AJMP(Absolute Jump)絕對轉移;
LJMP(Long Jump)長轉移;
CJNE (Compare Jump if Not Equal)比較不相等則轉移;
DJNZ (Decrement Jump if Not Zero)減1後不為0則轉移;
JZ (Jump if Zero)結果為0則轉移;
JNZ (Jump if Not Zero) 結果不為0則轉移;
JC (Jump if the Carry flag is set)有進位則轉移;
JNC (Jump if Not Carry)無進位則轉移;
JB (Jump if the Bit is set)位為1則轉移;
JNB (Jump if the Bit is Not set) 位為0則轉移;
JBC(Jump if the Bit is set and Clear the bit) 位為1則轉移,並清除該位;
NOP (No Operation) 空操作;
(5)位操作指令(1種助記符)
SETB(Set Bit) 位 置1

基本是全的,個別有的沒有找到。雖說用到的機會很小,但是對於理解指令功能很有幫住

❼ 大家好,我想問一下單片機C語言中有沒有帶進位的循環右移或者左移的指令,與匯編語言中的RRC或者RLC類似。

C語言中沒有提供循環移位的操作符,但可以通過簡潔的方式實現循環移位
設一個操作數x有s位則循環左移n位的操作為:
(x << n) | (x >> (s - n));
同理右移n位位:
(x >> n) | (x << (s - n));
你可以#define XX (x<<n) | (x>>(s-n)
。。。
補充下:上面是當 n<=s的情況 當n>s的話 只要把n改為 (n%s)就可以了

❽ 從這兩段單片機匯編程序來看,RR,RL和RRC,RLC在這里區別不大

不一樣,
不帶C的循環,就A里的8位數據自循環,移動8次,循環一周.

帶C的就不一樣,移動一次,C的狀態會移入A,而A的移出的位會移進C.
就是C參與了移動,所以C的位的狀態會影響結果.

❾ 51單片機中rr,rrc,rl,rlc這些指令除了位移做跑馬燈外,還有其它有實際意義的作用嗎 我覺得就是個廢物

在數學運算中的意義就大了,左移一位就是乘以2,右移就是除以2,很有運算意義的!

❿ 那你知道RR指令(右移)跟RRC(右移包括CY位)指令用c語言分別怎麼表達嗎能舉個例子嗎先謝啦~

你好,
我了解C語言對51單片機的編程,對匯編不是很了解。我粗略看了一下,發現匯編的位移操作比C語言復雜很多,c語言的位移操作無非兩個運算符:>>(右移)和<<(左移)
比如:
0x1<<2 得到 0x4
0xf>>3 得到 0x2
(C語言中0x開頭表示十六進制)
可見左操作數是被操作的對象,右操作數是位移的位數。
一般來說我們在C51中都是對unsigned char類型進行位操作,所以移出的位都是補0(如果是對有符號整數>>,最高位也即符號位會保持不變),因此C語言在這方面能夠實現的不如匯編。
當然你可以如樓上所說聯合編程,也可以在C語言函數中直接插入匯編語句,這一點Keil C 編譯器早已支持。聯合編程我不了解,而C語言中插入匯編語句應這樣進行:
1、在含有匯編語句的函數前聲明:#pragma src;
2、在匯編語句的起始和末尾加#pragma asm 和 #pragma endasm標識始末位置。

如果希望進一步討論歡迎hi我。

閱讀全文

與rrc單片機相關的資料

熱點內容
xshell連接linux命令 瀏覽:3
把多個文件夾的內容合並在一起 瀏覽:479
基於單片機的澆花系統設計ppt 瀏覽:683
卷積碼編解碼及糾錯性能驗證實驗 瀏覽:352
請在刪除驅動器之前暫停加密什麼意思 瀏覽:785
光催化pdf 瀏覽:98
java字元串包含某字元 瀏覽:526
ssm身份認證源碼 瀏覽:466
預排序遍歷樹演算法 瀏覽:671
加密裝置如何打開ping功能 瀏覽:478
python下載372 瀏覽:901
u盤子文件夾隱藏 瀏覽:296
本地誤刪svn文件夾 瀏覽:685
海康威視python通道名 瀏覽:241
如何用app覆蓋全部曲庫 瀏覽:602
變異布林源碼 瀏覽:686
表格加密設置列印區域 瀏覽:437
卡耐基pdf下載 瀏覽:924
現在最流行的單片機 瀏覽:89
機頂盒刷機源碼 瀏覽:986