【大學(xué)】MCS-51單片機(jī)的指令系統(tǒng)_第1頁
【大學(xué)】MCS-51單片機(jī)的指令系統(tǒng)_第2頁
【大學(xué)】MCS-51單片機(jī)的指令系統(tǒng)_第3頁
【大學(xué)】MCS-51單片機(jī)的指令系統(tǒng)_第4頁
【大學(xué)】MCS-51單片機(jī)的指令系統(tǒng)_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 本章介紹本章介紹MCS-51單片機(jī)的指令格式、尋單片機(jī)的指令格式、尋址方式址方式(包括立即尋址、直接尋址、寄存器尋址包括立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、基址加變址寄存器間接尋、寄存器間接尋址、基址加變址寄存器間接尋址、相對尋址、隱含尋址等七種方式址、相對尋址、隱含尋址等七種方式)、指令系、指令系統(tǒng)統(tǒng)(包括數(shù)據(jù)傳送類、算術(shù)運算類、邏輯運算類包括數(shù)據(jù)傳送類、算術(shù)運算類、邏輯運算類、位操作類、控制轉(zhuǎn)移類等五大類指令、位操作類、控制轉(zhuǎn)移類等五大類指令)。通過。通過本章的學(xué)習(xí),要求學(xué)生能夠熟練掌握本章的學(xué)習(xí),要求學(xué)生能夠熟練掌握MCS-51單單片機(jī)的指令功能和應(yīng)用。片機(jī)的指令功能和應(yīng)用

2、。.指令格式指令格式 指令的表示方法稱之為指令格式,其內(nèi)容包括指指令的表示方法稱之為指令格式,其內(nèi)容包括指令的長度和指令內(nèi)部信息的安排等。令的長度和指令內(nèi)部信息的安排等。 一條指令通常由操作碼和操作數(shù)兩部分組一條指令通常由操作碼和操作數(shù)兩部分組成。成。操作碼規(guī)定指令所完成的操作,操作數(shù)表示操操作碼規(guī)定指令所完成的操作,操作數(shù)表示操作的對象。操作數(shù)可能是一個具體的數(shù)據(jù),也可作的對象。操作數(shù)可能是一個具體的數(shù)據(jù),也可能是指出取得數(shù)據(jù)的地址或符號。能是指出取得數(shù)據(jù)的地址或符號。.單片微機(jī)執(zhí)行指令的過程單片微機(jī)執(zhí)行指令的過程單片微機(jī)執(zhí)行指令的過程,分為取指令和執(zhí)行單片微機(jī)執(zhí)行指令的過程,分為取指令和執(zhí)

3、行指令兩項基本內(nèi)容。指令兩項基本內(nèi)容。在取指階段,單片微機(jī)從程序存儲器中取出指在取指階段,單片微機(jī)從程序存儲器中取出指令操作碼,送到指令寄存器令操作碼,送到指令寄存器IR中,通過指令譯碼中,通過指令譯碼器的譯碼,產(chǎn)生一系列的控制信號。器的譯碼,產(chǎn)生一系列的控制信號。在指令執(zhí)行階段中,利用指令譯碼產(chǎn)生的控制在指令執(zhí)行階段中,利用指令譯碼產(chǎn)生的控制信號,進(jìn)行本指令規(guī)定的操作信號,進(jìn)行本指令規(guī)定的操作 . 51指令系統(tǒng)專用于指令系統(tǒng)專用于51系列單片機(jī),是一個具有系列單片機(jī),是一個具有255種操作碼種操作碼 (00H至至FFH,除,除A5H外外) 的集合。的集合。用匯編語言表達(dá)操作代碼時,用匯編語言

4、表達(dá)操作代碼時,42種助記符代種助記符代表了表了33種功能,有的功能如數(shù)據(jù)傳送,可以有幾種功能,有的功能如數(shù)據(jù)傳送,可以有幾種助記符,如種助記符,如MOV、MOVC、MOVX。指令功能助記符與操作數(shù)各種尋址方式的結(jié)合,指令功能助記符與操作數(shù)各種尋址方式的結(jié)合,共構(gòu)造出共構(gòu)造出111種指令,同一種指令所對應(yīng)的操作碼種指令,同一種指令所對應(yīng)的操作碼可以多至可以多至8種種 (如指令中如指令中Rn對應(yīng)寄存器對應(yīng)寄存器R0R7) 。尋址方式尋址方式 .尋址尋址:在指令中給出的尋找操作數(shù)或操作數(shù)所:在指令中給出的尋找操作數(shù)或操作數(shù)所在地址的方法。在地址的方法。 執(zhí)行任何一條指令都需要使用操作數(shù)。執(zhí)行任何一

