完全手冊 單片機C語言開發(fā)詳解之第章ATS單片機的指令系統(tǒng)ppt課件_第1頁
完全手冊 單片機C語言開發(fā)詳解之第章ATS單片機的指令系統(tǒng)ppt課件_第2頁
完全手冊 單片機C語言開發(fā)詳解之第章ATS單片機的指令系統(tǒng)ppt課件_第3頁
完全手冊 單片機C語言開發(fā)詳解之第章ATS單片機的指令系統(tǒng)ppt課件_第4頁
完全手冊 單片機C語言開發(fā)詳解之第章ATS單片機的指令系統(tǒng)ppt課件_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版第3章 AT89S51單片機的指令系統(tǒng)l在前面章節(jié)中介紹了單片機的基礎(chǔ)知識和AT89S51單片機的主要結(jié)構(gòu),本章主要介紹AT89S51單片機的指令系統(tǒng)。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.1 指令系統(tǒng)概述l單片機的指令系統(tǒng)是一套控制單片機執(zhí)行操作的編碼,通常稱為機器語言,機器語言指令是單片機唯一能夠識別和執(zhí)行的指令。為了容易理解和編程,通常使用匯編語言指令符號指令和高級語言用自然語言描述來描述計算機的指令系統(tǒng)。l匯編指令需通過匯編程序或人工方法匯編成機器能夠識別和執(zhí)行的機器語言指令,高級語言需要經(jīng)過編譯或解釋成機器能識別和執(zhí)行的機

2、器語言指令。本章采用Intel公司的標準格式匯編指令來分析AT89S51指令系統(tǒng)的功能和使用方法。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.1.1 指令格式l匯編語言指令是能匯編成機器語言代碼的指令。lAT89S51的匯編指令格式兼容MCS-51,其匯編語言指令的格式如下。l標號:操作碼【操作數(shù)1】,【操作數(shù)2】,【操作數(shù)3】;注釋l整個語句必須在一行內(nèi)寫完,分為四個部分。l(1第1部分l標號,可以省略,它是用戶定義的符號,標號實際上是符號地址,標號值代表這條指令在程序存儲器中的存放地址。l標號可以從字母開始,后跟18個英文字母或數(shù)字,并以冒號“:”結(jié)尾。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)

