2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、重點內容:單片機的指令系統(tǒng)概述單片機的尋址方式單片機的指令說明本章小結,第3章 單片機指令系統(tǒng),一、單片機的指令系統(tǒng)概述,匯編語言是我們后面所講的指令系統(tǒng)的一個子集,只要指令按格式書寫就構成了程序的基本格式。在程序中,指令格式由以下幾部分組成:操作碼 [目的操作數(shù)],[源操作數(shù)] ;[注釋]對各部分的解釋如下:●操作碼:操作碼用助記符表示,它代表了指令的操作功能。操作碼是指令的必需部分,是指令的核心,不可缺少?!癫?/p>

2、作數(shù)(目的操作數(shù)和源操作數(shù)):是指參加操作的數(shù)據(jù)或數(shù)據(jù)的地址。操作數(shù)的個數(shù)可以是0~3個。操作數(shù)與操作碼之間用空格分隔,操作數(shù)與操作數(shù)之間用逗號“,”分隔?!褡⑨專鹤⑨寣儆诜潜匦桧棧菫楸阌陂喿x,對指令功能作的說明和注解。注釋必須以“;”開始。注釋的長度不限,當一行不夠時,可以換行后接著書寫,但是換行時應以分號“;”開始。,1、指令格式,一、單片機的指令系統(tǒng)概述,為了方便后面指令系統(tǒng)的學習和記憶,我們需要對51單片機指令系統(tǒng)中的一

3、些常用符號進行了解。常用符號的說明如下:(1)#data:8位立即數(shù);(2)#data16:16位立即數(shù);(3)Rn:工作寄存器,R0~R7,n為0~7;(4)Ri:工作寄存器,0或1,i=0或1;(5)@Ri:寄存器Ri間接尋址8位存儲單元00H~FFH;(6)direct:8位直接尋址,可以是特殊功能寄存器SFR的80H~FFH或內部存儲單元00H~7FH;(7)addr11:11位目的地址。用于AJMP和ACALL指

4、令,均在2KB地址內轉移或調用;,2、符號說明,一、單片機的指令系統(tǒng)概述,(8)addr16:16位目的地址。用于LJMP和LCALL指令,可在64KB地址內轉移或調用;(9)rel:帶符號的8位偏移地址,主要應用于所有的條件轉移指令和SJMP。其范圍是相對于下一條指令的第一字節(jié)地址-128 ~ +127字節(jié);(10)bit:位地址。片內RAM中的可尋址位和專用寄存器中的可尋址位;(11)DPTR:數(shù)據(jù)指針,可用于16位的地址寄存

5、器;(12)@:間接寄存器或者是基址寄存器的前綴。如:@DPTR,@Ri,@A+PC,@A+DPTR;(13)A:累加器ACC;(14)B:通用寄存器,常用于乘法MUL和除法DIV的指令;(15)Cy:進位標志位或者布爾處理器中的累加器。,2、符號說明,二、單片機的尋址方式,立即尋址就是直接將需要訪問的數(shù)據(jù)在指令中給出,這樣的尋址方式就是立即尋址。立即尋址的方式為: MOV A #dataH就是一條立即尋址方式的傳送指令

6、,通常我們把出現(xiàn)在指令中的操作數(shù)data稱之為立即數(shù)。假如立即數(shù)是0F4H,則指令為:MOV A #4BH 指令功能是把數(shù)據(jù)4BH傳送到累加器A中。值得注意的一點是:在立即數(shù)尋址中立即數(shù)前面必須要加上一個“#”號。,1、立即尋址,二、單片機的尋址方式,直接尋址就是直接在指令中指定操作數(shù)的地址,-比如:MOV A,3AH 其功能就是將地址為3AH的存儲單元中數(shù)據(jù)取出來傳送給累加器A。這里的操作數(shù)就是直接通過數(shù)據(jù)存儲器

7、的地址3AH來指定的。直接尋址方式的尋址范圍僅限于內部數(shù)據(jù)存儲器。對于內部數(shù)據(jù)存儲器的低128個字節(jié)可以直接通過地址的方式來指定,而對于高128個字節(jié)除了可以通過地址的方式來指定外還可以通過特殊功能寄存器的寄存器符號給出。,2、直接尋址,二、單片機的尋址方式,寄存器尋址方式就是操作數(shù)存儲在寄存器中,指定寄存器就得到了操作數(shù),例如:MOV A,R0其功能是將寄存器R0中的數(shù)據(jù)傳送到累加器A中,這樣通過直接指定寄存器的方式進行尋址即

