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

下載本文檔

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

文檔簡介

1、第三章 指令系統(tǒng)及程序設(shè)計舉例,3.3 89C51指令系統(tǒng),3.1 匯編語言,3.2 尋址方式,3.4 程序設(shè)計舉例,3.1 匯編語言,3.1.1 指令和程序設(shè)計語言 3.1.2 指令格式,3.1.1 指令和程序設(shè)計語言,指令:是CPU根據(jù)人的意圖來執(zhí)行某種操作的命令。,程序設(shè)計語言:是實(shí)現(xiàn)人機(jī)交換信息的基本工具,分為機(jī)器語言、匯編語言和高級語言。,機(jī)器語言:用二進(jìn)制編碼表示每條指令,是計算機(jī)能直接識別和執(zhí)行的語言。,匯編語言:是用助記符、符號和數(shù)字等來表示指令的程序設(shè)計語言。它與機(jī)器語言指令是一一對應(yīng)的。,3.1.2 指令格式,89C51匯編語言指令格式,操作碼 目的操作數(shù),源操作數(shù);注釋,

2、匯編語言指令對應(yīng)的二進(jìn)制代碼格式,單字節(jié)指令 雙字節(jié)指令 三字節(jié)指令,89C51單片機(jī)具有111條指令,其指令系統(tǒng)的特點(diǎn)為:,(1)執(zhí)行時間短。(2)指令編碼字節(jié)少。(3)位操作指令豐富。,單字節(jié)指令,1、指令碼中隱含著對某一種寄存器的操作 如:指令“INC DPTR”的指令代碼格式為:A3H=1 0 1 0 0 0 1 1,2、由指令中的rrr三位的不同編碼指定某一寄存器 如:指令“MOV A,Rn”的指令代碼格式為: 1 1 1 0 1 r r r,雙字節(jié)指令,用一個字節(jié)表示操作碼,另一個字節(jié)表示操作數(shù)或操作數(shù)所在的地址。,操作碼,立即數(shù)或地址,格式為:,如:MOV A,#50H,三字節(jié)指

3、令,一個字節(jié)操作碼,兩個字節(jié)操作數(shù)。,操作碼,立即數(shù)或地址,立即數(shù)或地址,格式為:,如:MOV 20H,#50H,符號注釋:,Rn(n=07)-當(dāng)前選中的工作寄存器組中的寄存器R0R7之一; Ri(i=0,1)-當(dāng)前選中的工作寄存器組中的寄存器R0或R1; -間址寄存器前綴; #data -8位立即數(shù); #data16-16位立即數(shù); direct-片內(nèi)低128個RAM單元地址及SFR地址(可用符號名稱表示);,addr11-11位目的地址; addr16-16位目的地址; rel-補(bǔ)碼形式表示的8位地址偏移量,值在128127范圍內(nèi); bit-片內(nèi)RAM位地址、SFR的位地址(可用符號名稱表