5、條指令都需要使用操作數(shù)。 89S5l指令系統(tǒng)中共有指令系統(tǒng)中共有7種尋址方式。種尋址方式。. 立即尋址立即尋址在指令中直接給出操作數(shù),出現(xiàn)在指令中的操在指令中直接給出操作數(shù),出現(xiàn)在指令中的操作數(shù)稱為立即數(shù)。作數(shù)稱為立即數(shù)。在立即數(shù)前面必需加上前綴在立即數(shù)前面必需加上前綴“”。 例如:指令例如:指令 MOV DPTR,1234H指令功能:把指令功能:把16位立即數(shù)位立即數(shù)1234H送入數(shù)據(jù)指送入數(shù)據(jù)指針針DPTR中。中。.2直接尋址直接尋址 在指令中直接給出操作數(shù)單元的地址。在指令中直接給出操作數(shù)單元的地址。 例如:指令例如:指令 MOV A,3AH功能:把片內(nèi)功能:把片內(nèi)RAM中中3AH單元內(nèi)

6、的數(shù)據(jù)傳送給累加器單元內(nèi)的數(shù)據(jù)傳送給累加器A,如,如圖圖所示。所示。直接尋址方式只能給出直接尋址方式只能給出8位地址,限于片內(nèi)位地址,限于片內(nèi)RAM: 低低128單元,在指令中直接以單元地址形式給出。單元,在指令中直接以單元地址形式給出。 特殊功能寄存器,可以單元地址形式給出外,還可特殊功能寄存器,可以單元地址形式給出外,還可以寄存器符號形式給出。直接尋址是訪問特殊功能寄存器以寄存器符號形式給出。直接尋址是訪問特殊功能寄存器的唯一方法。的唯一方法。 . 3寄存器尋址寄存器尋址 在指令中將指定寄存器的內(nèi)容作為操作數(shù)。在指令中將指定寄存器的內(nèi)容作為操作數(shù)。 寄存器尋址方式中,用符號名稱來表示寄存器

7、。寄存器尋址方式中,用符號名稱來表示寄存器。 例如:指令例如:指令I(lǐng)NC R0功能:把寄存器功能:把寄存器R0的內(nèi)容加的內(nèi)容加1,再送回,再送回R0中。中。由于操作數(shù)在由于操作數(shù)在R0中,指定了中,指定了R0,也就得到了操作,也就得到了操作數(shù),如數(shù),如圖圖所示。所示。. 寄存器尋址方式的尋址范圍包括:寄存器尋址方式的尋址范圍包括: (1)4個寄存器組共個寄存器組共32個通用寄存器。個通用寄存器。 指令中只能使用當(dāng)前寄存器組。通過指定指令中只能使用當(dāng)前寄存器組。通過指定PSW中中的的RS1、RS0,以選擇使用的當(dāng)前寄存器組。,以選擇使用的當(dāng)前寄存器組。 (2)部分特殊功能寄存器。)部分特殊功能寄

8、存器。 例如累加器例如累加器A、AB寄存器對以及數(shù)據(jù)指針寄存器對以及數(shù)據(jù)指針DPTR。 .4寄存器間接尋址寄存器間接尋址 在指令中給出的寄存器內(nèi)容是操作數(shù)的地址,從該地在指令中給出的寄存器內(nèi)容是操作數(shù)的地址,從該地址中取出的才是操作數(shù)。址中取出的才是操作數(shù)。 寄存器間接尋址也需以寄存器符號名稱的形式表示。寄存器間接尋址也需以寄存器符號名稱的形式表示。 在寄存器間接尋址中,在寄存器的名稱前面加前綴在寄存器間接尋址中,在寄存器的名稱前面加前綴“”。例如:指令例如:指令A(yù)NL A,R1 假定假定R1寄存器的內(nèi)容是寄存器的內(nèi)容是 60H,指令的功能是以,指令的功能是以 R1寄寄存器的內(nèi)容存器的內(nèi)容 6

9、0H為地址,將為地址,將60H地址單元的內(nèi)容與累加器地址單元的內(nèi)容與累加器A中的數(shù)相中的數(shù)相“與與” ,其結(jié)果仍存放在,其結(jié)果仍存放在A中、其功能示意請中、其功能示意請參見參見圖圖。. 寄存器間接尋址的尋址范圍:寄存器間接尋址的尋址范圍: 片內(nèi)片內(nèi)RAM的低的低128單元,只能采用單元,只能采用R0或或R1為間址寄存器。其形式為為間址寄存器。其形式為Ri(i0,1)。)。 片外片外RAM 的的64 KB單元,使用單元,使用DPTR作為作為間址寄存器。例如:間址寄存器。例如:MOVX A,DPTR。 片外片外RAM低低256單元,使用單元,使用R0或或R1作間址作間址寄存器。寄存器。 例如:例如