8、為寄存器尋址??梢圆捎眠@種方式進行尋址分寄存器包括通用寄存器和部分專用寄存器,比如工作寄存器R0-~R7、累加器ACC、通用寄存器B 、數(shù)據(jù)指針DPTR、位累加器Cy。,3、寄存器尋址,二、單片機的尋址方式,寄存器間接尋址就是通過寄存器指定數(shù)據(jù)存儲單元的地址,寄存器中存儲的是地址。采用用寄存器間接尋址方式時應在寄存器前加上@符號。比如:MOVE A,@R0它的功能就是將R0中所存儲的地址所指向的存儲單元中的數(shù)據(jù)取出來傳送到累加器中

9、去。對于這種寄存器間接尋址,用來存儲地址的寄存器只能為R0或R1或DPTR。其中R0和R1用來訪問片內數(shù)據(jù)存儲器的低128字節(jié)和片外數(shù)據(jù)存儲器的低256字節(jié),DPTR用來訪問片外數(shù)據(jù)存儲器。比如:MOVX A ,@DPTR它的功能是將外RAM DPTR所指存儲單元中的數(shù)據(jù)傳送至累加器A中。,4、間接尋址,二、單片機的尋址方式,變址尋址是以某個寄存器的內容為基礎,然后在這個基礎上再加上地址偏移量,形成真正的操作數(shù)地址,需要特別指出的是用

10、來作為基礎的寄存器可以是PC或是DPTR,地址偏移量存儲在累加器A中比如:MOV A,@A+DPTRMOV A,@A+PCJMP @A+DPTR前2條意思就是分別將DPTR、PC內存儲的地址和累加器A里面的偏移量相加最后根據(jù)得到的地址來查找相應的存儲單元。最后一條是無條件轉移指令。,5、變址尋址,二、單片機的尋址方式,相對尋址主要是針對跳轉指令而言的。對于跳轉指令,跳轉去的目標指令的地址是通過正在執(zhí)行的指令地址來確定的,

11、一般是采用正在執(zhí)行的指令地址加上偏移量的方式。即:轉移目的地址=當前PC值+轉移指令字節(jié)數(shù)+相對偏移量rel我們后面所講的條件轉移指令都是相對尋址方式,如:JZ rel;若(A)= 0,則PC←(PC)+ 2 + rel ;若(A)≠0,則PC←(PC)+ 2 JNZ rel;若(A)≠0,則PC←(PC)+ 2 + rel ;若(A)= 0,則PC←(PC)+ 2由于這2條指

12、令都是二字節(jié)指令,所以轉移指令字節(jié)數(shù)為2。偏移量可以是正也可以是負,偏移量是采用有符號數(shù)的存儲形式即補碼的形式來存儲的,所能表示的范圍是-128~+128。,6、相對尋址,二、單片機的尋址方式,位尋址方式是指將要訪問的數(shù)據(jù)是一個單獨的位,指定位數(shù)據(jù)的方式有:通過位地址、通過字節(jié)地址加點及位數(shù)、通過寄存器名加點及位數(shù)以及通過位的名稱等方式。例如:MOV C,07H 這條指令的功能是把07H位的狀態(tài)送進進位位C。位尋址的范圍是有

13、限制的,下面將講述位尋址的尋址范圍,7、位尋址,二、單片機的尋址方式,1.內部RAM中的位尋址區(qū)單元地址為20H~2FH,共16個單元128位,位地址是00H~7FH。對這個128個位的尋址使用直接位地址表示。位尋址區(qū)中的位有兩種表示方法,一種是位地址;另一種是單元地址加位。2.專用寄存器的可尋址位可供位尋址的專用寄存器共有11個,實有尋址位83位。對這些尋址位在指令中有如下4中表示方法:●直接使用位地址。例如PSW寄存器位5

14、地址為0D5H?!裎幻Q表示方法。例如PSW寄存器位5是F0標志位,則可使用F0表示該位?!駟卧刂芳游粩?shù)的表示方法。例如0D0H單元(即PSW寄存器)位5,表示為0D0H.5?!駥S眉拇嫫鞣柤游粩?shù)的表示方法。例如PSW寄存器的位5,表示為PSW.5。,7、位尋址,二、單片機的尋址方式,尋址方式可以做如下小結。對于片內程序存儲器只能使用變址尋址方式,或者反過來說,變址尋址是一種專門用于程序存儲器的尋址方式。,8、尋址方式

15、總匯,三、單片機的指令說明,1.內部RAM中數(shù)據(jù)傳送指令單片機內部的數(shù)據(jù)傳送指令運用頻率最高。寄存器、累加器、RAM單元及專用寄存器之間的數(shù)據(jù)可相互傳送。這類指令使用助記符MOV。(1)以累加器A為目的字節(jié)的傳送指令(4條)MOV A,@Ri;(Ri)→A,i=0、1MOV A,Rn;Rn→A,n=0~7 MOV A,#data;data→A MOV A,direct;(direct)→A這