4、示); /-位操作數(shù)的取反操作前綴; ()- 表示 地址單元或寄存器中的內(nèi)容; ( () - 表示以單元或寄存器中的內(nèi)容為地址間接尋址單元的內(nèi)容; -將箭頭右邊的內(nèi)容送入箭頭左邊的單元中。,3.2 尋址方式,一、什么是尋址方式:,如何找到存放操作數(shù)的地址,把操作數(shù)提取出來的方法。,二、尋址方式的種類:,1、寄存器尋址 2、直接尋址 3、立即數(shù)尋址 4、寄存器間接尋址 5、變址尋址 6、相對尋址 7、位尋址,1、寄存器尋址,寄存器尋址:由指令指出寄存器組R0R7中的某一個或其他寄存器(A,B,DPTR等)的內(nèi)容作為操作數(shù)。,例如:MOV A,R0;(R0)A MOV P1,A;(A)P1口 AD

5、D A,R0;(A)+(R0)A,如:MOV A,R0,操作數(shù)存放在寄存器中,指令中直接給出該寄存器名稱的尋址方式。可以獲得較高的傳送和運(yùn)算速度。,2、直接尋址,直接尋址方式:在指令中直接給出操作數(shù)所在存儲單元的地址。指令中操作數(shù)部分是操作數(shù)所在地址。,例如:MOV A,3AH;(3A) A MOV A,P1;(P1口) A 或: MOV A,90H; 90H是P1口的地址,直接尋址方式可訪問片內(nèi)RAM的128個單元以及所有的SFR。對于SFR,既可以使用它們的地址,也可以使用它們的名字。,如:MOV A,50H,3、立即數(shù)尋址,立即數(shù)尋址:指令操作碼后面緊跟的是一字節(jié)或兩字節(jié)操作數(shù),用“#”

6、號表示,以區(qū)別直接地址。,例如: MOV A,3AH;(3AH)A MOV A,#3AH;3AHA,MOV DPTR,#2000H,;2000HDPTR ;(DPH)=20H ;(DPL)=00H,直接尋址,立即數(shù)尋址,4、寄存器間接尋址,寄存器間接尋址:操作數(shù)的地址事先存放在某個寄存器中,寄存器間接尋址是把指定寄存器的內(nèi)容作為地址,由該地址所指定的單元內(nèi)容作為操作數(shù)。,89C51規(guī)定R0或R1為間接尋址寄存器,它可尋址內(nèi)部地址RAM低位的128B單元內(nèi)容。還可采用DPTR作為間接尋址寄存器,尋址外部數(shù)據(jù)存儲器的64KB空間。,例如:將片內(nèi)RAM 65H單元內(nèi)容47H送A,可執(zhí)行指令“MOV

7、R0,#65H 、MOV A,R0”。如圖所示:,65H,47H,R0,A,數(shù)據(jù)存儲器,地址,65H,以指令中所指定的R0內(nèi)容(65H)為地址,將片內(nèi)RAM 65H單元內(nèi)容47H送A,5、變址尋址(基址寄存器+變址寄存器間接尋址),變址尋址:以某個寄存器的內(nèi)容為基地址,在這個基地址的基礎(chǔ)上加上地址偏移量形成真正的操作數(shù)地址。,變址尋址只能訪問程序存儲器,訪問范圍為64KB。,89C51中采用DPTR或PC為變址寄存器,A的內(nèi)容為地址偏移量。,只有兩條指令屬于變址尋址:,MOVC A,A+DPTR MOVC A,A+PC,例如:MOVC A,A+DPTR;(A)+(DPTR)A 如圖所示,030

8、2H,ROM,DPTR,A,A,02F1H,11H,1EH,+,DPTR內(nèi)容與A的內(nèi)容之和為程序存儲器地址,程序存儲器內(nèi)容送A,6、相對尋址,相對尋址:是以當(dāng)前的PC值加上指令中規(guī)定的偏移量rel而形成實(shí)際的轉(zhuǎn)移地址。 相對尋址只出現(xiàn)在相對轉(zhuǎn)移指令中。 當(dāng)前的PC值是指執(zhí)行完相對指令后的PC值;相對轉(zhuǎn)移指令操作碼所在地址稱為源地址;轉(zhuǎn)移后的地址稱為目的地址。 目的地址=源地址+相對轉(zhuǎn)移指令字節(jié)數(shù)+rel rel為補(bǔ)碼表示的有符號數(shù)。,如:JC rel ; rel75H,7、位尋址,位尋址:采用位尋址方式的指令的操作數(shù)是8位二進(jìn)制數(shù)中的某一位,指令中給出的是位地址。位地址在指令中用bit表示。

9、例如:CLR bit;,位尋址區(qū)域:片內(nèi)RAM的20H-2FH的16個單元中的128位;字節(jié)地址能被8整除的SFR。,位地址的兩種表示方法:直接使用位地址,如D3H;直接用寄存器名字加位數(shù),如PSW.3。,表3-2 操作數(shù)尋址方式和有關(guān)空間,三、尋址空間,MCS-51指令系統(tǒng)可分為五大類,1 數(shù)據(jù)傳送指令:28條 2 算術(shù)運(yùn)算指令:24條 3 邏輯運(yùn)算及移位指令:25條 4 控制轉(zhuǎn)移指令:17條 5 位操作指令(布爾操作):17條,3.3.1 數(shù)據(jù)傳送指令, 1.以累加器A為目的操作數(shù)的指令 (4條,即4種尋址方式) 2.以寄存器Rn為目的操作數(shù)的指令(3條) 3.以直接地址為目的操作數(shù)的指令

10、(5條) 4.以間接地址為目的操作數(shù)的指令(3條), 5.十六位數(shù)據(jù)傳送指令(1條) 6.查表指令(2條) 7.累加器A與片外RAM傳送指令(4條) 8.棧操作指令(二條) 9.交換指令(4條),1.以累加器A為目的操作數(shù)的指令 (4條,即4種尋址方式),例:,MOV A,#30H ;(A)=30H MOV A, 30H ;(A)=11H MOV A,R1 ;(A)=11H MOV A,R1 ;(A)=30H,MOV A,#30H ;(A)=30H MOV A, 30H ;(A)=11H MOV A,R1 ;(A)=11H MOV A,R1 ;(A)=30H,2 、以寄存器Rn為目的操作數(shù)的指

11、令(3條),直接尋址和立這組指令的功能是把源操作數(shù)所指定的內(nèi)容送到當(dāng)前工作寄存器組R0R7中的某個寄存器。源操作數(shù)有寄存器尋址,即數(shù)尋址三種方式。,如:(A)=78H,(R5)=47H,(70H)=F2H,執(zhí)行指令:,MOV R5,A ;(A)R5, (R5)=78H MOV R5,70H ;(70H)R5, (R5)=F2H MOV R5,#A3H; A3HR5, (R5)=A3H 注意,在89C51指令系統(tǒng)中沒有“MOV Rn,Rn”傳送指令。,3 、以直接地址為目的操作數(shù)的指令(5條),4 、以間接地址為目的操作數(shù)的指令(3條),Ri,direct,Rn,#data,ACC,圖36 傳送

12、指令在片內(nèi)存儲器的操作功能,5、 十六位數(shù)據(jù)傳送指令(1條),這條指令的功能是把16位常數(shù)送入DPTR。DPTR由DPH和DPL組成。,6 、查表指令(2條),基地址寄存器+變址寄 存器間接尋址PC+A (程序存儲器0-64K),基地址寄存器+變址寄存 器間接尋址DPTR+A (程序存儲器0-64K),A寄存器,圖3-7 程序存貯器傳送(查表),例:,執(zhí)行下面程序段后結(jié)果如何?,MOV DPTR, #2000H ;(DPTR)=2000H MOV A , #0AH ;(A)=0AH MOVC A , A+DPTR ; (A)=(A)+(DPTR)=(200AH) 則:(A)=(200AH)=1

13、1H,例:,所以,最后結(jié)果為:(A)=01 (R0)=01 (PC)=1004,7、 累加器A與片外RAM傳送指令(4條),第2,4兩條指令以DPTR為片外數(shù)據(jù)存儲器16位地址指針,尋址范圍達(dá)64KB。其功能是DPTR所指定的片外數(shù)據(jù)存儲器與累加器A之間傳送數(shù)據(jù)。 第1,3兩條指令是用R0或R1作低8位地址指針,由P0口送出,尋址范圍是256字節(jié)。這兩條指令完成以R0或R1為地址指針的片外數(shù)據(jù)存儲器與累加器A之間的傳送數(shù)據(jù)。 上述四條指令的操作如圖3-8所示:,寄存器,寄存器間接尋址,寄存器間接尋址,R1.R0,DP,(,外,RAM0-255),(,外,RAM0-64K),圖,3-8,外部數(shù)據(jù)

14、存儲器傳送操作,例: 若:片內(nèi)RAM (30H)=01H,片外RAM (30H)=02H,執(zhí)行下面程序段后的結(jié)果如何。,8 、棧操作指令(二條),例:,繼續(xù)上例:,9、 交換指令(4條),(1)字節(jié)變換指令,例:,(2) 半字節(jié)交換指令,3.3.2 算術(shù)運(yùn)算指令, 1 .不帶進(jìn)位加法指令(四條) 2 .帶進(jìn)位加法指令(四條) 3 .帶借位減法指令(四條) 4 . 乘法指令(1條), 5、 除法指令(1條) 6、 加1指令(5條) 7、 減1指令(4條) 8、 十進(jìn)制調(diào)整指令(1條),1 、 不帶進(jìn)位加法指令(四條),例:,2 、帶進(jìn)位加法指令(四條),例:設(shè)(A)=0C3H,(R0)=0AAH

15、, (CY)=1。執(zhí)行指令“ADDC A,R0”后的結(jié)果 及標(biāo)志位如何?,例:編程,將(30H),(31H)單元中的數(shù)與 (40H),(41H)單元中的數(shù)相加,結(jié) 果存于(30H),(31H)單元中。,3 、帶借位減法指令(四條),這組指令的功能是從累加器A中減去源操作數(shù)所指出的數(shù)及進(jìn)位位CY的值,差保留在累加器A中。 由于89C51指令系統(tǒng)中沒有不帶借位的減法指令,如需要的話,可以在“SUBB”指令前用“CLR C”指令將Cy清0,這一點(diǎn)必須注意。,例:設(shè)(A)=0C9H,(R2)=54H,Cy=1。 執(zhí)行指令“SUBB A, R2”的結(jié)果如何?,4、 乘法指令(1條),該指令若乘積大于0F

16、FH,則OV置1,否則OV清0。Cy位總是被清0。,例:(A)=4EH,(B)=5DH, 執(zhí)行指令“MUL AB”后結(jié)果如何?,5、 除法指令(1條),6、 加1指令(5條),例: 若:(R1)=30H ,(30H)=11H 求執(zhí)行下面指令后的結(jié)果。INC R1; (30H)=12HINC R1 ; (R1)=31H,7、 減1指令(4條),8、 十進(jìn)制調(diào)整指令(1條),例: 設(shè)累加器A內(nèi)容為:01010110B(即為56的BCD碼),寄存器R3的內(nèi)容為01100111B(即67的BCD碼),CY內(nèi)容為1。求執(zhí)行下列指令后的結(jié)果。 ADDC A,R3; DA A;,3.3.3 邏輯操作指令,

17、1 .簡單操作指令(2條) 2 .移位指令(4條) 3 .累加器半字節(jié)交換指令 4. 邏輯“與”指令(6條) 5. 邏輯“或”指令(6條) 6 .邏輯“異或”指令(6條),1 .簡單操作指令(2條),(1) 累加器A清0指令,(2)累加器A取反指令,2 .移位指令(4條),(1)累加器A循環(huán)左移指令,(2) 累加器A循環(huán)右移指令,(3) 累加器A連同進(jìn)位位循環(huán)左移指令 RLCA ;,(4) 累加器A連同進(jìn)位位循環(huán)右移指令 RRCA ;,3 . 累加器半字節(jié)交換指令,4. 邏輯“與”指令(6條),這組指令中前四條指令是將累加器A的內(nèi)容和操作數(shù)所指出的內(nèi)容按位進(jìn)行邏輯“與”,結(jié)果存放在A中。 后兩

18、條指令是將直接地址單元中的內(nèi)容和操作數(shù)所指出的單元的內(nèi)容按位進(jìn)行邏輯“與”,結(jié)果存入直接地址單元中。若直接地址正好是I/O端口,則為“讀改寫”操作。,5. 邏輯“或”指令(6條),這組指令的功能是將兩個指定的操作數(shù)按位進(jìn)行邏輯“或”,前四條指令的操作結(jié)果存放在累加器A中,后兩條指令的操作結(jié)果存放在直接地址單元中。,6 .邏輯“異或”指令(6條),這組指令的功能是將兩個指定的操作數(shù)按位進(jìn)行“異或”,前四條指令的結(jié)果存放在累加器A中,后兩條指令的操作結(jié)果存放在直接地址單元中。 上述邏輯操作類指令歸納如圖。這類指令的操作均只影響標(biāo)志位P。,3.3.4 控制程序轉(zhuǎn)移類指令, 1 . 無條件轉(zhuǎn)移指令(4

19、條) 2 . 空操作指令(1條) 3 . 條件轉(zhuǎn)移指令(8條) 4 . 調(diào)用和返回指令,1、無條件轉(zhuǎn)移指令(4條),(1)短轉(zhuǎn)移指令,這條指令提供了11位地址,可在2K范圍內(nèi)無條件轉(zhuǎn)移到由a10-a0所指出的地址單元中。 因?yàn)橹噶钪惶峁┑?1位地址,高5位為原PC11-15位值,因此,轉(zhuǎn)移的目標(biāo)地址必須在AJMP指令后面指令的第一個字節(jié)開始的同一2K字節(jié)范圍內(nèi)。,(2) 長轉(zhuǎn)移指令,(3) 相對轉(zhuǎn)移(短轉(zhuǎn)移)指令,SJMP rel ;,0000 rel (相對地址),先(PC)+2 PC 后(PC)+rel PC,(4) 間接轉(zhuǎn)移指令,2 空操作指令(1條),3 條件轉(zhuǎn)移指令(8條),(1)