10、:MOVX A,R0。 堆棧區(qū):堆棧操作指令堆棧區(qū):堆棧操作指令PUSH和和POP,以,以SP作間址寄存器的間接尋址方式。作間址寄存器的間接尋址方式。. 相對尋址相對尋址在指令中給出的操作數(shù)為程序轉(zhuǎn)移的偏移量。在指令中給出的操作數(shù)為程序轉(zhuǎn)移的偏移量。在相對轉(zhuǎn)移指令中,給出地址偏移量(以在相對轉(zhuǎn)移指令中,給出地址偏移量(以“rel”表表示),把示),把PC的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的地址。的地址。 轉(zhuǎn)移的目的地址可用如下公式表示:轉(zhuǎn)移的目的地址可用如下公式表示: 目的地址目的地址(轉(zhuǎn)移指令所在地址轉(zhuǎn)移指令字節(jié)數(shù)轉(zhuǎn)移指令所在地址轉(zhuǎn)移指令字節(jié)數(shù))re

11、l在在51的指令系統(tǒng)中,有許多條相對轉(zhuǎn)移指令,這些指的指令系統(tǒng)中,有許多條相對轉(zhuǎn)移指令,這些指令多數(shù)均為兩字節(jié)指令只有個別的是三字節(jié)的指令。令多數(shù)均為兩字節(jié)指令只有個別的是三字節(jié)的指令。偏移量偏移量rel是一個帶符號的是一個帶符號的8位二進(jìn)制補碼數(shù),所能表位二進(jìn)制補碼數(shù),所能表示的數(shù)的范圍是一示的數(shù)的范圍是一128127。因此,以相對轉(zhuǎn)移指令。因此,以相對轉(zhuǎn)移指令的所在地址為基點,向前最大可轉(zhuǎn)移(的所在地址為基點,向前最大可轉(zhuǎn)移(127十轉(zhuǎn)移指令字十轉(zhuǎn)移指令字節(jié)數(shù))個單元地址,向后最大可轉(zhuǎn)移(節(jié)數(shù))個單元地址,向后最大可轉(zhuǎn)移(128一轉(zhuǎn)移指令字一轉(zhuǎn)移指令字節(jié)數(shù))個單元地址。節(jié)數(shù))個單元地址。.

12、 例如:指令例如:指令JC 80H 若進(jìn)位位若進(jìn)位位C為為0,則程序計數(shù)器,則程序計數(shù)器PC中的內(nèi)容中的內(nèi)容加加2,即順序往下;即順序往下; 若進(jìn)位位若進(jìn)位位C為為1,則以程序計數(shù)器,則以程序計數(shù)器PC中當(dāng)前值中當(dāng)前值為基地址,加上偏移量為基地址,加上偏移量80H后所得結(jié)果作為該轉(zhuǎn)后所得結(jié)果作為該轉(zhuǎn)移指令的目的地址,其執(zhí)行示意圖如移指令的目的地址,其執(zhí)行示意圖如圖圖所示。所示。指令的操作碼存在指令的操作碼存在 1000H單元,偏移量存在單元,偏移量存在 1001H單元。執(zhí)行該指令后,程序計數(shù)器單元。執(zhí)行該指令后,程序計數(shù)器PC 指向指向1002 H(即當(dāng)前值)。這里(即當(dāng)前值)。這里80H即即

13、128,故,故1002H與與128 ( 80H )相加(補碼運算)后得)相加(補碼運算)后得到轉(zhuǎn)移地址到轉(zhuǎn)移地址 0F82H。.6變址尋址變址尋址以以DPTR或或PC為基址寄存器,累加器為基址寄存器,累加器A為變址為變址寄存器,以兩者內(nèi)容相加后形成的寄存器,以兩者內(nèi)容相加后形成的16位程序存儲位程序存儲器地址作為操作數(shù)地址。器地址作為操作數(shù)地址。又稱基址寄存器變址寄存器間接尋址。又稱基址寄存器變址寄存器間接尋址。例如:例如: MOVC A,ADPTR功能:把功能:把DPTR和和A的內(nèi)容相加所得到的程序的內(nèi)容相加所得到的程序存儲器地址單元的內(nèi)容送存儲器地址單元的內(nèi)容送A。. 假定指令執(zhí)行前:假定