16、組指令的功能是將源操作數(shù)所指定的內容送入累加器A。源操作數(shù)可以采用寄存器尋址、直接尋址、寄存器間接尋址和立即尋址4種方式。,1、數(shù)據(jù)傳送類指令,三、單片機的指令說明,(2)以工作寄存器Rn為目的字節(jié)的傳送指令(3條)MOV R,A;A→Rn,n=0~7MOV Rn,direct;(direct)→Rn,n=0~7MOV Rn,#data ;data→Rn,n=0~7這組指令的功能是把源操作數(shù)所指定的內容送

17、到當前工作寄存器組R0~R7中的某個寄存器中。源操作數(shù)有寄存器尋址、直接尋址、立即尋址3種方式。例如下面三條指令:MOV R0,A ;把累加器A的內容傳送給R0MOV R2,80H ;把80H單元的內容傳給R2MOV R6,#60H ;把立即數(shù)60H傳給R6,1、數(shù)據(jù)傳送類指令,三、單片機的指令說明,(3)以直接地址為目的字節(jié)的傳送指令MOV direct,A ;A→(dir

18、ect)MOV direct,Rn ;Rn→(direct),n=0~7MOV direct,@Ri ;(Ri)→(direct),i=0、1MOV direct1,direct2;(direct2)→(direct1)MOV direct,#data;data→(direct)這組指令的功能是把源操作數(shù)所指定的內容送入由直接地址direct所指出的片內存儲單元中。源操作數(shù)有寄存器尋址、直接尋址、寄存器

19、間接尋址、立即尋址等方式。例如下面五條指令:MOV 3FH,#3FH ;把立即數(shù)3FH傳送給內部RAM的3FH單元MOV 3FH,A ;把累加器A中的內容傳送給內部RAM的3FH單元MOV 3FH,R0 ;把寄存器R0中的內容傳送給內部RAM的3FH單元,1、數(shù)據(jù)傳送類指令,三、單片機的指令說明,(4)以寄存器間址為目的字節(jié)的傳送指令(3條)MOV @Ri,A ;A→(Ri)

20、,i=0、1MOV @Ri,direct;(direct)→(Ri),i=0、1MOV @Ri,#data;data→(Ri),i=0、1這組指令的功能是把源操作數(shù)所指定的內容送入以R0或R1為地址指針的片內存儲單元中。源操作數(shù)有寄存器尋址、直接尋址和立即尋址3種方式。與上一組指令功能類似,不再舉例。(5)16位數(shù)據(jù)傳送指令(1條)MOV DPTR,#data16;data16→DPTR這是唯一的16位立即數(shù)

21、傳送指令。其功能是把16位常數(shù)送入DPTR中。,1、數(shù)據(jù)傳送類指令,三、單片機的指令說明,2.外部RAM數(shù)據(jù)傳送指令累加器A與片外數(shù)據(jù)存儲器之間的數(shù)據(jù)傳送是通過P0口和P2口進行的。片外數(shù)據(jù)存儲器的地址總線低8位和高8位分別由P0口和P2口送出,數(shù)據(jù)總線也是通過P0口與低8位地址總線分時傳送。外部RAM中數(shù)據(jù)傳送均是通過間接尋址的方式來實現(xiàn)的,使用操作碼助記符MOVX,共有四條指令:MOVX A,@DPTR; A←(DPTR

22、)MOVX A,@Ri; A←(Ri)MOVX @DPTR,A; (DPTR)←AMOVX @Ri,A; (Ri)←A前兩條指令為外部數(shù)據(jù)存儲器讀指令,后兩條指令為外部數(shù)據(jù)存儲器寫指令。這四條指令共同特點都要經(jīng)過累加器A,外RAM的低8位地址均由P0傳送,高8位地址均由P2傳送,其中8位數(shù)據(jù)也需P0傳送。,1、數(shù)據(jù)傳送類指令,三、單片機的指令說明,3.查表指令51系列單片機的程序存儲器除了存放程序外,還可

23、存放一些常數(shù),被稱為表格。在單片機指令系統(tǒng)提供了兩條訪問程序存儲器的指令,稱為查表指令,該指令使用助記符MOVC,只能通過累加器A來實現(xiàn)。共兩條指令:MOVC A,@A+PC;PC←(PC)+1,A←(A)+PCMOVC A,@A+DPTR;A←(A+DPTR)前一條指令由PC作為基址寄存器,它雖然提供16位地址,但其基址值是固定的,A+PC中的PC是程序計數(shù)器的當前內容(查表指令的地址加1),所以它的查表范圍是查表指令