3、創(chuàng)新出版專業(yè)創(chuàng)新出版3.1.1 指令格式l(2第2部分l第二部分為指令操作,由25個英文字符組成,根據(jù)不用的指令而不同,它反映了指令的功能,不同功能的指令,可以查閱AT89S51的匯編手冊。l(3第3部分l第三部分為操作數(shù),根據(jù)不同的指令,可以有1個、2個、3個操作數(shù),或根本沒有操作數(shù)。它與操作助記符之間至少有一個空格,可以由多個空格,操作數(shù)之間用逗號“,”分開。它反映的是指令的對象。l(4第4部分l第四部分為注釋,注釋也可以省略,它以分號“;”開場,是用戶對該條指令或程序的說明,注釋必須在一行之內(nèi)寫完,換行時需另外以分號“;”開場,注釋內(nèi)容可以為任何字符。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版

4、專業(yè)創(chuàng)新出版3.1.2 AT89S51的偽匯編指令l匯編語言除了定義了匯編指令外,還定義了一些匯編偽指令,以支持匯編的運行。偽指令是匯編時不產(chǎn)生機器語言代碼的指令,是CPU不能執(zhí)行的指令,僅提供匯編用的某些控制信息。AT89S51匯編語言常用的偽指令有如下幾條。l(1ORG定位偽指令l格式:ORG mlm一般是16位二進制數(shù),m指出在該指令后的偽指令的匯編地址,即生成的機器指令的起始存儲器地址。它必須放在每段源程序或數(shù)據(jù)段的開始行,在一個匯編語言的源程序中允許存在多條定位偽指令,但其中每一個m值都應(yīng)和前面生成的機器指令存放地址不重疊。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2 AT

5、89S51單片機的尋址方式l所謂尋址方式就是如何尋找存放操作數(shù)的空間地址,并把操作數(shù)提取出來的方法,它是單片機的重要性能指標之一,也是匯編語言程序設(shè)計的最基本的內(nèi)容之一。l在匯編程序設(shè)計中,數(shù)據(jù)的存放、傳送、運算都要通過指令來完成,編程必須自始至終都十分清楚操作數(shù)的位置,以便將它們傳送到適當?shù)目臻g去操作,這些都要針對系統(tǒng)的硬件環(huán)境編程。因而,如何尋找存放操作數(shù)的空間位置和提取操作數(shù)就十分重要。lMCS-51單片機有8中尋址方式:寄存器尋址、直接尋址、立即尋址、寄存器間接尋址、基寄存器加變址寄存器間接尋址、相對尋址、位尋址和頁面尋址,下面作詳細講解。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出

6、版3.2.1 立即尋址l立即尋址方式中操作數(shù)包含在指令字節(jié)中,操作碼后面緊跟的是1B或2B操作數(shù)稱為立即數(shù)),即操作數(shù)以指令字節(jié)的形式存放于程序存儲器中,在編寫成程序時用“#”號表示,以區(qū)別于直接地址。l例如下面的代碼。lMOV A, #5AH;5AH AlMOV DPTR, #2000H;2000H DPTR技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.2 直接尋址l直接尋址方式在指令中直接給出操作數(shù)所在存儲單元的地址,該地址指出了參與運算或傳送的數(shù)據(jù)所在的字節(jié)單元或位的地址。l直接尋址方式訪問以下3種存儲空間:l(1特殊功能寄存器特殊功能寄存器只能用直接尋址方式訪問,即可以用它們

7、的地址,也可以用它們的名字);l(2內(nèi)部數(shù)據(jù)存儲器的低128B對于8032系列芯片,其內(nèi)部數(shù)據(jù)存儲器高128B80H0FFH不能用直接尋址方式訪問);技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.2 直接尋址l(3位地址空間。l例如下面的代碼。lMOV A, 5AH;(5AH) Al是把片內(nèi)RAM中的5AH這個地址單元的內(nèi)容送入累加器A。lMOV A, P1 ;(P1) Al是把SFR中P1口的內(nèi)容送入累加器A,它也可以寫成:lMOV A, 90Hl其中90H就是P1口的地址。l直接尋址的地址需占1個字節(jié),所以一條直接尋址方式的指令至少需要占內(nèi)存兩個單元。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)

8、創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.3 寄存器尋址l寄存器尋址就是由指令指出某一個寄存器的內(nèi)容為操作數(shù),對所選的工作寄存器組R0R7進行操作,累加器ACC、B寄存器、數(shù)據(jù)指針DPTR和進位C布爾處理機的累加器C也可用寄存器尋址的方式進行訪問,只是它們的尋址具體寄存器名會隱含在操作碼中。l例如下面的代碼。lMOV A, R0 ;(R0)AlMOV P1, A ;(A) P1口技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.4 寄存器間接尋址l操作數(shù)的地址事先存放在某個工作寄存器中,寄存器間接尋址方式是把指定寄存器的內(nèi)容作為地址,由該地址所指定的單元內(nèi)容作為操作數(shù)。lAT89S51單片機規(guī)定R0和

9、R1為間接尋址寄存器即地址指針對堆棧操作指令用堆棧指針SP),它可尋址內(nèi)部RAM低128B地址單元的內(nèi)容。寄存器間接尋址方式也可適用于訪問外部擴展的數(shù)據(jù)存儲器,用R0、R1或DPTR作為數(shù)據(jù)指針,當用R0、R1作為數(shù)據(jù)指針訪問片外RAM時又稱為頁面尋址。l寄存器間接尋址用符號表示。l例如下面的代碼。lMOVA, R0;(R0) Al指令中所規(guī)定的工作寄存器R0的內(nèi)容為地址指針,將該地址指針單元的內(nèi)容送給累加器A。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.5 相對尋址l相對尋址方式是以當前的PC值為基準,加上指令中給定的偏移量rel,所得的結(jié)果作為轉(zhuǎn)移地址。一般將相對轉(zhuǎn)移指令操作碼