14、指令執(zhí)行前: (A)54H,(,(DPTR)1256H 該指令的操作示意參見該指令的操作示意參見圖圖。 變址尋址形成的操作數(shù)地址為變址尋址形成的操作數(shù)地址為1256H54H12AAH,若,若12AAH單元的內(nèi)容為單元的內(nèi)容為00H,則該指,則該指令執(zhí)行的結(jié)果是令執(zhí)行的結(jié)果是A的內(nèi)容為的內(nèi)容為00H 。. 89S51指令系統(tǒng)中的變址尋址指令有如下特點:指令系統(tǒng)中的變址尋址指令有如下特點: 變址尋址方式只能對程序存儲器進(jìn)行尋址變址尋址方式只能對程序存儲器進(jìn)行尋址 。 變址尋址指令只有變址尋址指令只有3條條 MOVC A,ADPTR MOVC A,APC JMP ADPTR 這這3條指令都是單字節(jié)指

15、令。條指令都是單字節(jié)指令。 變址尋址方式用于查表操作。變址尋址方式用于查表操作。.7位尋址位尋址 位尋址的尋址范圍:位尋址的尋址范圍:(1)片內(nèi))片內(nèi)RAM中的位尋址區(qū)。中的位尋址區(qū)。 片內(nèi)片內(nèi)RAM中的單元地址中的單元地址20H2FH,共,共16個個單元單元128位,為位尋址區(qū),位地址是位,為位尋址區(qū),位地址是00H7FH。 例如例如 MOV C,2BH指令的功能是把位尋址區(qū)指令的功能是把位尋址區(qū)的的2BH位狀態(tài)送累加位位狀態(tài)送累加位C。 (2) 可位尋址的特殊功能寄存器位??晌粚ぶ返奶厥夤δ芗拇嫫魑?。 可供位尋址的特殊功能寄存器共有可供位尋址的特殊功能寄存器共有11個,有個,有尋址位尋址位

16、83位位. 尋址位在指令中有以下尋址位在指令中有以下4種表示方法:種表示方法: 直接使用位地址表示。直接使用位地址表示。 單元地址加位。例如單元地址加位。例如 88H單元的位單元的位5,則表示,則表示為。為。 特殊功能寄存器符號加位、例如特殊功能寄存器符號加位、例如 PSW寄存器寄存器的位的位5,可表示為:為,可表示為:為 PSW .5。 位名稱表示方法,特殊功能寄存器中的一些尋位名稱表示方法,特殊功能寄存器中的一些尋址位是有名稱的,例如址位是有名稱的,例如 PSW寄存器位寄存器位5為為F0標(biāo)志標(biāo)志位,則可使用位,則可使用F0表示該位。表示該位。. 對于指令中的操作數(shù),因為指令操作常伴有從右對

17、于指令中的操作數(shù),因為指令操作常伴有從右向左傳送數(shù)據(jù)的內(nèi)容,所以常把左邊操作數(shù)稱為向左傳送數(shù)據(jù)的內(nèi)容,所以常把左邊操作數(shù)稱為目的操作數(shù),而右邊操作數(shù)稱為源操作數(shù)。目的操作數(shù),而右邊操作數(shù)稱為源操作數(shù)。 89S51指令系統(tǒng)的指令系統(tǒng)的7種尋址方式概括起來如種尋址方式概括起來如表表31所列。所列。.7. 隱含尋址 操作數(shù)的地址隱含在操作碼中,不需要指明,這種方式稱為隱含尋址。 不是明顯的給出操作數(shù)地址,而是在指令中隱含著操作數(shù)的地址, 即要尋找的地址包含在操作碼中。例如在單地址指令格式中,就是不明顯的給出第二操作數(shù)的地址,而是以隱含的方式規(guī)定累加器作為第二操作數(shù)的地址。 . 單字節(jié)指令單字節(jié)指令

18、指令只有一個字節(jié),操作碼和操作數(shù)同在一個指令只有一個字節(jié),操作碼和操作數(shù)同在一個字節(jié)中。字節(jié)中。如如 MOV A,Rn 指令機(jī)器碼為單字節(jié)指令機(jī)器碼為單字節(jié)11001rrr,其中其中rrr可表示為可表示為000111,分別代表,分別代表R0R7 . 雙字節(jié)指令:其中一個字節(jié)為操作碼,另一個雙字節(jié)指令:其中一個字節(jié)為操作碼,另一個字節(jié)是操作數(shù)。字節(jié)是操作數(shù)。如如MOV A,#data 8位立即數(shù)位立即數(shù)data需占一個字節(jié),需占一個字節(jié),操作碼也需一個字節(jié)。操作碼也需一個字節(jié)。 三字節(jié)指令:操作碼占一個字節(jié),操作數(shù)占兩個三字節(jié)指令:操作碼占一個字節(jié),操作數(shù)占兩個字節(jié)。其中操作數(shù)既可能是數(shù)據(jù),也可

