微控制器指令問題

2022-02-23 04:58:20 字數 9178 閱讀 8744

1樓:匿名使用者

mcs-51系列微控制器指令以a開頭的指令有18條,分別為:篇幅不夠,只是一半!

1、acall addr11

指令名稱:絕對呼叫指令

指令**:,a[7:0]

指令功能:構造目的地址,進行子程式呼叫。其方法是以指令提供的11位地址(al0~a0),取代pc的低11位,pc的高5位不變。

操作內容:

pc<-(pc)+2

sp<-(sp)+1

(sp)<-(pc)7~0

sp<-(sp)+1

(sp)<-(pc)15~8

pc10~0<-addrl0~0

位元組數: 2

機器週期:2

使用說明:由於指令只給出子程式入口地址的低11位,因此呼叫範圍是2kb。

2、add a,rn

指令名稱:暫存器加法指令

指令**:28h~2fh

指令功能:累加器內容與暫存器內容相加

操作內容:a<-(a)+(rn), n=0~7

位元組數: 1

機器週期;1

影響標誌位:c,ac,ov

3、add a,direct

指令名稱:直接定址加法指令

指令**:25h

指令功能:累加器內容與內部ram單元或專用暫存器內容相加

操作內容:a<-(a)+(direct)

位元組數: 2

機器週期:1

影響標誌位:c,ac,ov

4、add a,@ri

指令名稱:間接定址加法指令

指令**:26h~27h

指令功能:累加器內容與內部ram低128單元內容相加

操作內容:a<-(a)+((ri)), i=0,1

位元組數: 1

機器週期:1

影響標誌位:c,ac,ov

5、add a,#data

指令名稱:立即數加法指令

指令**:24h

指令功能:累加器內容與立即數相加

操作內容:a<-(a)+data

位元組數: 2

機器週期:1

影響標誌位:c,ac,ov

6、addc a,rn

指令名稱:暫存器帶進位加法指令

指令**:38h~3fh

指令功能:累加器內容、暫存器內容和進位位相加

操作內容:a<-(a)+(rn)+(c), n=0~7

位元組數: 1

機器週期:1

影響標誌位:c,ac,ov

7、addc a,direct

指令名稱:直接定址帶進位加法指令

指令**:35h

指令功能:累加器內容、內部ram低128單元或專用暫存器內容與進位位加

操作內容:a<-(a)+(direct)+(c)

位元組數: 2

機器週期:1

影響標誌位:c,ac,ov

8、addc a,@ri

指令名稱:間接定址帶進位加法指令

指令**:36h~37h

指令功能:累加器內容、內部ram低128單元內容及進位位相加

操作內容:a<-(a)+((ri))+(c), i=0,1

位元組數: 1

機器週期:1

影響標誌位:c,ac,ov

9、addc a,#data

指令名稱:立即數帶進位加法指令

指令**:34h

指令功能:累加器內容、立即數及進位位相加

操作內容:a<-(a)+data+(c)

位元組數: 2

機器週期:1

影響標誌位:c,ac,ov

10、ajmp addr11

指令名稱:絕對轉移指令

指令**:,a[7:0]

指令功能:構造目的地址,實現程式轉移。其方法是以指令提供的11位地址,取代pc的低11位,.而pc的高5位保持不變。

操作內容:pc<-(pc)+2

pcl0~0<-addrll

位元組數: 2

機器週期:2

使用說明:由於addrll的最小值是000h,最大值是7ffh,因此地址轉移範圍是2kb。

11、anl a,rn

指令名稱:暫存器邏輯與指令

指令**:58h~5fh

指令功能:累加器內容邏輯與暫存器內容

操作內容:a<-(a)^(rn), n=0~7

位元組數: 1

機器週期:1

12、anl a,direct

指令名稱:直接定址邏輯與指令

指令**:55h

指令功能:累加器內容邏輯與內部ram低128單元或專用暫存器內容

操作內容:a<-(a)^(diret)

位元組數: 2

機器週期:1

13、anl a,@ri

指令名稱:間接定址邏輯與指令

指令**:56h~57h

