51微控制器共有多少指令

時間 2021-12-21 13:27:00

1樓:幽蘭見藍衫

mcs-51微控制器的指令集

1、資料傳送類指令

助記符 功能說明 位元組數 振盪週期

mov a,rn 暫存器內容送入累加器 1 12

mov a,direct 直接位址單元中的資料送入累加器 2 12

mov a,@ri 間接ram中的資料送入累加器 1 12

mov a,#data8 8位立即數送入累加器 2 12

mov rn,a 累加器內容送入暫存器 1 12

mov rn,direct 直接位址單元中的資料送入暫存器 2 24

mov rn,#data8 8位立即數送入暫存器 2 12

mov direct,a 累加器內容送入直接位址單元 2 12

mov direct,rn 暫存器內容送入直接位址單元 2 24

mov direct,direct 直接位址單元中的資料送入直接位址單元 3 24

mov direct,@ri 間接ram中的資料送入直接位址單元 2 24

mov direct,#data8 8位立即數送入直接位址單元 3 24

mov @ri,a 累加器內容送入間接ram單元 1 12

mov @ri,direct 直接位址單元中的資料送入間接ram單元 2 24

mov @ri,#data8 8位立即數送入間接ram單元 2 12

mov dptr,#data16 16位立即數字址送入位址暫存器 3 24

movc a,@a+dptr 以dptr為基位址變址定址單元中的資料送入累加器 1 24

movc a,@a+pc 以pc為基位址變址定址單元中的資料送入累加器 1 24

movx a,@ri 外部ram(8位位址)送入累加器 1 24

movx a,@dptr 外部ram(16位位址)送入累加器 1 24

movx @ri,a 累加器送入外部ram(8位位址) 1 24

movx @dptr,a 累加器送入外部ram(16位位址) 1 24

push direct 直接位址單元中的資料壓入堆疊 2 24

pop direct 堆疊中的資料彈出到直接位址單元 2 24

xch a,rn 暫存器與累加器交換 1 12

xch a,direct 直接位址單元與累加器交換 2 12

xch a,@ri 間接ram與累加器交換 1 12

xchd a,@ri 間接ram與累加器進行低半位元組交換 1 12

2、算術操作類指令

助記符 功能說明 位元組數 振盪週期

add a,rn 暫存器內容加到累加器 1 12

add a,direct 直接位址單元加到累加器 2 12

add a,@ri 間接ram內容加到累加器 1 12

add a,#data8 8位立即數加到累加器 2 12

addc a,rn 暫存器內容帶進製加到累加器 1 12

addc a,dirct 直接位址單元帶進製加到累加器 2 12

addc a,@ri 間接ram內容帶進製加到累加器 1 12

addc a,#data8 8位立即數帶進製加到累加器 2 12

subb a,rn 累加器帶借位減暫存器內容 1 12

subb a,dirct 累加器帶借位減直接位址單元 2 12

subb a,@ri 累加器帶借位減間接ram內容 1 12

subb a,#data8 累加器帶借位減8位立即數 2 12

inc a 累加器加1 1 12

inc rn 暫存器加1 1 12

inc direct 直接位址單元內容加1 2 12

inc @ri 間接ram內容加1 1 12

inc dptr dptr加1 1 24

dec a 累加器減1 1 12

dec rn 暫存器減1 1 12

dec direct 直接位址單元內容減1 2 12

dec @ri 間接ram內容減1 1 12

mul a,b a乘以b 1 48

div a,b a除以b 1 48

da a 累加器進行十進位制轉換 1 12

3、邏輯操作類指令

助記符 功能說明 位元組數 振盪週期

anl a,rn 累加器與暫存器相「與」 1 12

anl a,direct 累加器與直接位址單元相「與」 2 12

anl a,@ri 累加器與間接ram內容相「與」 1 12

anl a,#data8 累加器與8位立即數相「與」 2 12

anl direct,a 直接位址單元與累加器相「與」 2 12

anl direct,#data8 直接位址單元與8位立即數相「與」 3 24

orl a,rn 累加器與暫存器相「或」 1 12

orl a,direct 累加器與直接位址單元相「或」 2 12

orl a,@ri 累加器與間接ram內容相「或」 1 12

orl a,#data8 累加器與8位立即數相「或」 2 12

orl direct,a 直接位址單元與累加器相「或」 2 12

orl direct,#data8 直接位址單元與8位立即數相「或」 3 24

xrl a,rn 累加器與暫存器相「異或」 1 12

xrl a,direct 累加器與直接位址單元相「異或」 2 12

xrl a,@ri 累加器與間接ram內容相「異或」 1 12

xrl a,#data8 累加器與8位立即數相「異或」 2 12

xrl direct,a 直接位址單元與累加器相「異或」 2 12

xrl direct,#data8 直接位址單元與8位立即數相「異或」 3 24

clr a 累加器清0 1 12

cpl a 累加器求反 1 12

rl a 累加器迴圈左移 1 12

rlc a 累加器帶進製迴圈左移 1 12

rr a 累加器迴圈右移 1 12

rrc a 累加器帶進製迴圈右移 1 12

swap a 累加器半位元組交換 1 12

4、控制轉移類指令

助記符 功能說明 位元組數 振盪週期