19、能是地址。字節(jié)。其中操作數(shù)既可能是數(shù)據(jù),也可能是地址。. 如如ANL direct ,#data 指令需指令需3個字節(jié),第個字節(jié),第1字字節(jié)為操作碼,第節(jié)為操作碼,第2字節(jié)為字節(jié)為8位直接地址位直接地址direct,第,第3字節(jié)為字節(jié)為8位立即數(shù)位立即數(shù)data。從指令執(zhí)行時間來看,單機(jī)器周期指令有從指令執(zhí)行時間來看,單機(jī)器周期指令有64種,雙機(jī)器周期指令有種,雙機(jī)器周期指令有45種,只有乘法、除法指種,只有乘法、除法指令的執(zhí)行時間為令的執(zhí)行時間為4個機(jī)器周期。在個機(jī)器周期。在12MHz晶振條晶振條件下,件下,89S51的指令執(zhí)行時間分別為的指令執(zhí)行時間分別為1S、2S、4S。.指令分類指令分

20、類 89S51的指令系統(tǒng),共有的指令系統(tǒng),共有111條指令,按其功能可條指令,按其功能可分為分為5大類:大類: 數(shù)據(jù)傳送類指令(數(shù)據(jù)傳送類指令(28條);條); 算術(shù)運算類指令(算術(shù)運算類指令(24條);條); 邏輯運算類指令(邏輯運算類指令(25條);條); 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令(17 條條); 布爾操作(位)類指令(布爾操作(位)類指令(17條)。條)。.指令系統(tǒng)中使用符號說明指令系統(tǒng)中使用符號說明 Rn n07,表示當(dāng)前寄存器組的,表示當(dāng)前寄存器組的8個通用寄個通用寄存器存器R0R7 中的一個。中的一個。 Ri i0,l,可用作間接尋址的寄存器,只,可用作間接尋址的寄存器,只能是

21、能是R0、R1 兩個寄存器中的一個。兩個寄存器中的一個。 direct 內(nèi)部的內(nèi)部的8位地址,既可以指片內(nèi)位地址,既可以指片內(nèi)RAM的低的低128個單元地址,也可以指特殊功能寄個單元地址,也可以指特殊功能寄存器的地址或符號名稱,因此,存器的地址或符號名稱,因此,direct表示直接表示直接尋址方式。尋址方式。#data指令中所含的指令中所含的8位立即數(shù)。位立即數(shù)。#data16 指令中所含的指令中所含的16位立即數(shù)。位立即數(shù)。. addr16 16位目的地址位目的地址,只限于在只限于在LCALL和和LJMP指令中指令中 使用。使用。 addr11 11位目的地址,只限于在位目的地址,只限于在A

22、CALL和和AJMP指令指令中使用。中使用。 rel 相對轉(zhuǎn)移指令中的偏移量,為相對轉(zhuǎn)移指令中的偏移量,為8位帶符號數(shù)。位帶符號數(shù)。為為 SJMP和所有條件轉(zhuǎn)移指令所用。轉(zhuǎn)移范圍為和所有條件轉(zhuǎn)移指令所用。轉(zhuǎn)移范圍為相相 對于下一條指令笫一字節(jié)地址的對于下一條指令笫一字節(jié)地址的-128127。 DPTR 數(shù)據(jù)指針。數(shù)據(jù)指針。 bit 片內(nèi)片內(nèi) RAM (包括部分特殊功能寄存器)(包括部分特殊功能寄存器)中的中的直接尋址位。直接尋址位。. A累加器。累加器。 B B寄存器。寄存器。 C 進(jìn)位標(biāo)志位,是布爾處理機(jī)中的累加器,進(jìn)位標(biāo)志位,是布爾處理機(jī)中的累加器,稱之為稱之為累加位。累加位。 間址寄存器

23、的前綴標(biāo)志。間址寄存器的前綴標(biāo)志。 / 位地址的前綴標(biāo)志,表示對該位操作數(shù)取反。位地址的前綴標(biāo)志,表示對該位操作數(shù)取反。 ( ) 某寄存器或某單元的內(nèi)容。某寄存器或某單元的內(nèi)容。 ()由)由尋址的單元中的內(nèi)容。尋址的單元中的內(nèi)容。 箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所取箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所取代。代。.(1)(1)標(biāo)號:用戶定義的符號地址。標(biāo)號:用戶定義的符號地址。 (2)(2)操作碼:該字段必不可少,表示指令進(jìn)操作碼:該字段必不可少,表示指令進(jìn)行何種操作,即操作性質(zhì)。行何種操作,即操作性質(zhì)。(3)(3)操作數(shù):該字段可能有,可能沒有。操作數(shù):該字段可能有,可能沒有。(4)(4)注釋:該