指令功能:累加器內容邏輯與內部ram低128單元內容

操作內容:a<-(a)^((ri)) i=0,1

位元組數: 1

機器週期:1

14、anl a,#data

指令名稱:立即數邏輯與指令

指令**:54h

指令功能:累加器內容邏輯與立即數

操作內容:a<-(a)^data

位元組數: 2

機器週期:1

15、anl direct,a

指令名稱:累加器邏輯與指令

指令**:52h

指令功能:內部ram低128單元或專用暫存器內容邏輯與累加器內容

操作內容:direct<-(a)^(direct)

位元組數: 2

機器週期:1

16、anl direct, #data

指令名稱:邏輯與指令

指令**:53h

指令功能:內部ram低128單元或專用暫存器內容邏輯與立即數

操作內容:direct<-(direct)^data

位元組數: 3

機器週期:2

17、anl c,bit

指令名稱:位邏輯與指令

指令**:82h

指令功能:進位標誌邏輯與直接定址位

操作內容:c<-(c)^(bit)

位元組數: 2

機器週期:2

18、anl c,/bit

指令名稱:位邏輯與指令

指令**:b0h

指令功能:進位標誌邏輯與直接定址位的反

操作內容:c<-(c)^(bit)

位元組數: 2

以c開頭的指令有10條,分別為:

1、cjne a,dircet,rel

指令名稱:數值比較轉移指令

指令**:b5h

指令功能:累加器內容與內部ram低128位元組或專用暫存器內容比較,不等則轉移。

操作內容:若(a)=(direct),則pc<-(pc)+3,c<-0

若(a)>(direct),則pc<-(pc)+3+rel,c<-0

若(a)<(direct),則pc<-(pc)+3+rel,c<-1

位元組數: 3

機器週期:2

2、cjne a,#data,rel

指令名稱:數值比較轉移指令

指令**:b4h

指令功能:累加器內容與立即數比較,不等則轉移。

操作內容:若(a)=data,則pc<-(pc)+3,c<-0

若(a)>data,則pc<-(pc)+3+rel,c<-0

若(a)<data,則pc<-(pc)+3+rel,c<-1

位元組數: 3

機器週期:2

3、cjne rn,#data,rel

指令名稱:數值比較轉移指令

指令**:b8h~bfh

指令功能:暫存器內容與立即數比較,不等則轉移。

操作內容:若(rn)=data,則pc<-(pc)+3,c<-0

若(rn)>data,則pc<-(pc)+3+rel,c<-0

若(rn)<data,則pc<-(pc)+3+rel,c<-1

位元組數: 3

機器週期:2

4、cjne @ri,#data,rel

指令名稱:數值比較轉移指令

指令**:b6h~b7h

指令功能:內部ram低128單元內容與立即數比較,不等則轉移。

操作內容:若((ri))=data,則pc<-(pc)+3,c<-0

若((ri))>data,則pc<-(pc)+3+rel,c<-0

若((ri))<data,則pc<-(pc)+3+rel,c<-1

位元組數: 3

機器週期:2

5、clr a

指令名稱:累加器清0指令

指令**:e4h

指令功能:累加器清0

操作內容:a<-0

位元組數: 1

機器週期:1

6、clr c

指令名稱:進位標誌清0指令

指令**:c3h

指令功能:進位位清0

操作內容:c<-0

位元組數: 1

機器週期:1

7、clr bit

指令名稱:直接定址位清0指令

指令**:c2h

指令功能:直接定址位清0

操作內容:bit<-0

位元組數: 2

機器週期:1

8、cpl a

指令名稱:累加器取反指令

指令**:f4h

指令功能:累加器取反

操作內容:a<-(a)

位元組數: 1

機器週期:1

9、cpl c

指令名稱:進位標誌取反指令

指令**:b3h

指令功能:進位標誌位狀態取反

操作內容:c<-(c取反)

位元組數: 1

機器週期:1

10、 cpl bit

指令名稱:直接定址位取反指令

指令**:b2h

指令功能:直接定址位取反

操作內容:bit<-(bit取反)

位元組數: 2

機器週期:1

以d開頭的指令有8條,分別為:

1、da a

指令名稱:十進位制調整指令

指令**:d4h

指令功能:對bcd碼加法運算的結果進行有條件的修正

操作內容:若(a)3~0>9|(ac)=1,則a3~0<-(a)3~0+6

若(a)7~4>9|(c)=1,則a7~4<-(a)7~4+6

若(a)7~4=9^(a)3~0>9,則a7~4<-(a)7~4+6

位元組數: 1

機器週期:1

使用說明:da指令不影響溢位標誌

2、dec a

指令名稱:累加器減1指令

指令**:14h

指令功能:累加器內容減1

操作內容:a<-(a)-1

位元組數: 1

機器週期:1

3、dec rn

指令名稱:暫存器減1指令

指令**:18h~1fh

指令功能:暫存器內容減1

操作內容:rn<-(rn)-1,n=0~7

位元組數: 1

機器週期:1

4、dec direct

指令名稱:直接定址減1指令

指令**:15h

指令功能:內部ram低128單元及專用暫存器內容減1

操作內容:direct<-(direct)-1

位元組數: 2

機器週期:1

5、dec @ri

指令名稱:間接定址減1指令

指令**:16h~17h

指令功能:內部ram低128單元內容減1

操作內容:(ri)<-((ri))-1, i=0,1

位元組數: 1

機器週期:1

6、div ab

指令名稱:無符號數除法指令;

指令**:84h

指令功能:a的內容被b的內容除。指令執行後,商存於a中,餘數存於b中。

操作內容:a<-(a)/(b)的商

b<-(a)/(b)的餘數

位元組數: 1

機器週期:4

影響標誌位:c被清0;若b=00h,除法無法進行,並使ov=1;否則ov=0。

7、djnz rn,rel

指令名稱:暫存器減1條件轉移指令

指令**:d8h~dfh

指令功能:暫存器內容減1。不為0轉移;為0順序執行。

操作內容:rn<-(rn)-l,n=0~7

若(rn)≠0,則pc<-(pc)+2+rel

若(rn)=0,則pc<-(pc)+2

位元組數: 2

機器週期:2

8、djnz direct,rel

指令名稱:直接定址單元減1條件轉移指令

指令**:d5h

指令功能:內部ram低128單元內容減1。不為0轉移;為0順序執行。

操作內容:direct<-(direct)-1

若(direct)≠0,則pc<-(pc)+3+rel

若(direct)=0,則pc<-(pc)+3

位元組數: 3

機器週期:2

以i開頭的指令有5條,分別為:

1、inc a

指令名稱:累加器加1指令

指令**:04h

指令功能:累加器內容加1

操作內容:a<-(a)+1

位元組數: 1

機器週期:1

2、inc rn

指令名稱:暫存器加1指令

指令**:08h~0fh

指令功能:暫存器內容加1

操作內容:rn<-(rn)+1,n=0~7

位元組數: 1

機器週期:1

3、inc direct

指令名稱:直接定址單元加1指令

指令**:05h

指令功能:內部bam低128單元或專用暫存器內容加1

操作內容:direct<-(direct)+1

位元組數: 2

機器週期:1

4、inc @ri

指令名稱:間接定址單元加1指令

指令**:06h~07h

指令功能:內部ram低128單元內容加1

操作內容:(ri)<-((ri))+1;i=0,l

位元組數: 1

機器週期:1

5、inc dptr

指令名稱:16位資料指標加1指令

指令**:a3h

指令功能:資料指標暫存器dptr內容加1

操作內容:dptr<-(dptr)+1

位元組數: 1

機器週期:2

以j開頭的指令有8條,分別為:

1、jb bit,rel

指令名稱:位條件轉移指令。

指令**:20h

指令功能:根據指定位的狀態,決定程式是否轉移。若為1則轉移;否則順序執行。

操作內容:若(bit)=1,則pc<-(pc)+3+rel

若(bit)≠1,則pc<-(pc)+3

位元組數: 3

機器週期:2

2、jbc bit,rel

指令名稱:位條件轉移清0指令

指令**:10h