20、判零轉(zhuǎn)移指令,(2)比較轉(zhuǎn)移指令(4條),(3)循環(huán)轉(zhuǎn)移指令(2條),程序每執(zhí)行一次本指令,將第一操作數(shù)的字節(jié)變量減1,并判字節(jié)變量是否為零,若不為0,則轉(zhuǎn)移到目標(biāo)地址,繼續(xù)執(zhí)行循環(huán)程序段;若為0,則結(jié)束循環(huán)程序段的執(zhí)行,程序往下執(zhí)行。 其中,rel為相對于DJNZ指令的下一條指令的第一個字節(jié)相對偏移量,用一個帶符號的8位數(shù)表示。所以,循環(huán)轉(zhuǎn)移的目標(biāo)地址應(yīng)為DJNZ指令的下條指令地址和偏移量之和。,4 調(diào)用和返回指令,(1)短調(diào)用指令,例如:設(shè)符號地址“SUBRTN”所對應(yīng)的程 序存儲器實(shí)際地址為0345H,在 (PC)=0123H處 執(zhí)行指令A(yù)CALL SUBRTN,(2)長調(diào)用指令,例如:

21、設(shè)(SP)=07H,符號地址“SUBRTUN” 指向程序存儲器的5678H(PC)=0123H。從0123H處執(zhí)行指令 LCALL SUBRTUN,(3)返回指令(2條),3.3.5 位操作(布爾處理)類指令(17條), 1、位數(shù)據(jù)傳送指令(2條) 2、位修正指令(6條) 3、邏輯運(yùn)算指令(4條) 4、位條件轉(zhuǎn)移類指令(5條),在進(jìn)行位操作時,進(jìn)位標(biāo)志位CY布爾累加器(位累加器),簡寫成C。 位尋址區(qū): 片內(nèi)RAM字節(jié)地址20H2FH單元中連續(xù)的128位(位地址00H7FH)和部分特殊功能寄存器SFR。,位地址的表達(dá)方式:,接寫位地址: 如D4H; 點(diǎn)操作符號: 如PSW.4(D0H).4; 位名稱方式: 如RS1; 用戶定義名方式:如用偽指令bit,1、 位數(shù)據(jù)傳送指令(2條),2、位修正指令(6條),(1)位清0指令,(2)位置1指令(2條),(3)位取反指令(2條),3、

溫馨提示

  • 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

提交評論