3MCS-51單片機(jī)指令系統(tǒng)_第1頁(yè)
3MCS-51單片機(jī)指令系統(tǒng)_第2頁(yè)
3MCS-51單片機(jī)指令系統(tǒng)_第3頁(yè)
3MCS-51單片機(jī)指令系統(tǒng)_第4頁(yè)
3MCS-51單片機(jī)指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 第三章、第三章、 MCSMCS-51單片機(jī)指令系統(tǒng)單片機(jī)指令系統(tǒng) 3.1 指令的格式、常用符號(hào)指令的格式、常用符號(hào) 3.2 指令分類(lèi)指令分類(lèi) 3.3 尋址方式尋址方式3.1.1 指令格式指令格式 匯編語(yǔ)言匯編語(yǔ)言指令格式:指令格式:【標(biāo)號(hào):】操作碼【標(biāo)號(hào):】操作碼 【(目的操作數(shù)),(源操作數(shù))】;【注釋】【(目的操作數(shù)),(源操作數(shù))】;【注釋】(1)標(biāo))標(biāo) 號(hào):符號(hào)地址號(hào):符號(hào)地址(2)操作碼:指明執(zhí)行什么性質(zhì)和類(lèi)型的操作。)操作碼:指明執(zhí)行什么性質(zhì)和類(lèi)型的操作。(3)操作數(shù):指明操作數(shù)本身或者是它所在的)操作數(shù):指明操作數(shù)本身或者是它所在的 地址。地址。(4)注)注 釋:對(duì)指令的解釋、

2、說(shuō)明釋:對(duì)指令的解釋、說(shuō)明返回本節(jié)指令格式舉例:指令格式舉例: MOV A,#00H MOV R7,#30H MOV R0,#30HLOOP:MOV R0,A ;(;(R0) (A) INC R0 DJNZ R7,LOOP SJMP $3.1.2 指令常用描述符號(hào)指令常用描述符號(hào)Rn 當(dāng)前選中的寄存器區(qū)中的當(dāng)前選中的寄存器區(qū)中的8個(gè)工作寄存?zhèn)€工作寄存器器R0R7(n=07)。)。Ri 當(dāng)前選中的寄存器區(qū)中的當(dāng)前選中的寄存器區(qū)中的2個(gè)工作寄存?zhèn)€工作寄存器器R0、R1(i=0,1)。)。direct8位的內(nèi)部數(shù)據(jù)存儲(chǔ)器單元中的地址。位的內(nèi)部數(shù)據(jù)存儲(chǔ)器單元中的地址。#data包含在指令中的包含在指令

3、中的8位常數(shù)。位常數(shù)。#data16包含在指令中的包含在指令中的16位常數(shù)。位常數(shù)。rel8位帶符號(hào)的偏移字節(jié),簡(jiǎn)稱偏移量。位帶符號(hào)的偏移字節(jié),簡(jiǎn)稱偏移量。DPTR數(shù)據(jù)指針,可用作數(shù)據(jù)指針,可用作16位地址寄存器。位地址寄存器。bit內(nèi)部?jī)?nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ坊驅(qū)S眉拇嫫髦械闹苯訉ぶ肺?。位。A累加器。累加器。B專用寄存器,用于乘法和除法指令中。專用寄存器,用于乘法和除法指令中。 C進(jìn)位標(biāo)志或進(jìn)位位,或布爾處理機(jī)中進(jìn)位標(biāo)志或進(jìn)位位,或布爾處理機(jī)中 的累加器的累加器 間址寄存器或基址寄存器的前綴,如間址寄存器或基址寄存器的前綴,如 Ri,DPTR。 (R1) R1中的內(nèi)容。中的內(nèi)容。(

4、R1)R1中的內(nèi)容作地址來(lái)找到的內(nèi)容中的內(nèi)容作地址來(lái)找到的內(nèi)容。返回本節(jié)3.2 分類(lèi)指令分類(lèi)指令 3.21 數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令 3.2.2 算術(shù)運(yùn)算類(lèi)指令算術(shù)運(yùn)算類(lèi)指令 3.2.3 邏輯運(yùn)算與循環(huán)類(lèi)指令邏輯運(yùn)算與循環(huán)類(lèi)指令 3.2.4 程序轉(zhuǎn)移類(lèi)指令程序轉(zhuǎn)移類(lèi)指令 3.2.5 調(diào)用子程序及返回指令調(diào)用子程序及返回指令 3.2.6 位操作指令位操作指令 3.2.7 空操作指令空操作指令返回本章首頁(yè)3.2.1 數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令 數(shù)據(jù)傳送類(lèi)指令是將源操作數(shù)送到目的數(shù)據(jù)傳送類(lèi)指令是將源操作數(shù)送到目的操作數(shù)。指令執(zhí)行后,操作數(shù)。指令執(zhí)行后,源操作數(shù)不變?cè)床僮鲾?shù)不變,目的目的操作數(shù)被