24、字段不是匯編語言的功能部分注釋:該字段不是匯編語言的功能部分,只增加程序的可讀性。注釋前要加,只增加程序的可讀性。注釋前要加“;”;”.1、內(nèi)部數(shù)據(jù)傳送指令內(nèi)部數(shù)據(jù)傳送指令 (1)以累加器A為目的地址的指令 指令 操作 MOV A, Rn (A)(Rn) MOV A, direct (A)(direct) MOV A, Ri (A)(Ri) MOV A, #data (A)data 這組指令的功能是將源操作數(shù)送入累加器A中。源操作數(shù)的尋址方式分別為寄存器尋址、直接尋址、寄存器間接尋址和立即尋址方式 .(2)以Rn為目的地址的指令 指令 操作 MOV Rn, A (Rn)(A) MOV Rn,

25、direct (Rn)(direct) MOV Rn, #data (Rn)data 這組指令的功能是將源操作數(shù)送入當(dāng)前工作寄存器區(qū)R0R7中的某一寄存器中。源操作數(shù)的尋址方式分別為隱含尋址、直接尋址和立即尋址方式。.(3)(3)以直接地址為目的地址的指令以直接地址為目的地址的指令 指令指令 操作操作 MOV direct,A (direct)(A) MOV direct,Rn (direct)(Rn) MOV direct,Ri (direct)(Ri) MOV direct1,direct2 (direct1)(direct2) MOV direct,#data (direct) data

26、 這組指令的功能是將源操作數(shù)送入由直這組指令的功能是將源操作數(shù)送入由直接地址指出的存儲單元中。源操作數(shù)的尋址接地址指出的存儲單元中。源操作數(shù)的尋址方式分別為隱含尋址、寄存器尋址、寄存器方式分別為隱含尋址、寄存器尋址、寄存器間接尋址、直接尋址和立即尋址方式。間接尋址、直接尋址和立即尋址方式。.(4)以寄存器間接地址為目的地址的指令以寄存器間接地址為目的地址的指令 MOV Ri,A (Ri)(A) MOV Ri,direct (Ri)(direct) MOV Ri,# data (Ri) data 這組指令的功能是將源操作數(shù)送入這組指令的功能是將源操作數(shù)送入R0或或R1間址的片內(nèi)間址的片內(nèi)RAM存

27、儲單元中。源操作存儲單元中。源操作數(shù)的尋址方式分別為隱含尋址、直接尋址和數(shù)的尋址方式分別為隱含尋址、直接尋址和立即尋址方式。立即尋址方式。.注意:目操可以是A、direct、Rn、Ri中的任一個,源操可以是A、direct、Rn、Ri、#data中的任一個。#data不能作目操。目操和源操不能同時出現(xiàn)Rn、Ri。目操和源操不能同時為A。目操和源操可以同時為direct類型。目操和源操數(shù)據(jù)長度應(yīng)保持一致。.2. 外部數(shù)據(jù)傳送指令 (1) 16位數(shù)據(jù)傳送指令 指令 操作 MOV DPTR, #data16 (DPTR) data16 (2)外部RAM數(shù)據(jù)傳送指令MOVX 功能:實現(xiàn)片外數(shù)據(jù)存儲器(

28、或擴(kuò)展I/O口)與累加器A之間的數(shù)據(jù)傳送。. 指令 操作 MOVX A,DPTR (A)(DPTR) MOVX A,Ri (A)(Ri) MOVX DPTR,A (DPTR)(A) MOVX Ri,A (Ri)(A) (3)外部ROM數(shù)據(jù)傳送指令MOVCMOVC A, APC ;(A)(A)(PC) MOVC A, ADPTR;(A)(A)(DPTR) .3. 數(shù)據(jù)交換指令數(shù)據(jù)交換指令(1)字節(jié)交換指令XCH 指令 操作 XCH A, Rn (A) (Rn) XCH A, direct (A) (direct) XCH A, Ri (A) (Ri) (2)半字節(jié)交換指令XCHD 指令 操作 X

29、CHD A,Ri(A) 低4位(Ri)低4位 .壓棧過程壓棧過程出棧過程出棧過程(1)壓棧指令PUSH 指令 操作 PUSH direct (SP)(SP)1 (SP)(direct)(2)出棧指令POP 指令 操作 POP direct (direct)(SP) (SP)(SP)14. 堆棧操作指令堆棧操作指令.算術(shù)運算類指令算術(shù)運算類指令 MCS-51單片機(jī)算術(shù)運算指令包括: 加法指令帶進(jìn)位加法指令帶進(jìn)位減法指令加1指令減1指令十進(jìn)制調(diào)整指令乘法和除法指令共24條 .1、加法指令、加法指令(1)不帶進(jìn)位的加法指令A(yù)DD 指令 操作 ADD A, Rn (A)(A)+(Rn) ADD A,