24、后256B的地址空間。后一條指令采用DPTR作為基址寄存器,它的尋址范圍為整個程序存儲器的64KB空間,所以表格可以放在程序存儲器的任何位置。缺點是若DPTR已有它用,在上式表首地址之前必須保護現(xiàn)場,執(zhí)行完查表后再執(zhí)行恢復。,1、數(shù)據(jù)傳送類指令,三、單片機的指令說明,數(shù)據(jù)交換指令數(shù)據(jù)交換主要用在累加器和其它內部RAM中的數(shù)據(jù)交換,數(shù)據(jù)交換指令分為三類: (1)整字節(jié)交換指令 XCH A,Rn;A←→Rn XCH

25、 A,@Ri;A←→(Ri) XCH A,direct;A←→(direct) (2)半字節(jié)交換指令:XCHD A,@Ri ;A3~0←→(Ri)3~0。SWAP A;A7~4←→A3~0,1、數(shù)據(jù)傳送類指令,三、單片機的指令說明,堆棧操作指令堆棧操作通常用于臨時保護數(shù)據(jù)及子程序調用時保護現(xiàn)場/恢復現(xiàn)場。共有兩條指令。PUSH direct;SP←SP+1,(SP)←(dire

26、ct)POP direct ;(direct)←(SP),SP←SP-1PUSH為壓棧指令,將指定的直接尋址單元的內容壓入堆棧。先將堆棧指針SP的內容+1,指向棧頂?shù)囊粋€單元,然后把指令指定的直接尋址單元內容送入該單元。POP為出棧指令,它是將當前棧指針SP所指示的單元內容彈出到指定的內RAM單元中,然后再將SP減1。以上指令結果不影響程序狀態(tài)字寄存器PSW標志。,1、數(shù)據(jù)傳送類指令,三、單片機的指令說明,1.加法指

27、令加法指令使用助記符ADD,運算時不帶進位位。共有4條:ADD A,#data  ;A←A+dataADD A,direct  ;A←A+(direct)ADD?。?,@Ri ;A←A+(Ri)ADD A,Rn ;A←A+Rn這組指令的功能是把源操作數(shù)所指出的內容與累加器A的內容相加,執(zhí)行結果存入A中。該運算會影響程序狀態(tài)字PSW中的CY、AC、OV。如果位7有進位,則進位位CY置“1”,

28、否則清“0”;如果位3有進位,則半進位位AC置“1”,否則清“0”。若看做兩個帶符號數(shù)相加,還要判斷溢出位OV。若OV為“1”,表示和數(shù)溢出。例如,執(zhí)行A=0C3H,執(zhí)行指令ADD A,#0AAH,則結果A=6DH,CY=1,OV=1,AC=0,P=1。,2、算術運算類指令,三、單片機的指令說明,2.帶進位加法指令ADDC帶進位的加法指令使用助記符ADDC,共有4條:ADDC A,#data;A←A+data+CYADDC

29、 A,direct  ;A←A+(direct)+CYADDC A,@Ri ;A←A+(Ri)+CYADDC A,Rn ;A←A+Rn+CY這組指令的功能與上一組加法指令ADD相似,唯一不同的是計算加法時同時還要加上CY中的值。運算結果對PSW各位的影響同上述加法指令。帶進位加法指令多用于多字節(jié)數(shù)的加法運算,低位字節(jié)相加時可能產(chǎn)生進位。因此,高位字節(jié)運算時,必須使用帶進位的加法運算。例如,設R0=

30、55H,A=OAAH,Cy=1,執(zhí)行指令ADDC A ,R0后,結果為A=00H,Cy=0,AC=0,OV=0, P=0。,2、算術運算類指令,三、單片機的指令說明,3.帶借位減法指令帶借位減法指令使用助記符SUBB,共有4條:SUBB A ,#data;A←A-data-CYSUBB A ,Rn;A←A-Rn-CYSUBB A ,direct;A←A-(direct)-CYSUBB

31、A ,@Ri;A←A-(Ri)-CY這組指令的功能是將累加器A中的數(shù)減去源操作數(shù)所指出的數(shù)和進位位CY,其差值存放在累加器A中。減法運算結果對程序狀態(tài)標志寄存器PSW中的影響如下:●減法運算的最高位有借位時,進位位Cy置位為1,否則Cy為0?!駵p法運算時低4位向高4位有借位時,輔助進位位AC置位為1,否則AC為0?!駵p法運算過程中,位6和位7同時借位時溢出標志位OV為1,否則OV為0。,2、算術運算類指令,三、單片機的

32、指令說明,●運算結果中“1”的個數(shù)為奇數(shù)時(注意:不計借CY中的1),奇偶校驗位P置1,否則P為0。由于減法只有帶借位減法一條指令,所以在單字節(jié)相減時,須先清進位位CY。減法指令執(zhí)行過程與加法類似,需強調的一點是,減法運算在計算機中實際上是變成補碼相加。例 設A=D9H,R0=87H,執(zhí)行指令:SUBB A,R0則結果為:A=52H,CY=0,AC=0,P=1,OV=0。,2、算術運算類指令,三、單片機的指令說明,加1指令