10、所在的地址稱為源地址,轉(zhuǎn)移后的地址稱為目的地址,則有:l目的地址=源地址+相對轉(zhuǎn)移指令字節(jié)數(shù)+rellAT89S51單片機指令中相對轉(zhuǎn)移指令字節(jié)數(shù)既有2個字節(jié)的,也有3個字節(jié)的,偏移量為有符號數(shù),其取值范圍為-128B+127B,在程序中一般以補碼表示。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.6 基址加變址尋址l基址寄存器加變址寄存器間接尋址的尋址方式是以16位的PC或DPTR作為寄存器,以8位的累加器A作為變址寄存器,基寄存器和變址寄存器的內(nèi)容相加形成新的16位的地址,該地址為操作數(shù)的地址。在MCS-51單片機中,用變址尋址方式只能訪問程序存儲器。訪問時只能從ROM中讀取數(shù)據(jù)

11、而不能寫入數(shù)據(jù)。故這種尋址方式多用于查表操作。l例如下面的代碼。lMOVC A, A+DPTRl表示基寄存器DPTR的內(nèi)容與變址寄存器累加器A的內(nèi)容相加形成新的16位地址,該地址單元的內(nèi)容送累加器A。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.7 位尋址l在計算機中,操作數(shù)不僅可以按字節(jié)為單位進行存取和操作,而且也可以按8位二進制數(shù)種的某一位為單位進行存取和操作。位尋址方式是其操作數(shù)是8位二進制中的某一位。在指令中給出的是位地址,即給出片內(nèi)RAM某一單元中的一位。位地址在指令中用bit表示。lAT89S51單片機片內(nèi)RAM有兩個區(qū)域可以位尋址,其一是20H2FH的16個單元的128

