




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 AT89S51單片機(jī)的指令系統(tǒng)在前面章節(jié)中介紹了單片機(jī)的根底知識(shí)和AT89S51單片機(jī)的主要結(jié)構(gòu),本章主要介紹AT89S51單片機(jī)的指令系統(tǒng)。3.1 指令系統(tǒng)概述單片機(jī)的指令系統(tǒng)是一套控制單片機(jī)執(zhí)行操作的編碼,通常稱為機(jī)器語言,機(jī)器語言指令是單片機(jī)唯一能夠識(shí)別和執(zhí)行的指令。為了容易理解和編程,通常使用匯編語言指令符號(hào)指令和高級(jí)語言用自然語言描述來描述計(jì)算機(jī)的指令系統(tǒng)。匯編指令需通過匯編程序或人工方法匯編成機(jī)器能夠識(shí)別和執(zhí)行的機(jī)器語言指令,高級(jí)語言需要經(jīng)過編譯或解釋成機(jī)器能識(shí)別和執(zhí)行的機(jī)器語言指令。本章采用Intel公司的標(biāo)準(zhǔn)格式匯編指令來分析AT89S51指令系統(tǒng)的功能和使用方法。3.
2、1.1 指令格式匯編語言指令是能匯編成機(jī)器語言代碼的指令。AT89S51的匯編指令格式兼容MCS-51,其匯編語言指令的格式如下。標(biāo)號(hào):操作碼【操作數(shù)1】,【操作數(shù)2】,【操作數(shù)3】;注釋整個(gè)語句必須在一行內(nèi)寫完,分為四個(gè)局部。1第1局部標(biāo)號(hào),可以省略,它是用戶定義的符號(hào),標(biāo)號(hào)實(shí)際上是符號(hào)地址,標(biāo)號(hào)值代表這條指令在程序存儲(chǔ)器中的存放地址。標(biāo)號(hào)可以從字母開始,后跟18個(gè)英文字母或數(shù)字,并以冒號(hào)“:結(jié)尾。3.1.1 指令格式2第2局部第二局部為指令操作,由25個(gè)英文字符組成,根據(jù)不用的指令而不同,它反映了指令的功能,不同功能的指令,可以查閱AT89S51的匯編手冊(cè)。3第3局部第三局部為操作數(shù),根據(jù)
3、不同的指令,可以有1個(gè)、2個(gè)、3個(gè)操作數(shù),或根本沒有操作數(shù)。它與操作助記符之間至少有一個(gè)空格,可以由多個(gè)空格,操作數(shù)之間用逗號(hào)“,分開。它反映的是指令的對(duì)象。4第4局部第四局部為注釋,注釋也可以省略,它以分號(hào)“;開始,是用戶對(duì)該條指令或程序的說明,注釋必須在一行之內(nèi)寫完,換行時(shí)需另外以分號(hào)“;開始,注釋內(nèi)容可以為任何字符。3.1.2 AT89S51的偽匯編指令匯編語言除了定義了匯編指令外,還定義了一些匯編偽指令,以支持匯編的運(yùn)行。偽指令是匯編時(shí)不產(chǎn)生機(jī)器語言代碼的指令,是CPU不能執(zhí)行的指令,僅提供匯編用的某些控制信息。AT89S51匯編語言常用的偽指令有如下幾條。1ORG定位偽指令格式:OR
4、G mm一般是16位二進(jìn)制數(shù),m指出在該指令后的偽指令的匯編地址,即生成的機(jī)器指令的起始存儲(chǔ)器地址。它必須放在每段源程序或數(shù)據(jù)段的開始行,在一個(gè)匯編語言的源程序中允許存在多條定位偽指令,但其中每一個(gè)m值都應(yīng)和前面生成的機(jī)器指令存放地址不重疊。3.2 AT89S51單片機(jī)的尋址方式所謂尋址方式就是如何尋找存放操作數(shù)的空間地址,并把操作數(shù)提取出來的方法,它是單片機(jī)的重要性能指標(biāo)之一,也是匯編語言程序設(shè)計(jì)的最根本的內(nèi)容之一。在匯編程序設(shè)計(jì)中,數(shù)據(jù)的存放、傳送、運(yùn)算都要通過指令來完成,編程必須自始至終都十分清楚操作數(shù)的位置,以便將它們傳送到適當(dāng)?shù)目臻g去操作,這些都要針對(duì)系統(tǒng)的硬件環(huán)境編程。因此,如何尋
5、找存放操作數(shù)的空間位置和提取操作數(shù)就十分重要。MCS-51單片機(jī)有8中尋址方式:存放器尋址、直接尋址、立即尋址、存放器間接尋址、基存放器加變址存放器間接尋址、相對(duì)尋址、位尋址和頁面尋址,下面作詳細(xì)講解。3.2.1 立即尋址立即尋址方式中操作數(shù)包含在指令字節(jié)中,操作碼后面緊跟的是1B或2B操作數(shù)稱為立即數(shù),即操作數(shù)以指令字節(jié)的形式存放于程序存儲(chǔ)器中,在編寫成程序時(shí)用“#號(hào)表示,以區(qū)別于直接地址。例如下面的代碼。MOVA, #5AH;5AH AMOVDPTR, #2000H;2000H DPTR3.2.2 直接尋址直接尋址方式在指令中直接給出操作數(shù)所在存儲(chǔ)單元的地址,該地址指出了參與運(yùn)算或傳送的數(shù)
6、據(jù)所在的字節(jié)單元或位的地址。直接尋址方式訪問以下3種存儲(chǔ)空間:1特殊功能存放器特殊功能存放器只能用直接尋址方式訪問,即可以用它們的地址,也可以用它們的名字;2內(nèi)部數(shù)據(jù)存儲(chǔ)器的低128B對(duì)于8032系列芯片,其內(nèi)部數(shù)據(jù)存儲(chǔ)器高128B80H0FFH不能用直接尋址方式訪問;3.2.2 直接尋址3位地址空間。例如下面的代碼。MOVA, 5AH;(5AH) A是把片內(nèi)RAM中的5AH這個(gè)地址單元的內(nèi)容送入累加器A。MOVA, P1 ;(P1) A是把SFR中P1口的內(nèi)容送入累加器A,它也可以寫成:MOVA, 90H其中90H就是P1口的地址。直接尋址的地址需占1個(gè)字節(jié),所以一條直接尋址方式的指令至少需
7、要占內(nèi)存兩個(gè)單元。3.2.3 存放器尋址存放器尋址就是由指令指出某一個(gè)存放器的內(nèi)容為操作數(shù),對(duì)所選的工作存放器組R0R7進(jìn)行操作,累加器ACC、B存放器、數(shù)據(jù)指針DPTR和進(jìn)位C布爾處理機(jī)的累加器C也可用存放器尋址的方式進(jìn)行訪問,只是它們的尋址具體存放器名會(huì)隱含在操作碼中。例如下面的代碼。MOVA, R0;(R0)AMOVP1, A;(A) P1口3.2.4 存放器間接尋址操作數(shù)的地址事先存放在某個(gè)工作存放器中,存放器間接尋址方式是把指定存放器的內(nèi)容作為地址,由該地址所指定的單元內(nèi)容作為操作數(shù)。AT89S51單片機(jī)規(guī)定R0和R1為間接尋址存放器即地址指針對(duì)堆棧操作指令用堆棧指針SP,它可尋址內(nèi)
8、部RAM低128B地址單元的內(nèi)容。存放器間接尋址方式也可適用于訪問外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器,用R0、R1或DPTR作為數(shù)據(jù)指針,當(dāng)用R0、R1作為數(shù)據(jù)指針訪問片外RAM時(shí)又稱為頁面尋址。存放器間接尋址用符號(hào)表示。例如下面的代碼。MOVA, R0;(R0) A指令中所規(guī)定的工作存放器R0的內(nèi)容為地址指針,將該地址指針單元的內(nèi)容送給累加器A。3.2.5 相對(duì)尋址相對(duì)尋址方式是以當(dāng)前的PC值為基準(zhǔn),加上指令中給定的偏移量rel,所得的結(jié)果作為轉(zhuǎn)移地址。一般將相對(duì)轉(zhuǎn)移指令操作碼所在的地址稱為源地址,轉(zhuǎn)移后的地址稱為目的地址,那么有:目的地址=源地址+相對(duì)轉(zhuǎn)移指令字節(jié)數(shù)+relAT89S51單片機(jī)指令中相對(duì)
9、轉(zhuǎn)移指令字節(jié)數(shù)既有2個(gè)字節(jié)的,也有3個(gè)字節(jié)的,偏移量為有符號(hào)數(shù),其取值范圍為-128B+127B,在程序中一般以補(bǔ)碼表示。3.2.6 基址加變址尋址基址存放器加變址存放器間接尋址的尋址方式是以16位的PC或DPTR作為存放器,以8位的累加器A作為變址存放器,基存放器和變址存放器的內(nèi)容相加形成新的16位的地址,該地址為操作數(shù)的地址。在MCS-51單片機(jī)中,用變址尋址方式只能訪問程序存儲(chǔ)器。訪問時(shí)只能從ROM中讀取數(shù)據(jù)而不能寫入數(shù)據(jù)。故這種尋址方式多用于查表操作。例如下面的代碼。MOVCA, A+DPTR表示基存放器DPTR的內(nèi)容與變址存放器累加器A的內(nèi)容相加形成新的16位地址,該地址單元的內(nèi)容送
10、累加器A。3.2.7 位尋址在計(jì)算機(jī)中,操作數(shù)不僅可以按字節(jié)為單位進(jìn)行存取和操作,而且也可以按8位二進(jìn)制數(shù)種的某一位為單位進(jìn)行存取和操作。位尋址方式是其操作數(shù)是8位二進(jìn)制中的某一位。在指令中給出的是位地址,即給出片內(nèi)RAM某一單元中的一位。位地址在指令中用bit表示。AT89S51單片機(jī)片內(nèi)RAM有兩個(gè)區(qū)域可以位尋址,其一是20H2FH的16個(gè)單元的128位;其二是字節(jié)地址為8的倍數(shù)的特殊功能存放器。3.2.7 位尋址AT89S51單片機(jī)中位尋址常用以下兩種方式表示。1直接使用位地址。對(duì)于20H2FH的16個(gè)單元共128位的位地址一般采用直接使用位地址的方式,如位地址08H表示21H單元的0位
11、。2對(duì)于特殊功能存放器,還可以直接用存放器名字加位數(shù)表示,如PSW.3或位地址0D3H。例如下面的代碼。MOVC, 01H;01H為位地址3.2.8 頁面尋址用存放器間接尋址方式訪問外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器,當(dāng)用R0、R1作為地址指針訪問片外RAM時(shí)的尋址方式稱為頁面尋址。頁面地址由P2口的內(nèi)容決定,頁面內(nèi)的地址由R0或R1的內(nèi)容決定。例如下面的代碼。MOVP2, #0A0HMOVR0, #01HMOVA, #10HMOVRO, A表示將累加器A中的數(shù)據(jù)10H傳送到頁面為A0H,頁內(nèi)地址為01H的外部數(shù)據(jù)存儲(chǔ)器地址單元,即實(shí)際為傳送到0A001H地址單元。3.2.9 尋址方式與存儲(chǔ)器的對(duì)應(yīng)雖然AT
12、89S51單片機(jī)的尋址方式有很多種,但指令對(duì)哪一個(gè)存儲(chǔ)器空間進(jìn)行操作是由指令的操作碼和尋址方式確定的。一般來說,有以下幾點(diǎn)。程序存儲(chǔ)器:只能采用立即尋址和基存放器加變址存放器間接尋址的尋址方式;特殊功能存放器空間:只能采用直接尋址方式,不能采用存放器間接尋址方式;內(nèi)部數(shù)據(jù)存儲(chǔ)器高128B:只能采用存放器間接尋址方式,不能采用直接尋址方式;內(nèi)部數(shù)據(jù)存儲(chǔ)器低128B:既能采用存放器間接尋址方式,又能采用直接尋址方式;外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器:只能采用MOVX指令訪問。3.3 AT89S51單片機(jī)的數(shù)據(jù)傳送指令A(yù)T89S51單片機(jī)指令系統(tǒng)共有42種操作助記符來描述33種操作功能,由111條指令組成。其中
13、單字節(jié)指令49條,雙字節(jié)指令45條,三字節(jié)指令17條,下面分別介紹。CPU在進(jìn)行算術(shù)和邏輯操作時(shí),絕大多數(shù)指令都有操作數(shù),所以數(shù)的傳送是一種最根本、最主要的操作。在通常的應(yīng)用程序中,傳送指令在程序中占著極大的比例,數(shù)據(jù)傳送是否靈活、迅速,對(duì)整個(gè)程序的編寫和執(zhí)行都起著很大的作用。3.3.1 以累加器A為目的操作數(shù)的指令 MOVA, Rn; 存放器尋址,Rn A, n=07 MOVA, direct; 直接尋址,direct A MOVA,Ri; 間接尋址,Ri A,i=0或1 MOVA,#data; 立即尋址,data A這組指令的功能是把源操作數(shù)的內(nèi)容送到累加器A,源操作數(shù)的內(nèi)容不發(fā)生改變。3
14、.3.2 以Rn為目的操作數(shù)的指令 MOVRn, A; 存放器尋址,ARn MOVRn, direct; 直接尋址,direct Rn MOVRn,#data; 立即尋址,data Rn這組指令的功能是把源操作數(shù)的內(nèi)容送到當(dāng)前工作存放器組R0R1中的某一個(gè),源操作數(shù)的內(nèi)容不發(fā)生改變。3.3.3 以直接地址為目的操作數(shù)的指令 MOVdirect, A; 存放器尋址,A (direct) MOVdirect, Rn; 直接尋址,Rn (direct) MOVdirect1,direct2; 直接尋址,direct2 (direct1) MOVdirect,Ri; 存放器間接尋址,Ri (direc
15、t) , i = 0 1 MOVdirect,#data; 立即尋址,data (direct)這組指令的功能是把源操作數(shù)的內(nèi)容送到直接地址指出的存儲(chǔ)單元。3.3.4 以間接地址為目的操作數(shù)的指令 MOVRi, A; 存放器尋址,A(Ri), i = 0 1 MOVRi, direct; 直接尋址,direct(Ri) , i = 0 1 MOVRi,#data; 立即尋址,data (Ri) , i = 0 1這組指令的功能是把源操作數(shù)的內(nèi)容送到以R0或R1內(nèi)容為地址的內(nèi)部RAM存儲(chǔ)單元。3.3.5 16位數(shù)據(jù)傳送的指令MOVDPTR,#data16; 立即尋址,data16DPTR或dat
16、aHDPH,dataLDPL這條指令的功能是把16位立即數(shù)傳送到數(shù)據(jù)指針DPTR,16位數(shù)據(jù)的高8位送入DPH,低8位送入DPL。3.3.6 查表指令 MOVC A, A+PC; 基存放器加變址存放器間接尋址,A+PCA MOVC A, A+DPTR; 基存放器加變址存放器間接尋址,A+DPTRA這組指令的功能是以基存放器PC或DPTR的內(nèi)容與變址存放器A的內(nèi)容作為無符號(hào)數(shù)相加,組成新的16位地址,該地址單元的內(nèi)容送累加器A。這兩條指令專門用于當(dāng)數(shù)據(jù)放在程序存儲(chǔ)器中時(shí)來查數(shù)據(jù)表。這里應(yīng)特別注意PC總是指向下一條指令的地址。3.3.7 累加器A與片外RAM數(shù)據(jù)傳送指令 MOVXA, Ri; 頁面
17、尋址,P2Ri A , i = 0 1 MOVXA, DPTR; 存放器間接尋址,DPTR A MOVXRi, A; 頁面尋址,AP2Ri , i = 0 1 MOVXDPTR,A; 存放器間接尋址,A DPTR這組指令的功能是將累加器A和外部擴(kuò)展的RAM/IO口之間的數(shù)據(jù)傳送。由于外部RAM/IO口是統(tǒng)一編址的,共占一個(gè)64KB的空間,所以從指令本身看不出是對(duì)RAM還是對(duì)I/O口操作,而只能由硬件的地址分配情況來確定。3.3.8 堆棧操作指令 PUSHdirect; 直接尋址,SP+ 1 SP,directSP這條指令的功能是首先將SP的內(nèi)容自動(dòng)加1,然后把直接地址指出的內(nèi)容傳送到SP尋址的
18、內(nèi)部RAM單元中。 POPdirect; 直接尋址,SP direct,SP 1SP這條指令的功能是將SP尋址的內(nèi)部RAM單元的內(nèi)容送到直接地址所對(duì)應(yīng)的內(nèi)部RAM字節(jié)單元中,然后SP的內(nèi)容減1。3.3.9 交換指令 XCHA, Rn; 存放器尋址,A(Rn) XCHA, direct; 直接尋址,A (direct) XCHA, Ri; 存放器間接尋址,ARi , i = 0 1 XCHDA, Ri; 存放器間接尋址,(A)03 Ri, i = 0 1 SWAPA; 存放器尋址,(A)03 (A)47數(shù)據(jù)傳送類指令一般是把源操作數(shù)的內(nèi)容傳到目的操作數(shù),指令執(zhí)行后,一般是源操作數(shù)的內(nèi)容不變。3.
19、4 AT89S51單片機(jī)的算術(shù)操作指令MCS-51算術(shù)運(yùn)算類指令包括加、減、乘、除根本四那么運(yùn)算和增量加1、減量減1運(yùn)算,執(zhí)行結(jié)果將使進(jìn)位Cy、輔助進(jìn)位AC、溢出OV標(biāo)志置位或復(fù)位。但加1和減1指令不影響以上標(biāo)志。算術(shù)/邏輯運(yùn)算ALU部件僅執(zhí)行無符號(hào)二進(jìn)制整數(shù)的算術(shù)運(yùn)算。借助溢出標(biāo)志,可對(duì)帶符號(hào)數(shù)進(jìn)行2的補(bǔ)碼運(yùn)算;借助進(jìn)位標(biāo)志,可進(jìn)行多精度加、減運(yùn)算,也可以對(duì)壓縮的BCD碼數(shù)進(jìn)行運(yùn)算。這類指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV等8中操作助記符。3.4.1 不帶進(jìn)位的加法指令 ADDA, Rn; (A) + (Rn) A ADDA, direct; (A) + (
20、direct) A ADDA, Ri; (A) + (Ri) A ADDA, #data; (A) + data A這組指令的功能是把累加器A的內(nèi)容與工作存放器的內(nèi)容或內(nèi)部RAM單元的內(nèi)容或立即數(shù)的8位無符號(hào)二進(jìn)制數(shù)相加,其和的結(jié)果存放在累加器A中。3.4.2 帶進(jìn)位的加法指令 ADDCA, Rn; (A) + (Rn) + Cy A ADDCA, direct; (A) + (direct) + Cy A ADDCA, Ri; (A) + (Ri) + Cy A ADDCA, #data; (A) + data + Cy A這組指令的功能是把累加器A的內(nèi)容,與工作存放器的內(nèi)容,或內(nèi)部RAM單
21、元的內(nèi)容,或立即數(shù)的8位無符號(hào)二進(jìn)制數(shù),和進(jìn)位標(biāo)志一起相加,其和的結(jié)果存放在累加器A中。3.4.3 帶進(jìn)位的減法指令 SUBBA, Rn; (A) - (Rn) - Cy A SUBBA, direct; (A) - (direct) - Cy A SUBB A, Ri; (A) - (Ri) - Cy A SUBBA, #data; (A) - data - Cy A這組指令的功能是把累加器A的內(nèi)容,減去工作存放器的內(nèi)容,或減去內(nèi)部RAM單元的內(nèi)容,或減去立即數(shù)的8位無符號(hào)二進(jìn)制數(shù),并減去進(jìn)位標(biāo)志,其結(jié)果存放到累加器A中。如果位7需借位,那么置位進(jìn)位標(biāo)志Cy,否那么清Cy;如果位3需借位,那
22、么置位半進(jìn)位標(biāo)志AC,否那么清AC;如果位6需借位而位7不需借位,或者位7需借位而位6不需借位,那么置位溢出標(biāo)志OV,否那么清OV。3.4.4 增量加1指令 INCA; (A) + 1 A INCRn; (Rn) + 1 Rn INCRi; (Ri) + 1 (Ri) INCdirect; (direct) + 1 direct INCDPTR; (DPTR) + 1DPTR這組增量指令的功能是將操作數(shù)所指定單元的內(nèi)容加1,除對(duì)累加器A操作影響P標(biāo)志位外,此操作不影響其他標(biāo)志。3.4.5 減量減1指令 DECA; (A) - 1 A DECRn; (Rn) - 1 Rn DECRi; (Ri)
23、 - 1 (Ri) DECdirect; (direct) - 1 direct這組增量指令的功能是將操作數(shù)所指定單元的內(nèi)容減1,除對(duì)累加器A操作影響P標(biāo)志位外,此操作不影響其他標(biāo)志。3.4.6 十進(jìn)制調(diào)整指令DAA這條指令跟在加法指令A(yù)DD、ADDC指令后,對(duì)累加器A中8位結(jié)果進(jìn)行調(diào)整,使它調(diào)整為壓縮的BCD碼的數(shù),以完成十進(jìn)制加法運(yùn)算功能。兩個(gè)壓縮的BCD碼按二進(jìn)制數(shù)相加之后,必須經(jīng)本指令調(diào)整后才能得到壓縮的BCD碼的和數(shù)。 假設(shè)A309或AC=1,那么(A) + 06H A 假設(shè)A749或Cy=1,那么(A) + 60H A3.4.7 乘法指令MULA B這條指令的功能是把累加器A和存放
24、器B中的兩個(gè)8位無符號(hào)數(shù)相乘,其16位積的低8位字節(jié)放在累加器A中,高8位字節(jié)放在存放器B中。如果積大于2550FFH,那么置位溢出標(biāo)志OV,進(jìn)位標(biāo)志Cy總是清0。3.4.8 除法指令DIVA B這條指令的功能是把累加器A中的8位無符號(hào)數(shù),除以存放器B中的8位無符號(hào)數(shù),所得商的整數(shù)局部存放在累加器A中,余數(shù)保存存放器B中。如果原來B中的內(nèi)容為0,即除數(shù)為0,那么結(jié)果A和B中內(nèi)容不定,此時(shí)置位溢出標(biāo)志OV,進(jìn)位標(biāo)志Cy總是清0。3.5 AT89S51單片機(jī)的邏輯與移位指令MCS-51邏輯運(yùn)算類指令包括去除、求反、移位及與、或、異或等操作。這類指令有CLR、CPL、RL、RLC、RR、RRC、AN
25、L、ORL、XRL等9中操作助記符。3.5.1 對(duì)累加器A的單操作數(shù)的邏輯操作指令1CLRA; (A)=0這條指令的功能是將累加器A的內(nèi)容清零,即(A)=0,不影響Cy標(biāo)志、AC標(biāo)志和OV標(biāo)志,只影響P標(biāo)志。2CPLA; (A) A這條指令的功能是將累加器A的內(nèi)容逐位邏輯取反,不影響標(biāo)志位。3RLA這條指令的功能是將累加器A的內(nèi)容向左循環(huán)移位1位,不影響標(biāo)志位。3.5.1 對(duì)累加器A的單操作數(shù)的邏輯操作指令4RRA這條指令的功能是將累加器A的內(nèi)容向右循環(huán)移位1位,不影響標(biāo)志位。5RLCA這條指令的功能是將累加器A的內(nèi)容和進(jìn)位標(biāo)志位Cy一起向左循環(huán)移位1位,不影響AC標(biāo)志、OV標(biāo)志。6RRCA這
26、條指令的功能是將累加器A的內(nèi)容和進(jìn)位標(biāo)志位Cy一起向右循環(huán)移位1位,不影響AC標(biāo)志、OV標(biāo)志。3.5.2 兩個(gè)操作數(shù)的邏輯操作指令1邏輯與操作指令 ANLA, Rn; (A)(Rn)A ANLA, direct; (A)(direct)A ANLA, #data; (A)dataA ANLA, Ri; (A)(Ri) A ANLdirect, A; (direct)(A) direct ANLdirect, #data; (direct)data direct這組指令的前4條指令是將累加器A的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容,按位進(jìn)行邏輯與操作,結(jié)果存放在A中。后2條指令是將直接地址單元中的內(nèi)容
27、,與第2操作數(shù)所指出的內(nèi)容按位進(jìn)行邏輯與操作,結(jié)果存放在直接地址單元中。3.5.2 兩個(gè)操作數(shù)的邏輯操作指令2邏輯或操作指令 ORLA, Rn; (A)(Rn)A ORLA, direct; (A)(direct)A ORLA, #data; (A)dataA ORLA, Ri; (A)(Ri) A ORLdirect, A; (direct)(A) direct ORLdirect, #data; (direct)data direct這組指令的前4條指令是將累加器A的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容按位進(jìn)行邏輯或操作,結(jié)果存放在A中。后2條指令是將直接地址單元中的內(nèi)容,與第2操作數(shù)所指出的內(nèi)
28、容按位進(jìn)行邏輯或操作,結(jié)果存放在直接地址單元中。3.5.2 兩個(gè)操作數(shù)的邏輯操作指令3邏輯異或操作指令 XRLA, Rn; (A)(Rn)A XRLA, direct; (A)(direct)A XRLA, #data; (A)dataA XRLA, Ri; (A)(Ri) A XRLdirect, A; (direct)(A) direct XRLdirect, #data; (direct)data direct這組指令的前4條指令是將累加器A的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容,按位進(jìn)行邏輯異或操作,結(jié)果存放在A中。后2條指令是將直接地址單元中的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容,按位進(jìn)行邏輯異
29、或操作,結(jié)果存放在直接地址單元中。3.6 AT89S51單片機(jī)的程序控制流指令計(jì)算機(jī)在運(yùn)行過程中,有時(shí)因?yàn)椴僮鞯男枰蛞虺绦蜉^復(fù)雜,程序指令往往不能按順序逐條運(yùn)行,需要改變程序運(yùn)行方向,即將程序跳轉(zhuǎn)到某個(gè)指定的地址處再執(zhí)行。某些指令具有修改PC的功能如位操作指令JC、JNC、JB、JNB、JBC等,因?yàn)镻C的內(nèi)容總是指向?qū)⒁獔?zhí)行的下一條指令地址,所以計(jì)算機(jī)執(zhí)行這一類指令就能控制程序轉(zhuǎn)移到新的PC地址去執(zhí)行。除局部位操作指令能控制轉(zhuǎn)移外,MCS-51還有豐富的控制轉(zhuǎn)移類指令,包括無條件轉(zhuǎn)移、條件轉(zhuǎn)移和調(diào)用和返回指令。這類指令有AJMP、LJMP、SJMP、JMP、JZ、JNZ、CJNZ、DJNZ
30、、ACALL、LCALL、RET、RETI、NOP等13中操作助記符。3.6.1 無條件轉(zhuǎn)移指令1絕對(duì)跳轉(zhuǎn)指令A(yù)JMPaddr11; (PC)+2PC, addr100PC100這是2KB范圍內(nèi)的無條件轉(zhuǎn)移指令,是絕對(duì)跳轉(zhuǎn)。跳轉(zhuǎn)的目的地址必須與AJMP的下一條指令的第1個(gè)字節(jié)在同一2KB尋址范圍內(nèi),這是因?yàn)樘D(zhuǎn)的目的地址與AJMP的下一條指令的第1個(gè)字節(jié)的高5位addr1511相同。這條指令是為與MCS-48兼容而保存的指令,現(xiàn)在一般很少使用。2相對(duì)跳轉(zhuǎn)指令SJMPrel; (PC)+2rel PC這條指令執(zhí)行的時(shí)候先將PC的內(nèi)容加2,再加相對(duì)偏移量rel,計(jì)算出跳轉(zhuǎn)目的地址。rel是一個(gè)帶符
31、號(hào)的字節(jié)數(shù),在程序中用補(bǔ)碼表示,其值范圍為-128B+127B,當(dāng)rel為正數(shù)時(shí)表示正向跳轉(zhuǎn),為負(fù)數(shù)時(shí)表示負(fù)向跳轉(zhuǎn)。3.6.1 無條件轉(zhuǎn)移指令3長(zhǎng)跳轉(zhuǎn)指令LJMPaddr16; addr16 PC這條指令執(zhí)行時(shí)把16位操作數(shù)的上下8位分別裝入PC的PCH和PCL,無條件地轉(zhuǎn)向指定地址。跳轉(zhuǎn)的目的地址可以在64KB程序存儲(chǔ)器地址空間的任何地方,不影響任何標(biāo)志位。4間接跳轉(zhuǎn)指令JMPA+DPTR這條指令的功能是把累加器A中的8位無符號(hào)數(shù)與數(shù)據(jù)指針DPTR中的16位地址相加,相加形成的16位新地址送入PC。指令執(zhí)行過程不改變累加器和數(shù)據(jù)指針的內(nèi)容,也不影響標(biāo)志位。3.6.2 條件轉(zhuǎn)移指令1判零跳轉(zhuǎn)指
32、令 JZrel; 假設(shè)(A)=0,那么PC+2+relPC,假設(shè)(A)0,那么PC+2PC JNZrel; 假設(shè)(A)0,那么PC+2+relPC,假設(shè)(A)=0,那么PC+2PC這組指令的功能是假設(shè)滿足條件那么轉(zhuǎn)移到目的地址去執(zhí)行,不滿足條件那么順序執(zhí)行下一條指令。目的地址在以下一條指令的起始地址為中心的256B范圍內(nèi)-128B+127B。3.6.2 條件轉(zhuǎn)移指令2比較不相等跳轉(zhuǎn)指令CJNEA, direct, rel指令執(zhí)行的過程如下。A=direct,那么PC+3PC, Cy=0Adirect,那么PC+3+relPC, Cy=0Adirect,那么PC+3+relPC, Cy=13.6
33、.2 條件轉(zhuǎn)移指令3減1不為0跳轉(zhuǎn)指令DJNZRn, rel指令執(zhí)行過程如下。PC+ 2PCRn- 1Rn 假設(shè)Rn0,那么PC+ rel PC,假設(shè)Rn=0,那么循環(huán)結(jié)束,程序往下執(zhí)行3.6.3 調(diào)用和返回指令1短調(diào)用指令A(yù)CALLaddr11指令執(zhí)行過程如下。PC+2PCSP+1SP,PC07SP,PC低8位壓棧SP+1 SP,PC815SP,PC高8位壓棧 addr015 PC0103.6.3 調(diào)用和返回指令2長(zhǎng)調(diào)用指令LCALLaddr16指令執(zhí)行過程如下。PC+3PCSP+1SP,PC07SP,PC低8位壓棧 SP+1SP,PC815SP,PC高8位壓棧 addr015 PC3.6.3 調(diào)用和返回指令3從子程序返回指令RET指令的執(zhí)行過程如下。SP PC815SP-1 SPSP PC07SP-1 SP3.6.3 調(diào)用和返回指令4從中斷返回指令RETI指令執(zhí)行的過程如下。SP PC815SP-1 SPSP PC07SP-1 SP3.6.4 空操作指令NOP; PC+1 PC該指令除了完成PC內(nèi)容加1外,不影響其他存放器和標(biāo)志位。該指令常用來產(chǎn)生一個(gè)機(jī)器周期的延時(shí)。3.7 AT89S51單片機(jī)的位操作指令MCS-51系列單片機(jī)內(nèi)有一個(gè)布爾處理機(jī),它具有一套處理位變量的指令集,它
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆山西省晉源區(qū)第七小學(xué)小升初總復(fù)習(xí)數(shù)學(xué)測(cè)試題含解析
- 萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院《嵌入式系統(tǒng)D》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東勝利職業(yè)學(xué)院《船舶電氣設(shè)備一》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年廣東佛山市三水海江昇平建設(shè)工程有限公司招聘企業(yè)工作人員27人(第一批)筆試參考題庫附帶答案詳解
- 2025屆東源縣數(shù)學(xué)四年級(jí)第二學(xué)期期末聯(lián)考模擬試題含解析
- 克孜勒蘇職業(yè)技術(shù)學(xué)院《小學(xué)微課的開發(fā)與制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江幼兒師范高等??茖W(xué)校《裝飾工程計(jì)量與計(jì)價(jià)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年黑龍江省大慶市肇源農(nóng)場(chǎng)學(xué)校數(shù)學(xué)四下期末學(xué)業(yè)水平測(cè)試試題含解析
- 保山市龍陵縣2024-2025學(xué)年數(shù)學(xué)四下期末考試試題含解析
- 2024-2025學(xué)年廣東廣州越秀區(qū)小升初數(shù)學(xué)自主招生備考卷含解析
- GB/T 5781-2016六角頭螺栓全螺紋C級(jí)
- GB/T 18983-2017淬火-回火彈簧鋼絲
- 《全國導(dǎo)游基礎(chǔ)知識(shí)》全套培訓(xùn)課件-295p-完整版
- 2023年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)考試筆試題庫及答案解析
- 玻璃幕墻安全專項(xiàng)施工方案(專家論證版本)
- 教育機(jī)構(gòu)招生合作協(xié)議
- 我的寒假生活課件模板
- ISO37000-2021組織治理-指南(雷澤佳譯2022)
- c語言期末機(jī)考(大連理工大學(xué)題庫)
- 洞頂回填技術(shù)交底
- 貝多芬與《月光奏鳴曲》
評(píng)論
0/150
提交評(píng)論