33、加1指令使用助記符INC,共有5條指令:INC A ;A←A+1INC Rn ;Rn←Rn+1INC @Ri ;(Ri)←(Ri)+1INC direct ;(direct)+1INC DPTR ; DPTR←DPTR+1這組指令的功能是將操作數(shù)所指定單元的內容加1。其操作除第一條指令影響奇偶標志位外,其余指令均

34、不影響PSW。第4條指令,若直接地址是I/O端口,則其功能是修改輸出口的內容。指令執(zhí)行過程中,首先讀入端口的內容,然后在CPU中加1,繼而輸出到端口。,2、算術運算類指令,三、單片機的指令說明,5.減1指令減1指令使用助記符DEC,對于DPTR只能使用加1指令,不能使用減1指令。因此減1指令比加1指令少一條,即4條:DEC A ;A←A-1DEC Rn ;Rn←Rn-1

35、DEC direct ;(direct)←(direct)-1DEC @Ri ;(Ri)←(Ri)-1該指令是將指定變量減1,結果仍存在原指定單元。這類指令操作除第一條影響奇偶標志值外,其余操作均不影響PSW標志。其他情況與加1指令類似。,2、算術運算類指令,三、單片機的指令說明,6.乘法指令乘法指令使用助記符MUL,操作數(shù)只能是累加器A和寄存器B,格式如下:MUL AB

36、;AB←A*B這條指令的功能是把累加器A和寄存器B中的8位無符號整數(shù)相乘,乘積為16位,積低8位存于A中,積高位存于B中。如果積大于255(0FFH),則OV 置1,否則清0,運算結果總使進位位CY清0。例如,設A=5BH,B=0ABH,執(zhí)行指令MUL AB 后,結果為:乘積3CC9H,A=0C9H,B=3CH,OV=1,CY=0。,2、算術運算類指令,三、單片機的指令說明,7.除法指令除法指令使用助記符DIV,操作數(shù)只能是累加

37、器A和寄存器B,格式如下:DIV AB;A←A/B的商,B←余數(shù)這條指令的功能是把累加器A中的8位無符號整數(shù)除以寄存器B中8位無符號整數(shù),商放在A中,余數(shù)放在B中,標志位CY和OV均清0。若除數(shù)(B)為00H,則執(zhí)行后果為不確定值,OV置1,在任何情況下,進位位Cy清0。例如,設A=87H,B=0CH,執(zhí)行指令DIV AB后,結果為:A=0BH,B=03H,OV=0,CY=0。,2、算術運算類指令,三、單片機的指令說

38、明,8.十進制調整指令BCD碼是十位二進制碼, 也就是將十進制的數(shù)字轉化為二進制。十進制數(shù)0~9之間的數(shù)字可以用BCD碼來表示,然而,單片機在進行運算時,是按照二進制規(guī)則進行的,對于4位二進制數(shù)是按逢16進位的,不符合十進制的要求,可能導致錯誤的結果,因此需要用十進制調整指令。十進制調整指令使用助記符DA,操作數(shù)只能是累加器A。其格式如下: DA A這條指令是在進行BCD碼加法運算時,跟在ADD或ADDC指令之后,用于對

39、BCD碼的加法運算結果自動進行修正,使其仍為BCD碼表達形式。,2、算術運算類指令,三、單片機的指令說明,1.“與”指令“與”指令使用助記符ANL,共有6條,格式如下: ANL A,#data;A←A&data ANL A,Rn;A←A&Rn ANL A,@Ri ;A←A&(Ri) ANL A,direct ;A←A&(direct)

40、 ANL direct,#data;A←(direct)&data ANL direct,A;A←(direct)&A這組指令的前4條將累加器A中內容與源操作數(shù)所指內容進行按位與運算,并將結果送入累加器A中,且影響奇偶標志位;后2條將直接地址單元中內容與操作數(shù)所指內容進行按位與運算,將結果送入直接尋址地址單元中。例如,設A=00001101B,(40H)=10001111B,當執(zhí)行指令ANL A,

41、40H后, A=00001101B=0DH。,3、邏輯運算類指令,三、單片機的指令說明,2.“或”指令“或”指令使用助記符ORL,共有6條,格式如下:ORL A,# data;A←A|dataORL A,Rn;A←A|RnORL A,@Ri;A←A |(Ri)ORL A,direct; A←A|(direct)ORL direct,#data;(direct) ←(direc

42、t)|data ORL direct,A;( direct) ← (direct)|A這組指令的功能是將兩個指定的操作數(shù)按位邏輯“或”。其中前 4條指令的操作結果存放在累加器A中,執(zhí)行后影響奇偶標志位P;后2條指令的操作結果存放在直接尋址的地址單元中。例如,設A=1AH,R0=45H,(45H)=39H,當執(zhí)行指令“ORL A,@R0”,則結果為:A=3BH,(45H)=39H,P=0。,3、邏輯運算類指令,三、單片機的