12、位;其二是字節(jié)地址為8的倍數(shù)的特殊功能寄存器。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.7 位尋址lAT89S51單片機中位尋址常用以下兩種方式表示。l(1直接使用位地址。l對于20H2FH的16個單元共128位的位地址一般采用直接使用位地址的方式,如位地址08H表示21H單元的0位。l(2對于特殊功能寄存器,還可以直接用寄存器名字加位數(shù)表示,如PSW.3或位地址0D3H)。l例如下面的代碼。lMOV C, 01H;01H為位地址技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.8 頁面尋址l用寄存器間接尋址方式訪問外部擴展的數(shù)據(jù)存儲器,當用R0、R1作為地址指針訪問片外R

13、AM時的尋址方式稱為頁面尋址。頁面地址由P2口的內(nèi)容決定,頁面內(nèi)的地址由R0或R1的內(nèi)容決定。l例如下面的代碼。lMOV P2, #0A0HlMOV R0, #01HlMOV A, #10HlMOV RO, Al表示將累加器A中的數(shù)據(jù)10H傳送到頁面為A0H,頁內(nèi)地址為01H的外部數(shù)據(jù)存儲器地址單元,即實際為傳送到0A001H地址單元。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.2.9 尋址方式與存儲器的對應(yīng)l雖然AT89S51單片機的尋址方式有很多種,但指令對哪一個存儲器空間進行操作是由指令的操作碼和尋址方式確定的。一般來說,有以下幾點。l程序存儲器:只能采用立即尋址和基寄存器加變址

14、寄存器間接尋址的尋址方式;l特殊功能寄存器空間:只能采用直接尋址方式,不能采用寄存器間接尋址方式;l內(nèi)部數(shù)據(jù)存儲器高128B:只能采用寄存器間接尋址方式,不能采用直接尋址方式;l內(nèi)部數(shù)據(jù)存儲器低128B:既能采用寄存器間接尋址方式,又能采用直接尋址方式;l外部擴展的數(shù)據(jù)存儲器:只能采用MOVX指令訪問。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3 AT89S51單片機的數(shù)據(jù)傳送指令lAT89S51單片機指令系統(tǒng)共有42種操作助記符來描述33種操作功能,由111條指令組成。其中單字節(jié)指令49條,雙字節(jié)指令45條,三字節(jié)指令17條,下面分別介紹。lCPU在進行算術(shù)和邏輯操作時,絕大多數(shù)指

15、令都有操作數(shù),所以數(shù)的傳送是一種最基本、最主要的操作。在通常的應(yīng)用程序中,傳送指令在程序中占著極大的比例,數(shù)據(jù)傳送是否靈活、迅速,對整個程序的編寫和執(zhí)行都起著很大的作用。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3.1 以累加器A為目的操作數(shù)的指令l MOVA, Rn; 寄存器尋址,(Rn) A, n=07l MOVA, direct; 直接尋址,(direct) Al MOVA,Ri; 間接尋址,(Ri) A,i=0或1l MOVA,#data; 立即尋址,data Al這組指令的功能是把源操作數(shù)的內(nèi)容送到累加器A,源操作數(shù)的內(nèi)容不發(fā)生改變。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)

16、創(chuàng)新出版3.3.2 以Rn為目的操作數(shù)的指令l MOVRn, A; 寄存器尋址,(A)Rnl MOVRn, direct; 直接尋址,(direct) Rnl MOVRn,#data; 立即尋址,data Rnl這組指令的功能是把源操作數(shù)的內(nèi)容送到當前工作寄存器組R0R1中的某一個,源操作數(shù)的內(nèi)容不發(fā)生改變。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3.3 以直接地址為目的操作數(shù)的指令l MOVdirect, A; 寄存器尋址,(A) (direct)l MOVdirect, Rn; 直接尋址,(Rn) (direct)l MOVdirect1,direct2 ; 直接尋址,(dir

17、ect2) (direct1)l MOVdirect,Ri; 寄存器間接尋址,(Ri) (direct) , i = 0 1l MOVdirect,#data; 立即尋址,data (direct)l這組指令的功能是把源操作數(shù)的內(nèi)容送到直接地址指出的存儲單元。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3.4 以間接地址為目的操作數(shù)的指令l MOVRi, A; 寄存器尋址,(A)(Ri), i = 0 1l MOVRi, direct; 直接尋址,(direct)(Ri) , i = 0 1l MOVRi,#data; 立即尋址,data (Ri) , i = 0 1l這組指令的功能是

18、把源操作數(shù)的內(nèi)容送到以R0或R1內(nèi)容為地址的內(nèi)部RAM存儲單元。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3.5 16位數(shù)據(jù)傳送的指令lMOV DPTR,#data16; 立即尋址,data16DPTR或dataHDPH,dataLDPLl這條指令的功能是把16位立即數(shù)傳送到數(shù)據(jù)指針DPTR,16位數(shù)據(jù)的高8位送入DPH,低8位送入DPL。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3.6 查表指令l MOVC A, A+PC; 基寄存器加變址寄存器間接尋址,(A)+(PC)Al MOVC A, A+DPTR; 基寄存器加變址寄存器間接尋址,(A)+(DPTR)Al這組指令的