5、源操作數(shù)取代操作數(shù)被源操作數(shù)取代。 數(shù)據(jù)傳送類(lèi)指令用到的助記符有數(shù)據(jù)傳送類(lèi)指令用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP。MCS-51單片機(jī)數(shù)據(jù)傳送關(guān)系示意圖寄存器 Rn累加器 A立即數(shù)#data直接地址direct間接地址Ri外部RAMROMMOVXMOVC1以以A為目的操作數(shù)為目的操作數(shù)MOV A,Rn;(;(A)( Rn)MOV A,direct ;(;(A)(direct)MOV A,Ri;(;(A)(Ri)MOV A,#data ;(;(A) #data2以Rn為目的操作數(shù)MOV Rn,A ;(;(Rn) ( A)MOV Rn,direct

6、;(;(Rn )(direct)MOV Rn,#data ;(;(Rn) #data3以直接地址為目的操作數(shù)以直接地址為目的操作數(shù)MOV direct ,A ; (direct) ( A)MOV direct ,direct;(;(direct) (direct)MOV direct ,#data; (direct) #data4以間接地址為目的操作數(shù)MOV Ri,A;(;(Ri) (A)MOV Ri,direct; (Ri) (direct)MOV Ri,#data; (Ri) #data 例如:設(shè)(例如:設(shè)(30H)=6FH,R1=40H,執(zhí)行,執(zhí)行 MOV R1,30H后,后,30H單元

7、中數(shù)據(jù)取出單元中數(shù)據(jù)取出送入送入R1間接尋址的間接尋址的40H單元,(單元,(40H)=6FH。5以以DPTR為目的操作數(shù)為目的操作數(shù)MOV DPTR,#data16;(;(DPTR) #data16例如執(zhí)行例如執(zhí)行 MOV DPTR,#2000H 后,后,(DPTR)= 2000H。 6訪問(wèn)外部數(shù)據(jù)訪問(wèn)外部數(shù)據(jù)RAM MOVX A,DPTR;A (DPTR)MOVX DPTR,A;(;(DPTR) (A)MOVX A,Ri ;A (P2Ri)MOVX Ri,A ;(;(P2Ri) A7讀程序存儲(chǔ)器讀程序存儲(chǔ)器MOVC A,A+DPTR;(;(A)(A)+(DPTR)MOVC A,A+PC;(

8、;(A) (A)+(PC)例如:已知(例如:已知(A)=30H,(,(DPTR)=3000H, 程序存程序存儲(chǔ)器單元(儲(chǔ)器單元(3030H)=50H,執(zhí)行,執(zhí)行 MOVC A, A+DPTR后,(后,(A)=50H。8數(shù)據(jù)交換數(shù)據(jù)交換l l 字節(jié)交換字節(jié)交換XCH A,Rn;(;(A) (Rn)XCH A ,direct ;(;(A)(direct)XCH A,Ri;(;(A)(Ri)l l 半字節(jié)交換半字節(jié)交換XCHD A,Ri ;(;(A)03(Ri)03SWAP A;(;(A)03(A)479堆棧操作 所謂堆棧是在片內(nèi)所謂堆棧是在片內(nèi)RAM中按中按“先進(jìn)后出,后先進(jìn)后出,后進(jìn)先出進(jìn)先出”

9、原則設(shè)置的專用存儲(chǔ)區(qū)。數(shù)據(jù)的進(jìn)原則設(shè)置的專用存儲(chǔ)區(qū)。數(shù)據(jù)的進(jìn)棧出棧由指針棧出棧由指針SP統(tǒng)一管理。堆棧的操作有如統(tǒng)一管理。堆棧的操作有如下兩條專用指令:下兩條專用指令: PUSH direct; (SP ) (SP ) +1,(,(SP)(direct) POP direct ;(direct)(SP),(),(SP) ( SP)-1 PUSH是進(jìn)棧(或稱為壓入操作)指令。指是進(jìn)棧(或稱為壓入操作)指令。指令執(zhí)行過(guò)程如圖所示。令執(zhí)行過(guò)程如圖所示。片內(nèi)RAM30H11H10HSP片內(nèi)RAM50H40H11H10HSP40H30H片內(nèi)RAM50H40H11H10H50HSP30H片內(nèi)RAM40H1

10、1H10H34HSP30H34H34H執(zhí)行前執(zhí)行前執(zhí)行PUSH 40H 指令后執(zhí)行POP 30H指令后指令PUSH操作示意圖指令POP操作示意圖【例【例3.1】 將片內(nèi)將片內(nèi)RAM 30H單元與單元與40H單元中的內(nèi)單元中的內(nèi)容互換。容互換。方法方法1(直接地址傳送法):(直接地址傳送法): MOV 31H,30H MOV 30H,40H MOV 40H,31H SJMP $30H31H40H132方法方法2(字節(jié)交換傳送法):(字節(jié)交換傳送法): MOVA,30H XCH A,40H MOV30H,A SJMP$返回本節(jié)30HA40H1323.2.2 算術(shù)運(yùn)算類(lèi)指令算術(shù)運(yùn)算類(lèi)指令1加法指令加

11、法指令A(yù)DD A,Rn; (A) (A) + (Rn)ADD A,direct; (A) (A) +(direct)ADD A,Ri;(;(A) (A) +(Ri)ADD A,#data; (A) (A) + #data2帶進(jìn)位加指令帶進(jìn)位加指令A(yù)DDC A,Rn; (A) (A) + (Rn) + (C)ADDC A,direct; (A) (A) +(direct)+ (C)ADDC A,Ri;(;(A) (A) +(Ri)+ (C)ADDC A,#data; (A) (A) + #data + (C)C為來(lái)自為來(lái)自PSW狀態(tài)寄存器中的進(jìn)位位狀態(tài)寄存器中的進(jìn)位位CY。例如例如:設(shè)設(shè)(A)=

12、20H,(R0)=21H,C=1,執(zhí)行指令,執(zhí)行指令 ADDC,R0后,后,(A)=42H (C)=0 。3帶借位減指令帶借位減指令SUBB A,Rn;(;(A) (A) -( Rn) -(C)SUBB A,direct;(;(A)( A) -(direct)-(C)SUBB A,Ri;(;(A) (A) -(Ri)-(C)SUBB A,#data;(;(A) (A) - #data (C)例如,設(shè)例如,設(shè)(A)=39H,(R0)=20H,(,(20H)=32H,(C)=1,執(zhí)行指令執(zhí)行指令 SUBB ,R0后,后,A=06H ,(C)=0 。4乘法指令乘法指令MUL AB ;(;(B)815

13、(A)07(A)(B)A和和B中各存放一個(gè)中各存放一個(gè)8位無(wú)符號(hào)數(shù),指令執(zhí)行后位無(wú)符號(hào)數(shù),指令執(zhí)行后16位乘積的高位乘積的高8位在位在B中,低中,低8位存位存A中。中。例如例如:(A)=30H,(B)=60H,執(zhí)行,執(zhí)行 MUL AB 后,后,(A)=00H,(B)=12H。 5除法指令除法指令 DIV AB ;(;(A)/(B)商在商在A中,余在中,余在B中中 A和和B中各存放一個(gè)中各存放一個(gè)8位無(wú)符號(hào)數(shù),位無(wú)符號(hào)數(shù),A放被除數(shù),放被除數(shù),B放除數(shù)。指令執(zhí)行后,放除數(shù)。指令執(zhí)行后,A中存放商,中存放商,B中存入中存入余數(shù)。若余數(shù)。若B=00H,則指令執(zhí)行后,則指令執(zhí)行后OV=1,A與與B不變

14、。不變。 例如,例如,A=(30)H,(B)=07H,執(zhí)行,執(zhí)行 DIV AB 后,后,(A)=06H,(B)=06H。6加加1指令指令I(lǐng)NC A;(A) (A) + 1INC Rn;(Rn)( Rn) + 1INC direct ;(;(direct) (direct)+ 1INC Ri;((Ri))((Ri))+ 1INC DPTR;(DPTR) (DPTR) + 1例如,(例如,(30H)=22H,執(zhí)行,執(zhí)行 INC 30H 后,后,(30H)=23H。7減減1指令指令DEC A;(A) (A) - 1DEC Rn;(Rn) (Rn) - 1DEC direct;(direct) (di

15、rect)- 1DEC Ri ;((Ri))((Ri))- 1例如:例如:(R0)=30H,(,(30H)=22H,執(zhí)行,執(zhí)行 DEC R0 后,(后,(30H)=21H,(R0)=30H。8十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令DA A ;把;把A中按二進(jìn)制相加的結(jié)果調(diào)整成按中按二進(jìn)制相加的結(jié)果調(diào)整成按BCD碼相加的結(jié)果碼相加的結(jié)果例如,例如,A=65BCD,B=78BCD,C=0,執(zhí)行下列語(yǔ),執(zhí)行下列語(yǔ)句句 ADD A,B DA A后,后,A=43 BCD,C=1?!纠俊纠?試把存放在試把存放在R1R2和和R3R4中的兩個(gè)中的兩個(gè)16位位數(shù)相加,結(jié)果存于數(shù)相加,結(jié)果存于R5R6中。中。解:參考程

16、序如下:解:參考程序如下: MOVA,R2;取第一個(gè)數(shù)的低;取第一個(gè)數(shù)的低8位位 ADDA,R4;兩數(shù)的低;兩數(shù)的低8位相加位相加 MOVR6,A;保存和的低;保存和的低8位位 MOVA,R1;取第一個(gè)數(shù)的高;取第一個(gè)數(shù)的高8位位 ADDCA,R3;兩數(shù)的高;兩數(shù)的高8位帶位帶C相加相加 MOVR5,A;把結(jié)果存入;把結(jié)果存入R5中中 SJMP $ 返回本節(jié)3.2.3 邏輯運(yùn)算與循環(huán)類(lèi)指令邏輯運(yùn)算與循環(huán)類(lèi)指令1“與與”操作指令操作指令 ANL2“或或”操作指令操作指令 ORL3“異或異或”操作指令操作指令 XRL4求反與清除指令求反與清除指令 CPL CRL5循環(huán)指令循環(huán)指令 RL 、 RR

17、、 RLC 、 RRC返回本節(jié)3.2.4 程序轉(zhuǎn)移類(lèi)指令程序轉(zhuǎn)移類(lèi)指令1無(wú)條件轉(zhuǎn)移指令無(wú)條件轉(zhuǎn)移指令絕對(duì)轉(zhuǎn)移指令絕對(duì)轉(zhuǎn)移指令 AJMP長(zhǎng)轉(zhuǎn)移指令長(zhǎng)轉(zhuǎn)移指令 LJMP短轉(zhuǎn)移指令短轉(zhuǎn)移指令 SJMP間接轉(zhuǎn)移指令間接轉(zhuǎn)移指令 JMP2條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令累加器為零(非零)轉(zhuǎn)移指令累加器為零(非零)轉(zhuǎn)移指令 JZ 、JNZCY為零(為零(1)轉(zhuǎn)移指令)轉(zhuǎn)移指令 JNC、 JC減減1非零轉(zhuǎn)移指令非零轉(zhuǎn)移指令 DJNZ 兩數(shù)不等轉(zhuǎn)移指令兩數(shù)不等轉(zhuǎn)移指令 CJNE3.2.5 調(diào)用子程序及返回指令調(diào)用子程序及返回指令1調(diào)用子程序指令調(diào)用子程序指令 LCALL LCALL 長(zhǎng)調(diào)用長(zhǎng)調(diào)用 ACALL ACAL

18、L 絕對(duì)調(diào)用絕對(duì)調(diào)用2返回指令返回指令 RET 子程序返回子程序返回 RETI 中斷返回中斷返回3.2.6 位操作指令位操作指令1位數(shù)據(jù)傳送指令位數(shù)據(jù)傳送指令MOV C,bit;(;(C)(bit)MOV bit,C;(;(bit)(C)2位狀態(tài)修改指令位狀態(tài)修改指令CLRC;C0CLRbit;(;(bit)0CPLC;CCPLbit;(;(bit)(bit)SETB C;C1SETB bit;(;(bit)13位邏輯運(yùn)算指令位邏輯運(yùn)算指令A(yù)NL C,bit;CC(bit)ANL C,/bit;CC(bit)ORL C,bit;CC(bit)ORL C,/bit;CC(bit) 4位轉(zhuǎn)移指令位

19、轉(zhuǎn)移指令JCrel; 若若C=1,則轉(zhuǎn)移(則轉(zhuǎn)移(PCPC+2+rel);否則程序順序執(zhí)行);否則程序順序執(zhí)行JNC rel; 若若C=0,則轉(zhuǎn)移(則轉(zhuǎn)移(PCPC+2+rel);否則程序順序執(zhí));否則程序順序執(zhí)JBbit,rel; 若若(bit)=1,則轉(zhuǎn)移(則轉(zhuǎn)移(PCPC+3+rel);否則程序順序執(zhí)行);否則程序順序執(zhí)行JNB bit,rel; 若若(bit)=0,則轉(zhuǎn)移(則轉(zhuǎn)移(PCPC+3+rel);否則程序順序執(zhí)行);否則程序順序執(zhí)行JBC bit,rel; 若若(bit)=1,則則PCPC+3+rel,(,(bit)0;否則程序順序;否則程序順序執(zhí)行執(zhí)行功能:分別檢測(cè)指定位是功

20、能:分別檢測(cè)指定位是1還是還是0,若條件符合,若條件符合,則則CPU轉(zhuǎn)向指定的目標(biāo)地址去執(zhí)行程序;否轉(zhuǎn)向指定的目標(biāo)地址去執(zhí)行程序;否則,順序執(zhí)行下條指令。則,順序執(zhí)行下條指令。 返回本節(jié)3.2.7 空操作指令空操作指令 NOP ;(;(PC) ( PC)+1 這是一條單字節(jié)指令。執(zhí)行時(shí),不作任何操這是一條單字節(jié)指令。執(zhí)行時(shí),不作任何操作(即空操作),僅將程序計(jì)數(shù)器作(即空操作),僅將程序計(jì)數(shù)器PC的內(nèi)容的內(nèi)容加加1,使,使CPU指向下一條指令繼續(xù)執(zhí)行程序。指向下一條指令繼續(xù)執(zhí)行程序。這條指令常用來(lái)產(chǎn)生一個(gè)機(jī)器周期的時(shí)間延這條指令常用來(lái)產(chǎn)生一個(gè)機(jī)器周期的時(shí)間延遲。遲。返回本節(jié)常見(jiàn)錯(cuò)誤指令:常見(jiàn)錯(cuò)

21、誤指令: MOV R0,R1 PUSH #30H MOVX A,A+DPTR XCH R0,30H ADD A,DPTR SUBB B,A DEC DPTR MOV R2,A MOV R0,R7 MOVX A,40H XCHD A,R0 MUL A*B 3.2 尋址方式尋址方式 3.3.1 立即尋址立即尋址 3.3.2 直接尋址直接尋址 3.3.3 寄存器尋址寄存器尋址 3.3.4 寄存器間接尋址寄存器間接尋址 3.3.5 變址尋址變址尋址 3.3.6 相對(duì)尋址相對(duì)尋址 3.3.7 位尋址位尋址返回本章首頁(yè)3.3.1 立即尋址立即尋址指令中直接給出操作數(shù)的尋址方式。指令中直接給出操作數(shù)的尋址方

22、式。MOV A,# 60H;(;(A)#60H MOV DPTR,# 3400H ;(;(DPTR)#3400HMOV 30H,# 40H;(;(30H)#40H 返回本節(jié)3.3.2 直接尋址直接尋址指令中直接給出操作數(shù)地址的尋址方式指令中直接給出操作數(shù)地址的尋址方式。 MOVA,30H; (A) (30H) MOV40H,50H ;(;(40H)(50H) MOVR0,60H; (R0) (60H)返回本節(jié)3.3.3 寄存器尋址寄存器尋址以通用寄存器的內(nèi)容為操作數(shù)的尋址方式。以通用寄存器的內(nèi)容為操作數(shù)的尋址方式。 CLR A;(;(A)0 INC DPTR;(;(DPTR)(DPTR)+1 ADD A,R0;(;(A)(A) +(R0)返回本節(jié)3.3.4 寄存器間接尋址寄存器間接尋址以寄存器

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論