43、指令說明,3.“異或”指令“異或”指令使用助記符XRL,共有6條,其操作方式與“與、或”指令一樣。格式如下: XRL A,# data;A←A data XRL A,Rn;A←A Rn XRL A,@Ri;A←A (Ri)XRL A,direct,# data;A←A (direct)XRL direct,#data;(direct) ←(direct) da

44、taXRL direct,A;(direct) ←(direct) A這組指令是將2個指定的操作數(shù)按位進行異或,前4條指令的結果存放在累加器A中,后2條指令的操作結果存放在直接地址單元中。其原則是相同為0,不同為1。異或指令也常用于修改某工作寄存器、某片內RAM單元、某直接尋址字節(jié)(包括P0、P1、P2、P3端口)或累加器本身的內容。例如,設P1=01111001B,執(zhí)行指令XRL P1,# 00110001B,則結果

45、為 P1=01001000B。,3、邏輯運算類指令,三、單片機的指令說明,4.循環(huán)移位指令循環(huán)移位指令的操作數(shù)只能是累加器A,共有4條指令: RL A ;循環(huán)左移 RR A ;循環(huán)右移 RLC A ;帶CY循環(huán)左右移 RRC A ;帶CY循環(huán)右移前兩條指令

46、的功能分別是將累加器A的內容循環(huán)左移或右移一位,執(zhí)行后不影響PSW中各位;后兩條指令的功能分別是將累加器A的內容與進位位CY位一起循環(huán)左移或右移一位,執(zhí)行后影響PSW中的進位位CY和奇偶狀態(tài)標志位P。,3、邏輯運算類指令,三、單片機的指令說明,5.取反指令取反指令使用助記符CPL,操作數(shù)只能是累加器A,格式如下: CPL A本指令的功能是將累加器A的內容按位取反。例如,設A=F0H,執(zhí)行指令CPL A,則結果為A=0FH。

47、6.清零指令清零指令使用助記符CLR,格式為: CLR A;A←0本指令的功能是將累加器A的內容清“0”。,3、邏輯運算類指令,三、單片機的指令說明,1.無條件轉移指令無條件轉移指令有4條: AJMP addr11 ;PC←PC+2,PC10~0←addr11 LJMP addr16 ;PC←addr16 SJMP rel ;PC←PC+2 +rel JMP @A+DP

48、TR ;PC←A+DPTR這類指令是指當程序執(zhí)行完該指令時,程序就無條件件地轉到指令所提供的地址上去。,4、控制轉移類指令,三、單片機的指令說明,2.條件轉移指令條件轉移指令有7條。它們在滿足條件的情況下才進行程序轉移,條件若不滿足,仍按原程序繼續(xù)執(zhí)行,故稱為條件轉移指令或者稱判跳指令。 JZ rel;若(A)= 0,則PC←(PC)+ 2 + rel ;若(A)≠0,則PC←(PC)+ 2 J

49、NZ rel;若(A)≠0,則PC←(PC)+ 2 + rel ;若(A)= 0,則PC←(PC)+ 2 CJNE A,direct,rel ;PC←PC+3,若A=(direct),按順序執(zhí)行,且Cy=0;若A(direct),則Cy=0,切PC←PC+rel,轉移 CJNE A,#data,rel;PC←PC+3,若A=data,按順序執(zhí)行,且Cy=0;若Adata ,則

50、Cy=0且PC←PC+rel,轉移,4、控制轉移類指令,三、單片機的指令說明,CJNE Rn,#data,rel;PC←PC+3,若Rn=data,按順序執(zhí)行,且Cy=0;若Rndata,則Cy=0且PC←PC+rel,轉移 CJNE @Ri,#data,rel;PC←PC+3,若(Ri)=data,按順序執(zhí)行,且Cy=0;若(Ri)data,則Cy=0且PC←PC+rel,轉移 DJNZ Rn,rel

51、;PC←PC+2,Rn←Rn-1,若Rn=0,按順序執(zhí)行;若Rn不等于0,則PC←PC+rel,轉移。 DJNZ direct,rel;PC←PC+3,(direct)← (direct)-1,若(direct)=0按順序執(zhí)行;若(direct)≠0,則PC←PC+rel ,轉移,4、控制轉移類指令,三、單片機的指令說明,3.空操作指令空操作指令為:NOP這是一條單字節(jié)指令,它控制CPU不進行任何操作而轉到下