19、功能是以基寄存器PC或DPTR的內(nèi)容與變址寄存器A的內(nèi)容作為無符號數(shù)相加,組成新的16位地址,該地址單元的內(nèi)容送累加器A。這兩條指令專門用于當數(shù)據(jù)放在程序存儲器中時來查數(shù)據(jù)表。這里應(yīng)特別注意PC總是指向下一條指令的地址。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3.7 累加器A與片外RAM數(shù)據(jù)傳送指令l MOVXA, Ri; 頁面尋址,(P2)(Ri) A , i = 0 1l MOVXA, DPTR; 寄存器間接尋址,(DPTR) Al MOVXRi, A; 頁面尋址,(A)P2Ri) , i = 0 1l MOVXDPTR,A; 寄存器間接尋址,A (DPTR)l這組指令的功能是

20、將累加器A和外部擴展的RAM/IO口之間的數(shù)據(jù)傳送。由于外部RAM/IO口是統(tǒng)一編址的,共占一個64KB的空間,所以從指令本身看不出是對RAM還是對I/O口操作,而只能由硬件的地址分配情況來確定。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3.8 堆棧操作指令l PUSHdirect; 直接尋址,(SP)+ 1 SP,(direct)(SP)l這條指令的功能是首先將SP的內(nèi)容自動加1,然后把直接地址指出的內(nèi)容傳送到SP尋址的內(nèi)部RAM單元中。l POPdirect; 直接尋址,(SP) direct,(SP) 1SPl這條指令的功能是將SP尋址的內(nèi)部RAM單元的內(nèi)容送到直接地址所對應(yīng)的

21、內(nèi)部RAM字節(jié)單元中,然后SP的內(nèi)容減1。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.3.9 交換指令l XCHA, Rn; 寄存器尋址,(A)(Rn)l XCHA, direct; 直接尋址,(A) (direct)l XCHA, Ri; 寄存器間接尋址,(A)(Ri) , i = 0 1l XCHDA, Ri; 寄存器間接尋址,(A)03 (Ri), i = 0 1l SWAPA; 寄存器尋址,(A)03 (A)47l數(shù)據(jù)傳送類指令一般是把源操作數(shù)的內(nèi)容傳到目的操作數(shù),指令執(zhí)行后,一般是源操作數(shù)的內(nèi)容不變。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4 AT89S51單片機

22、的算術(shù)操作指令lMCS-51算術(shù)運算類指令包括加、減、乘、除基本四則運算和增量加1)、減量減1運算,執(zhí)行結(jié)果將使進位Cy)、輔助進位AC)、溢出OV標志置位或復(fù)位。l但加1和減1指令不影響以上標志。算術(shù)/邏輯運算ALU部件僅執(zhí)行無符號二進制整數(shù)的算術(shù)運算。借助溢出標志,可對帶符號數(shù)進行2的補碼運算;借助進位標志,可進行多精度加、減運算,也可以對壓縮的BCD碼數(shù)進行運算。這類指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV等8中操作助記符。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4.1 不帶進位的加法指令l ADDA, Rn; (A) + (Rn) Al ADD

23、A, direct; (A) + (direct) Al ADDA, Ri; (A) + (Ri) Al ADDA, #data; (A) + data Al這組指令的功能是把累加器A的內(nèi)容與工作寄存器的內(nèi)容或內(nèi)部RAM單元的內(nèi)容或立即數(shù)的8位無符號二進制數(shù)相加,其和的結(jié)果存放在累加器A中。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4.2 帶進位的加法指令l ADDCA, Rn; (A) + (Rn) + Cy Al ADDCA, direct; (A) + (direct) + Cy Al ADDCA, Ri; (A) + (Ri) + Cy Al ADDCA, #data; (A

24、) + data + Cy Al這組指令的功能是把累加器A的內(nèi)容,與工作寄存器的內(nèi)容,或內(nèi)部RAM單元的內(nèi)容,或立即數(shù)的8位無符號二進制數(shù),和進位標志一起相加,其和的結(jié)果存放在累加器A中。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4.3 帶進位的減法指令l SUBBA, Rn; (A) - (Rn) - Cy Al SUBBA, direct; (A) - (direct) - Cy Al SUBB A, Ri; (A) - (Ri) - Cy Al SUBBA, #data; (A) - data - Cy Al這組指令的功能是把累加器A的內(nèi)容,減去工作寄存器的內(nèi)容,或減去內(nèi)部RA