30、direct (A)(A)+(direct) ADD A, Ri (A)(A)+(Ri) ADD A, #data (A)(A)+ data 這組加法指令的功能是將源操作數(shù)和累加器A的內(nèi)容相加,結(jié)果存放在A中。源操作數(shù)分別為寄存器尋址、直接尋址、寄存器間接尋址和立即尋址方式。 .(2)帶進(jìn)位加法指令A(yù)DDC 指令 操作 ADDC A, Rn (A)(A)+(Rn)+CY ADDC A, direct (A)(A)+(direct)+CY ADDC A, Ri (A)(A)+(Ri)+CY ADDC A, #data (A)(A)+ data +CY 這組指令的功能是將源操作數(shù)、進(jìn)位標(biāo)志 CY和

31、累加器A的內(nèi)容相加,結(jié)果存放在A中。ADDC指令對標(biāo)志位的影響與ADD指令相同,這條指令多用于多字節(jié)加法運算,使得在進(jìn)行高字節(jié)加法時,考慮到低位字節(jié)向高位字節(jié)的進(jìn)位情況。 .(3)加1指令I(lǐng)NC 指令 操作 INC A (A)(A)+1 INC Rn (Rn)(Rn)+1 INC direct (direct)(direct)+1 INC Ri (Ri)(Ri)+1 INC DPTR (DPTR)(DPTR)+1 這組指令的功能是將源操作數(shù)加1,結(jié)果仍送給源操作數(shù)(因此源操也是目操)。若原來為0FFH,則將溢出為00H。本組指令除指令I(lǐng)NC A影響P標(biāo)志外,其余不影響任何標(biāo)志,操作數(shù)可采用寄存

32、器尋址、直接尋址或寄存器間接尋址方式。 .(4)BCD碼加法調(diào)整指令DA 指令 操作DA A 對(A)進(jìn)行二十進(jìn)制調(diào)整BCD碼是指用4位二進(jìn)制編碼形式表示1位十進(jìn)制數(shù)09。如果一個字節(jié)存放兩位BCD碼數(shù),則稱為壓縮BCD碼數(shù)。調(diào)整原則為:如果相加結(jié)果的低4位大于9(即出現(xiàn)字母),或AC=1,則進(jìn)行加06H調(diào)整;如果相加結(jié)果的高4位大于9(即出現(xiàn)字母),或CY=1,則進(jìn)行加60H調(diào)整。調(diào)整結(jié)果仍存放在A中。 .2. 減法指令減法指令(1)帶進(jìn)位減法指令SUBB 指令 操作 SUBB A,Rn (A)(A)(Rn)CY SUBB A,direct (A)(A)(direct)CY SUBB A,

33、Ri (A)(A)(Ri)CY SUBB A, #data (A)(A)dataCY 這組指令的功能是將累加器A減去源操作數(shù)及進(jìn)位標(biāo)志CY,結(jié)果存放在A中。若需進(jìn)行不帶借位的減法運算,則應(yīng)該先將CY清0,然后再執(zhí)行SUBB指令。 .(2)減1指令DEC 指令 操作 DEC A (A)(A)1 DEC Rn (Rn)(Rn)1 DEC direct (direct)(direct)1 DEC Ri (Ri)(Ri)1 這組指令的功能是將源操作數(shù)減1,結(jié)果仍送給源操作數(shù)(因此源操也是目操)。若原來為00H,減1后下溢為0FFH。本組指令除指令DEC A影響P標(biāo)志外,其余均不影響任何標(biāo)志。 .3.

34、乘法指令乘法指令 MUL 指令 MUL AB 這條指令是把累加器A和寄存器B中的8位無符號二進(jìn)制數(shù)相乘,16位乘積的低8位留在累加器A中,高8位存放在寄存器B中。 如果乘積大于0FFH,則OV=1,否則OV=0。CY標(biāo)志總是被清0。設(shè)(A)50H,(B)0A0H,執(zhí)行指令:MUL AB結(jié)果:(B)32H,(A)00H(即積為3200H),OV1,CY=0。 .4. 除法指令除法指令DIV 指令 DIV AB 這條指令的功能是把累加器A中的8位無符號二進(jìn)制數(shù)除以寄存器B中的8位無符號二進(jìn)制數(shù),所得商的整數(shù)部分存放在累加器A中,余數(shù)部分存放在寄存器B中。 如果原來B的內(nèi)容為0,即除數(shù)為0,則結(jié)果A