acall addr11 絕對短呼叫子程式 2 24

lacll addr16 長呼叫子程式 3 24

ret 子程式返回 1 24

reti 中斷返回 1 24

ajmp addr11 絕對短轉移 2 24

ljmp addr16 長轉移 3 24

sjmp rel 相對轉移 2 24

jmp @a+dptr 相對於dptr的間接轉移 1 24

jz rel 累加器為零轉移 2 24

jnz rel 累加器非零轉移 2 24

cjne a,direct,rel 累加器與直接位址單元比較,不等則轉移 3 24

cjne a,#data8,rel 累加器與8位立即數比較,不等則轉移 3 24

cjne rn,#data8,rel 暫存器與8位立即數比較,不等則轉移 3 24

(相等則執行本指令的下一條)

cjne @ri,#data8,rel 間接ram單元,不等則轉移 3 24

(但有時還想得知兩數比較之後哪個大,哪個小,

本條指令也具有這樣的功能,如果兩數不相等,

則cpu還會反映出哪個數大,哪個數小,

這是用cy(進製標誌位)來實現的。

如果左邊的數(a,rn,@ri)大或者等於右邊的數(direct,#date8),則cy=0;否則cy=1)

djnz rn,rel 暫存器減1,非零轉移 3 24

djnz direct,rel 直接位址單元減1,非零轉移 3 24

nop 空操作 1 12

控制轉移指令共有17條,可分為「無條件轉移指令」 「有條件轉移指令」 「子程式呼叫指令」 及 「返回指令」。

5、布林變數操作類指令

助記符 功能說明 位元組數 振盪週期

clr c 清進製位 1 12

clr bit 清直接位址位 2 12

setb c 置進製位 1 12

setb bit 置直接位址位 2 12

cpl c 進製位求反 1 12

cpl bit 直接位址位求反 2 12

anl c,bit 進製位和直接位址位相「與」 2 24

anl c,/bit 進製位和直接位址位的反碼相「與」 2 24

orl c,bit 進製位和直接位址位相「或」 2 24

orl c,/bit 進製位和直接位址位的反碼相「或」 2 24

mov c,bit 直接位址位送入進製位 2 12

mov bit,c 進製位送入直接位址位 2 24

jc rel 進製位為1則轉移(cy=o不轉移,=1轉移) 2 24

jnc rel 進製位為0則轉移(和上面相反) 2 24

jb bit,rel 直接位址位為1則轉移 3 24

jnb bit,rel 直接位址位為0則轉移 3 24

jbc bit,rel 直接位址位為1則轉移,該位清零 3 24

偽指令助記符 功能說明

org 設定程式起始位址

end 標誌源**結束

equ 定義常數

set 定義整型數

data 給位元組型別符號定值

byte 給位元組型別符號定值

wrod 給字型別符號定值

bit 給位位址取名

altname 用自定義名取代保留字

db 給一塊連續的儲存區裝載位元組型資料

dw 給一塊連續的儲存區裝載字型資料

ds 預留乙個連續的儲存區或裝入指定位元組。

include 將乙個原始檔插入程式中

title 列表檔案中加入標題行

nolist 彙編時不產生列表檔案

nocode 條件彙編時,條件為假的不產生清單

51微控制器的指令英文全名,微控制器所有指令的英文全稱

mov 英文為move 對內部資料暫存器ram和特殊功能暫存器sfr的資料進行傳送 movc move code 讀取程式儲存器資料 的資料傳送 movx move external ram 對外部ram的資料傳送 xch exchange 位元組交換 xchd exchange low order...

mcs 51微控制器的資料傳送指令

51微控制器全部的資料傳送指令如下圖 應該是這樣 mov r0,20h 立即數0x20 r0movx a,r0 以r0為位址 0x20 從片外讀數值到amov 20h,a 把a的值move到片內位址0x20處。對,movx,都是片外。movx dptr,a a送外部資料 16位位址 movx r0,...

關於51微控制器中斷程式,51微控制器中斷程式

你好 看你對定時器中斷不是很了解,我可以給你乙個詳細的解釋 首先了解一下51微控制器的週期,51微控制器的機器週期計算方式是12 晶振 hz 也就是說微控制器每隔這麼一段時間會讓定時暫存器加1,如果是12mhz晶振,就是1us定時暫存器會自己加1。然後,當你配置好定時器相關暫存器後,開啟trx 定時...

51系列微控制器有哪些用途,51微控制器 的實際應用有哪些?範圍廣嗎?

微控制器是一種可通過程式設計控制的微處理器,微控制器晶元自身不能單獨應用與某項工程或產品上,它必須要靠外圍數字器件或者是模擬器件的協調才能發揮其自身的強大功能。微控制器屬於控制類數字晶元,目前其應用於領域已非常廣泛。主要如下 1.工業自動化。如資料採集,測控技術等 2.智慧型儀器儀表。如數字示波器,...

51微控制器中if語句的問題,51微控制器中if語句的乙個問題

微控制器程式在執行完main程式後會跳回到住main程式入口再重新執行的。把這個程式反彙編以後可以看到在c 0x0018行跳回主函式入口c0003 c 0x0000 02000f ljmp c 000f 4 void main void 5 c 0x000e 22ret c 0x000f 787f ...