25、M單元的內(nèi)容,或減去立即數(shù)的8位無符號二進制數(shù),并減去進位標志,其結(jié)果存放到累加器A中。如果位7需借位,則置位進位標志Cy,否則清Cy;如果位3需借位,則置位半進位標志AC,否則清AC;如果位6需借位而位7不需借位,或者位7需借位而位6不需借位,則置位溢出標志OV,否則清OV。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4.4 增量加1指令l INCA; (A) + 1 Al INCRn; (Rn) + 1 Rnl INCRi; (Ri) + 1 (Ri)l INCdirect; (direct) + 1 directl INCDPTR; (DPTR) + 1DPTRl這組增量指令的功

26、能是將操作數(shù)所指定單元的內(nèi)容加1,除對累加器A操作影響P標志位外,此操作不影響其他標志。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4.5 減量減1指令l DECA; (A) - 1 Al DECRn; (Rn) - 1 Rnl DECRi; (Ri) - 1 (Ri)l DECdirect; (direct) - 1 directl這組增量指令的功能是將操作數(shù)所指定單元的內(nèi)容減1,除對累加器A操作影響P標志位外,此操作不影響其他標志。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4.6 十進制調(diào)整指令lDAAl這條指令跟在加法指令A(yù)DD、ADDC指令后,對累加器A中8位結(jié)果進行

27、調(diào)整,使它調(diào)整為壓縮的BCD碼的數(shù),以完成十進制加法運算功能。兩個壓縮的BCD碼按二進制數(shù)相加之后,必須經(jīng)本指令調(diào)整后才能得到壓縮的BCD碼的和數(shù)。l 若A309或AC=1,那么(A) + 06H Al 若A749或Cy=1,那么(A) + 60H A技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4.7 乘法指令lMUL A Bl這條指令的功能是把累加器A和寄存器B中的兩個8位無符號數(shù)相乘,其16位積的低8位字節(jié)放在累加器A中,高8位字節(jié)放在寄存器B中。如果積大于2550FFH),則置位溢出標志OV,進位標志Cy總是清0。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.4.8 除法指

28、令lDIV A Bl這條指令的功能是把累加器A中的8位無符號數(shù),除以寄存器B中的8位無符號數(shù),所得商的整數(shù)部分存放在累加器A中,余數(shù)保留寄存器B中。如果原來B中的內(nèi)容為0,即除數(shù)為0,則結(jié)果A和B中內(nèi)容不定,此時置位溢出標志OV,進位標志Cy總是清0。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.5 AT89S51單片機的邏輯與移位指令lMCS-51邏輯運算類指令包括清除、求反、移位及與、或、異或等操作。這類指令有CLR、CPL、RL、RLC、RR、RRC、ANL、ORL、XRL等9中操作助記符。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.5.1 對累加器A的單操作數(shù)的邏輯操作指

29、令l1CLRA; (A)=0l這條指令的功能是將累加器A的內(nèi)容清零,即(A)=0,不影響Cy標志、AC標志和OV標志,只影響P標志。l2CPLA; (A) Al這條指令的功能是將累加器A的內(nèi)容逐位邏輯取反,不影響標志位。l3RLAl這條指令的功能是將累加器A的內(nèi)容向左循環(huán)移位1位,不影響標志位。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.5.1 對累加器A的單操作數(shù)的邏輯操作指令l4RRAl這條指令的功能是將累加器A的內(nèi)容向右循環(huán)移位1位,不影響標志位。l5RLCAl這條指令的功能是將累加器A的內(nèi)容和進位標志位Cy一起向左循環(huán)移位1位,不影響AC標志、OV標志。l6RRCAl這條指令的