52、一條指令。這條指令用于產(chǎn)生一個機器周期的延遲,如果反復執(zhí)行這一指令,則機器處于等待狀態(tài)。因此該指令通常用于程序的等待或時間延遲。,4、控制轉移類指令,三、單片機的指令說明,4.調用子程序及返回指令在實際應用中,有時需要多次執(zhí)行某段子程序??梢允褂米映绦蛘{用指令來實現(xiàn)此功能。子程序執(zhí)行完畢需自動返回到原斷點地址繼續(xù)執(zhí)行,在子程序結尾放一條返回指令,即可實現(xiàn)此功能。調用和返回構成了子程序調用的完整過程。(1)子程序調用指令子程序調

53、用指令有2條,格式如下:LCALL addr16;(PC)+3→PC,(SP)+1→SP,(PC)0~7→(SP);(SP)+1→SP,(PC)8~15→(SP),addr16→PCACALL addr11;(PC)+2→PC,(SP)+1→SP,(PC)0~7→(SP) ;(SP)=1→SP,(PC)8~15→(SP),addr0~11→PC0~11,4、控制轉移類指令,三、單片機的指令說明,(2)

54、返回指令返回指令有2條:RET ;子程序返回,PC15~8 ←(SP)– 1,SP←(SP)–1;PC7~0 ←(SP)– 1,SP←(SP)–1RETI ;中斷返回子程序返回指令執(zhí)行子程序返回功能,從堆棧中自動取出斷點地址送給程序計數(shù)器PC,使程序在主程序斷點處繼續(xù)向下執(zhí)行。例如(SP) = 62H,(62H) = 07H,(61H) = 30H, 執(zhí)行指令RET,結果為:(SP) = 60H,(PC) =

55、0730H,CPU從0730H開始執(zhí)行程序。中斷服務子程序返回指令,除具有上述子程序返回指令所具有的全部功能之外,還有清除中斷響應時被置位的優(yōu)先級狀態(tài)、開放較低級中斷和恢復中斷邏輯等功能。,4、控制轉移類指令,三、單片機的指令說明,1.位傳送指令位傳送指令有互逆的2條,可實現(xiàn)進位位C與某直接尋址位bit間內容的傳送。格式如下:MOV C,bit;CY←bitMOV bit,C;bit←Cy這兩條指令均為雙字節(jié),第一

56、條指令的功能是將某指定位的內容送入位累加器C中,不影響其他標志。第二條指令的功能是將C的內容傳送到指定位,再把8位內容傳送到端口的鎖存器。,5、位操作指令,三、單片機的指令說明,2.位修正指令位修正指令共有6條,分為位清0指令、位置1指令、位取反指令。CLR C;C←0CLR bit ;bit←0SETB C ;C←1SETB bit;bit←1CPL C;

57、C← CPL bit;bit← 第1、2條為清零指令,第3、4條為位置1指令,后兩條為位取反指令。這些指令的執(zhí)行結果不影響其他標志。,5、位操作指令,三、單片機的指令說明,3.位邏輯運算指令位邏輯運算指令分邏輯“與”和邏輯“或”共有4條指令。ANL C,bit;C←C &bitANL C, ;CY←(CY)&( )ORL C,bit ;C←C|bitORL

58、 C, ;C←C|( )這組指令的功能是對位累加器C的內容及直接位地址的內容做邏輯“與”、邏輯“或”運算,然后將運算結果送回到C中。其中,前兩條表示邏輯“與”,后兩條則是邏輯“或”在位操作指令中,沒有位的異或運算如需要時可由多條上述位操作指令實現(xiàn)。例如E、B、D代表位地址,進行E、B內容的異或操作,結果送D??砂垂剑篋 = E B = B + E 進行異或運算。,5、位操作指令,三、單片機的指令說明,4.位轉移指令位轉移指令

59、共有5條,說明如下:JC rel ;若CY=0,則PC←PC+rel,否則順序執(zhí)行JNCrel ;若CY≠0,則PC←PC+rel,否則順序執(zhí)行JB bit,rel ;若bit=1,則PC←PC+rel,否則順序執(zhí)行JNBbit,rel ;若bit=0,則PC←PC+rel,否則順序執(zhí)行JBCbit,rel;若 bit=1,則PC←PC+rel,(bit)

60、←0,否則順序執(zhí)行這組指令的功能是分別判斷位累加器C或直接尋址位是“1”還是“0”,條件符合則轉移,否則繼續(xù)執(zhí)行程序。前兩條指令是雙字節(jié),因此PC要加2;后3條指令是三字節(jié),PC要加3。,5、位操作指令,三、單片機的指令說明,1.起始匯編偽指令ORG這是一條程序匯編起始地址定位偽指令,用來規(guī)定目標程序段或數(shù)據(jù)塊的起始地址,程序中可以多次使用。其格式如下:[標號]:ORG 地址表達式地址表達式必須是16位的地址值,如“ORG 2

61、000H”表示這段程序從2000H開始。ORG定義空間地址由小到大,且不能重疊。如果空間地址有重疊,匯編將拒絕執(zhí)行,并給相應的出錯信息。例如: ORG 5000HSTART: ADD A,#20H如果不使用ORG指令,測匯編得到的目標程序將從5000H開始。,6、單片機的偽指令,三、單片機的指令說明,2.結束偽指令END結束偽指令用于匯編源程序的末尾,表示程序已經(jīng)結束。匯編程序對END以后的指令不再

62、匯編。也就是說一個源程序中只能有一個END指令,而且必須放在整個程序段的最后。其格式如下:[標號]:END 表達式如果源程序是主程序,則寫標號,所寫標號就是該主程序第一條指令的符號地址。如果源程序是一般子程序,則END偽指令不應帶標號。,6、單片機的偽指令,三、單片機的指令說明,3.賦值偽指令EQU賦值偽指令EQU也稱等值(Equate)偽指令,它的作用是將操作數(shù)段中的地址或數(shù)據(jù)賦給一個字符名稱,賦值后該字符名稱就可以代替程序

63、的地址、數(shù)據(jù)地址或立即數(shù)。其格式如下:字符名稱 EQU 表達式字符名稱必須是以字母開頭的字母數(shù)字串。表達式可以是8位或16位二進制數(shù)值。需注意的是在同一程序中,用EQU偽指令在賦值后,其字符名稱的值在整個程序中不能再改變。例如:HUGH EQU R0 ;HUGH= R0ADD A,HUGH ;A ← HUGH+A本例中將PPB等值于匯編符號R0,在指令中HUGH可以代替R0來使用。,6、單片機的偽指

64、令,三、單片機的指令說明,4.定義數(shù)據(jù)偽指令DATA定義數(shù)據(jù)偽指令DATA 用于給一個8位內部RAM單元起一個名字。其格式如下:[標號]:字符名稱 DATA 表達式其中,標號是可選項,字符名稱必須是以字母開頭的字母數(shù)字串,它必須是先前未定義過的。同一單元地址可以有多個名字。例如:X DATA 30H ;X代表用戶數(shù)據(jù)存儲區(qū)的第1個字節(jié)而對應于8位的外部RAM單元,有XDATA,用法與此類似。DATA與EQU指令既相

65、似又有區(qū)別:●EQU指令可以把一個匯編符號賦給一個字符名稱,而DATA指令不能;●EQU指令應先定義后使用,而DATA指令先使用后定義;●DATA指令能將一個表達式的值賦予一個字符名稱;●DATA指令在程序中用來定義數(shù)據(jù)地址。,6、單片機的偽指令,三、單片機的指令說明,5.定義字節(jié)偽指令DB定義字節(jié)偽指令DB(Define Byte)可用來為匯編語言源程序在內存的某個區(qū)域定義一個或一串字節(jié)。其格式如下:[標號]:DB

66、 [項或項表]其中,標號段為可選項。項或項表可以是一個8位二進制數(shù)或用逗號分開的字符串。匯編程序把DB指令能把項或項表所指字符的內容(數(shù)據(jù)或ASCII碼)依次存入從標號開始的存儲器單元。例如: ORG 3000H MATH:DB 73,79,61,90,68,93,99,95 ENGLISH:DB 82,90,64,80,82,96,90,99其中偽指令ORG 1000H指明了標號FIRST的地址1000H,

67、偽指令DB定義了3000H~3007H單元的內容應依次為73,79,61,90,68,93,99,95。標號SECOND 因與前面8個字節(jié)緊靠,所以它的地址順次應為1008H,而第二條DB指令則定義了3008H~300FH單元的內容依次為82,90,64,80,82,96,90,99。,6、單片機的偽指令,三、單片機的指令說明,6.定義字偽指令DW定義字偽指令DW用來為匯編語言源程序在內存的某區(qū)域定義16位數(shù)據(jù)字。其格式如下:[標號

68、]: DW 項或項表該偽指令功能與DB偽指令類似,是給數(shù)據(jù)表中的數(shù)據(jù)分配存儲單元。所不同的是DB偽指令定義的數(shù)據(jù)為字節(jié),而Dw偽指令定義的數(shù)據(jù)為字,即兩個字節(jié)。對于一個字數(shù)據(jù)占用兩個連續(xù)的存儲單元,先將高8位數(shù)據(jù)存入低地址單元,后將低8位數(shù)據(jù)存入高地址單元。,6、單片機的偽指令,三、單片機的指令說明,7.定義存儲區(qū)偽指令DS定義存儲區(qū)偽指令DS可用來從指定地址開始,保留指定數(shù)目的字節(jié)單元作為存儲區(qū),供程序運行使用。匯編時,對這些單

溫馨提示

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

評論

0/150

提交評論