指令功能:對指定位的狀態進行測試。若為1,則把該位清0並進行轉移;否則程式順序執行。

操作內容:若(bit)=1,則pc<-(pc)+3+rel,bit<-0

若(bit)≠1,則pc<-(pc)+3

位元組數: 3

機器週期:2

3、jc rel

指令名稱:累加位條件轉移指令

指令**:40h

指令功能:根據累加位(c)的狀態決定程式是否轉移,若為1則轉移,否則順序執行。

操作內容:若(c)=1,則pc<-(pc)+2+rel

若(c)≠1,則pc<-(pc)+2

位元組數: 2

機器週期:2

4、jmp @a+dptr

指令名稱:無條件間接轉移指令

指令**:72h

指令功能:a內容與dptr內容相加作為轉移目的地址,進行程式轉移。

操作內容:pc<-(a)+(dptr)

位元組數: 1

機器週期;2

5、jnb bit,rel

指令名稱:位條件轉移指令

指令**:30h

指令功能:根據指定位的狀態,決定程式是否轉移。若為0則轉移;否則順序執行。

操作內容:若(bit)=0,則pc<-(pc)+3+rel

若(bit)≠0,則pc<-(pc)+3

位元組數: 3

機器週期:2

6、jnc rel

指令名稱:累加位條件轉移指令

指令**:50h

指令功能:根據累加位(c)的狀態決定程式是否轉移。若為o則轉移;否則順序執行。

操作內容:若(c)=0,則pc<-(pc)+2+rel

若(c)≠0,則pc<-(pc)+2

位元組數: 2

機器週期:2

7、jnz rel

指令名稱:判0轉移指令

指令**:70h

指令功能:累加位(a)的內容不為0,則程式轉移;否則程式順序執行。

操作內容:若(a)≠0,則pc<-(pc)+2+rel

若(a)=0,則pc<-(pc)+2

位元組數: 2

機器週期:2

8、jz rel

指令名稱:判0轉移指令

指令**:60h

指令功能:累加位(a)的內容為o,則程式轉移;否則程式順序執行。

操作內容:若(a)=0,則pc<-(pc)+2+rel

若(a)≠0,則pc<-(pc)+2

位元組數: 2

機器週期:2

以l開頭的指令就2條,分別為:

1、lcall addr16

指令名稱:長呼叫指令

指令**:12h

指令功能:按指令給定地址進行子程式呼叫

操作內容:pc<-(pc)+3

sp<-(sp)+1

(sp)<-(pc)7~0

sp<-(sp)+1

(sp)<-(pc)15~8

pc<-addrl6

位元組數: 3

機器週期:2

使用說明:在64kb的範圍內呼叫子程式

2、ljmp addrl6

指令名稱:長轉移指令

指令**:02h

指令功能:使程式按指定地址進行無條件轉移

操作內容:pc<-addrl6

位元組數: 3

機器週期:2

微控制器中斷返回指令,微控制器組合語言指令中中斷返回指令RET和RETI有什麼不同?

程式結構錯誤。mov th0,65536 50000 256 定時50毫秒 mov tl0,65536 50000 256mov ie,82h setb tr0 主程式,到這,就沒有了,這那行?timer 下面就是 定時器中斷服務程式mov th0,65536 50000 256 初脈衝50ms m...

微控制器程式問題,微控制器程式問題

其實現在有部分高階的微控制器都有flash儲存區,不過我們一般是作為儲存程式用的,但其實也可以作為少量的資料區使用。但一般普通的51系列微控制器是不能的,只能外部擴充套件加eeprom,或者flash。只不過現在很多微控制器是內部由eeprom,擴充套件的資料flash,按照晶片的公司提供的data...

關於微控制器中的jc指令,關於微控制器中的JC指令

閣下首先搞清楚cjne a,25,1的含義,它的含義有三點 1.當a等於25時,執行下一句 2.當a不等版於25時,跳轉到權ne1語句執行 3.要注意當a不等於25時,a必定大於25或者小於25,如果a小於25,則不僅要跳轉到ne1執行,還要給cy標誌位置一,如果a大於25,則僅僅要跳轉到ne1執行...