30、功能是將累加器A的內(nèi)容和進位標志位Cy一起向右循環(huán)移位1位,不影響AC標志、OV標志。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.5.2 兩個操作數(shù)的邏輯操作指令l(1邏輯與操作指令l ANLA, Rn; (A)(Rn)Al ANLA, direct; (A)(direct) Al ANLA, #data; (A)dataAl ANLA, Ri; (A)(Ri) Al ANLdirect, A; (direct)(A) directl ANLdirect, #data; (direct)data directl這組指令的前4條指令是將累加器A的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容,按位進行邏

31、輯與操作,結(jié)果存放在A中。l后2條指令是將直接地址單元中的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容按位進行邏輯與操作,結(jié)果存放在直接地址單元中。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.5.2 兩個操作數(shù)的邏輯操作指令l(2邏輯或操作指令l ORLA, Rn; (A)(Rn)Al ORLA, direct; (A)(direct) Al ORLA, #data; (A)dataAl ORLA, Ri; (A)(Ri) Al ORLdirect, A; (direct)(A) directl ORLdirect, #data; (direct)data directl這組指令的前4條指令是將累加

32、器A的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容按位進行邏輯或操作,結(jié)果存放在A中。l后2條指令是將直接地址單元中的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容按位進行邏輯或操作,結(jié)果存放在直接地址單元中。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.5.2 兩個操作數(shù)的邏輯操作指令l(3邏輯異或操作指令l XRLA, Rn; (A)(Rn)Al XRLA, direct; (A)(direct)Al XRLA, #data; (A)dataAl XRLA, Ri; (A)(Ri) Al XRLdirect, A; (direct)(A) directl XRLdirect, #data; (direct)dat

33、a directl這組指令的前4條指令是將累加器A的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容,按位進行邏輯異或操作,結(jié)果存放在A中。l后2條指令是將直接地址單元中的內(nèi)容,與第2操作數(shù)所指出的內(nèi)容,按位進行邏輯異或操作,結(jié)果存放在直接地址單元中。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6 AT89S51單片機的程序控制流指令l計算機在運行過程中,有時因為操作的需要或因程序較復(fù)雜,程序指令往往不能按順序逐條運行,需要改變程序運行方向,即將程序跳轉(zhuǎn)到某個指定的地址處再執(zhí)行。l某些指令具有修改PC的功能如位操作指令JC、JNC、JB、JNB、JBC等),因為PC的內(nèi)容總是指向?qū)⒁獔?zhí)行的下一條指令地址