35、和B的內(nèi)容不定,且溢出標(biāo)志位OV=1。CY標(biāo)志總是被清0。設(shè)(A)=0FBH,(B)=12H,執(zhí)行指令:DIV AB結(jié)果為:(A)0DH,(B)11H,CY0,OV0。 .邏輯運算指令邏輯運算指令 3.5MCS-51單片機(jī)的邏輯運算指令包括:累加器A的邏輯操作指令兩個操作數(shù)的邏輯與指令邏輯或指令及邏輯異或指令 共25條 .1. 兩個操作數(shù)的邏輯操作指令 (1)邏輯與指令A(yù)NL 指令 操作 ANL A,Rn (A)(A)(Rn) ANL A,direct (A)(A)(direct) ANL A,Ri (A)(A) (Ri) ANL A,#data (A)(A) data ANL direct,

36、A (direct)(direct)(A) ANL direct,#data (direct)(direct) data .(2)邏輯或指令ORL 指令 操作 ORL A,Rn (A)(A)(Rn) ORL A,direct (A)(A)(direct) ORL A,Ri (A)(A) (Ri) ORL A,#data (A)(A) data ORL direct,A (direct)(direct)(A) ORL direct,#data (direct)(direct) data .(3)邏輯異或指令XRL 指令 操作 XRL A,Rn (A) (A) (Rn) XRL A,direct

37、(A) (A) (direct) XRL A,Ri (A) (A) (Ri) XRL A,#data (A) (A) data XRL direct,A (direct) (direct) (A) XRL direct,#data (direct) (direct) data .2. 累加器A的邏輯操作指令 (1)清0指令 指令 操作 CLR A (A)00H 這條指令的功能是將累加器A清0。只影響P標(biāo)志。(2)取反指令 指令 操作_ CPL A (A) 這條指令的功能是將累加器A的每一位邏輯取,不影響標(biāo)志。)A(.(3)左循環(huán)移位指令 指令 操作 RL A 這條指令的功能是將累加器A的內(nèi)容向

38、左循環(huán)移1位,移入。不影響標(biāo)志.(4)帶進(jìn)位左循環(huán)移位指令 指令 操作 RLC A 這條指令的功能是將累加器A的內(nèi)容和進(jìn)位標(biāo)志(CY)一起向左循環(huán)移1位,移入CY,CY移入。影響進(jìn)位標(biāo)志和奇偶標(biāo)志,不影響其它標(biāo)志。.(5)右循環(huán)移位指令 指令 操作 RR A 累加器A的內(nèi)容向右循環(huán)移1位。移入。不影響標(biāo)志。(6)帶進(jìn)位右循環(huán)移位指令 指令 操作 RRC A 累加器A的內(nèi)容和進(jìn)位標(biāo)志CY的內(nèi)容一起向右循環(huán)移1位,移入CY,CY移入。影響進(jìn)位標(biāo)志和奇偶標(biāo)志,不影響其它標(biāo)志。.(7)累加器半字節(jié)交換指令 指令 操作 SWAP A (A)74(A)30 這條指令的功能是將累加器A的高4位與低4位互換,

39、不影響標(biāo)志位。.位操作類指令位操作類指令 3.61.位傳送指令位傳送指令 指令 操作 MOV C,bit Cbit MOV bit,C bitC 這組指令的功能是在以bit表示的位和位累加器C之間進(jìn)行數(shù)據(jù)傳送。.2. 位修改指令位修改指令 指令 操作 CLR C C0 CLR bit bit0 CPL C C CPL bit bit SETB C C1 SETB bit bit1 這組指令的功能是將指定的位清0、取反或置1 .bit3. 位邏輯操作指令位邏輯操作指令(1)位邏輯與指令 指令 操作 ANL C,bit CCbit ANL C, CC這組指令是將指定的位地址單元內(nèi)容(或取反后的內(nèi)容

40、)與位累加器C的內(nèi)容進(jìn)行邏輯與操作,結(jié)果送入C中,源位地址單元內(nèi)容不變。 bitbit.(2)位邏輯或指令 指令 操作 ORL C,bit CCbit ORL C, CC這組指令與ANL指令類似,是將指定位地址單元中的內(nèi)容(或取反后的內(nèi)容)與位累加器C進(jìn)行邏輯或操作,結(jié)果送入C中。bitbit.控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.7控制轉(zhuǎn)移指令分:無條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令調(diào)用和返回指令 共有22條 .1. 無條件轉(zhuǎn)移指令(1)絕對轉(zhuǎn)移指令 AJMP addr11 (2)相對轉(zhuǎn)移指令 SJMP rel (3)長轉(zhuǎn)移指令 LJMP addr16 ;(PC)addr16(4)基址寄存器加變址寄存器間接轉(zhuǎn)移指令(散轉(zhuǎn)指令) JMP A+DPTR (PC)(A)+(DPTR) .2. 條件轉(zhuǎn)移指令(1)條件滿足轉(zhuǎn)移指令 指令指令 轉(zhuǎn)移條件轉(zhuǎn)移條件 JZ rel (A)JZ

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論