34、,所以計算機執(zhí)行這一類指令就能控制程序轉(zhuǎn)移到新的PC地址去執(zhí)行。除部分位操作指令能控制轉(zhuǎn)移外,MCS-51還有豐富的控制轉(zhuǎn)移類指令,包括無條件轉(zhuǎn)移、條件轉(zhuǎn)移和調(diào)用和返回指令。l這類指令有AJMP、LJMP、SJMP、JMP、JZ、JNZ、CJNZ、DJNZ、ACALL、LCALL、RET、RETI、NOP等13中操作助記符。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.1 無條件轉(zhuǎn)移指令l(1絕對跳轉(zhuǎn)指令lAJMP addr11; (PC)+2PC, addr100PC100l這是2KB范圍內(nèi)的無條件轉(zhuǎn)移指令,是絕對跳轉(zhuǎn)。跳轉(zhuǎn)的目的地址必須與AJMP的下一條指令的第1個字節(jié)在同一2K

35、B尋址范圍內(nèi),這是因為跳轉(zhuǎn)的目的地址與AJMP的下一條指令的第1個字節(jié)的高5位addr1511相同。這條指令是為與MCS-48兼容而保留的指令,現(xiàn)在一般很少使用。l(2相對跳轉(zhuǎn)指令lSJMP rel; (PC)+2rel PCl這條指令執(zhí)行的時候先將PC的內(nèi)容加2,再加相對偏移量rel,計算出跳轉(zhuǎn)目的地址。rel是一個帶符號的字節(jié)數(shù),在程序中用補碼表示,其值范圍為-128B+127B,當rel為正數(shù)時表示正向跳轉(zhuǎn),為負數(shù)時表示負向跳轉(zhuǎn)。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.1 無條件轉(zhuǎn)移指令l(3長跳轉(zhuǎn)指令lLJMP addr16 ; addr16 PCl這條指令執(zhí)行時把16

36、位操作數(shù)的高低8位分別裝入PC的PCH和PCL,無條件地轉(zhuǎn)向指定地址。跳轉(zhuǎn)的目的地址可以在64KB程序存儲器地址空間的任何地方,不影響任何標志位。l(4間接跳轉(zhuǎn)指令lJMPA+DPTRl這條指令的功能是把累加器A中的8位無符號數(shù)與數(shù)據(jù)指針DPTR中的16位地址相加,相加形成的16位新地址送入PC。指令執(zhí)行過程不改變累加器和數(shù)據(jù)指針的內(nèi)容,也不影響標志位。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.2 條件轉(zhuǎn)移指令l(1判零跳轉(zhuǎn)指令l JZrel; 假設(shè)(A)=0,則PC+2+relPC,假設(shè)(A)0,則PC+2 PCl JNZrel; 假設(shè)(A)0,則PC+2+relPC,假設(shè)(A

37、)=0,則PC+2PCl這組指令的功能是若滿足條件則轉(zhuǎn)移到目的地址去執(zhí)行,不滿足條件則順序執(zhí)行下一條指令。目的地址在以下一條指令的起始地址為中心的256B范圍內(nèi)(-128B+127B)。技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.2 條件轉(zhuǎn)移指令l(2比較不相等跳轉(zhuǎn)指令lCJNEA, direct, rell指令執(zhí)行的過程如下。l(A)=(direct),那么PC)+3PC, Cy=0l(A)(direct),那么PC)+3+relPC, Cy=0l(A)(direct),那么PC)+3+relPC, Cy=1技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.2 條件轉(zhuǎn)移指令

38、l(3減1不為0跳轉(zhuǎn)指令lDJNZRn, rell指令執(zhí)行過程如下。l(PC)+ 2PCl(Rn)- 1Rnl 假設(shè)Rn)0,那么PC)+ rel PC,假設(shè)Rn)=0,則循環(huán)結(jié)束,程序往下執(zhí)行技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.3 調(diào)用和返回指令l(1短調(diào)用指令lACALLaddr11l指令執(zhí)行過程如下。l(PC)+2PCl(SP)+1SP,(PC07)(SP),PC低8位壓棧l(SP)+1 SP,(PC815)(SP),PC高8位壓棧l addr015 PC010技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.3 調(diào)用和返回指令l(2長調(diào)用指令lLCALLadd

39、r16l指令執(zhí)行過程如下。l(PC)+3PCl(SP)+1SP,(PC07)(SP),PC低8位壓棧l (SP)+1SP,(PC815)(SP),PC高8位壓棧l addr015 PC技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.3 調(diào)用和返回指令l(3從子程序返回指令lRETl指令的執(zhí)行過程如下。l(SP) PC815l(SP)-1 SPl(SP) PC07l(SP)-1 SP技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.3 調(diào)用和返回指令l(4從中斷返回指令lRETIl指令執(zhí)行的過程如下。l(SP) PC815l(SP)-1 SPl(SP) PC07l(SP)-1 SP技術(shù)凝聚實力技術(shù)凝聚實力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版3.6.4 空操作指令lNOP ; (PC)+1 PCl該指令除了完成PC內(nèi)容加1外,不影響其他寄存器和標志位。該指令常用來產(chǎn)生一個機器周期的延時。技術(shù)凝聚實力技術(shù)凝聚實

溫馨提示

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

評論

0/150

提交評論