第3章 MCS-51系列單片機的指令系統(tǒng)教材_第1頁
第3章 MCS-51系列單片機的指令系統(tǒng)教材_第2頁
第3章 MCS-51系列單片機的指令系統(tǒng)教材_第3頁
第3章 MCS-51系列單片機的指令系統(tǒng)教材_第4頁
第3章 MCS-51系列單片機的指令系統(tǒng)教材_第5頁
已閱讀5頁,還剩120頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2022-6-181本章內容本章內容尋址方式 指令的分類、格式及符號說明 分類指令 掌握MCS-51指令系統(tǒng)的各種尋址方式掌握每條指令的格式、功能及用法掌握指令的操作過程中操作數(shù)的變化情況以及對標志位的影響。學會正確選用指令完成簡單的任務學習目的學習目的 MCS-51指令系統(tǒng)共有255種操作代碼,用匯編語言表達時,只需熟記42種助記符就能表示33種指令功能共111條指令。 3.1.1 寄存器尋址 以寄存器的內容為操作數(shù)的尋址方式。 可進行寄存器尋址的寄存器有:工作寄存器R0R7、A、B、DPTR和進位CY。MOV A , R0 ;A R0R0(35H)A結果結果A=35H 指令碼中直接含有所需

2、的操指令碼中直接含有所需的操作數(shù),操作數(shù)字前加作數(shù),操作數(shù)字前加“#”“#”符號為符號為前綴。以區(qū)別直接地址。使用時一前綴。以區(qū)別直接地址。使用時一定要注意!定要注意! 3.1.2 立即尋址立即尋址 功能:功能:(1 1)將片內將片內RAM中中44H單元單元 的內容送累加器的內容送累加器A,屬于直屬于直 接尋址;接尋址; (2 2)則是把則是把44H這個數(shù)本這個數(shù)本 身送到累加器身送到累加器A,屬于立即尋址。屬于立即尋址。 (1)MOV A,44H ;A (44H) (2)MOV A, #44H ;A 44H 直接尋址指令的指令碼中含直接尋址指令的指令碼中含有操作數(shù)地址。有操作數(shù)地址。 3.1

3、.3 直接尋址功能:將片內RAM 56H單元中的內容34H送到累加器A中。如左圖3.1MOV A,56H ;A (56H) 機器碼:E5 5634H片內RAM 34H累加器A56H 圖3.1 指令傳遞 3.1.4 寄存器間接尋址 指令指定寄存器中的內容為操作數(shù)的地址。 工作寄存器R0、R1和專用寄存器DPTR可用于間接尋址,在寄存器前加“”符號作前綴。MOV A,R0 ;A R0MOV A,R0;A (R0)例如:R065H,65H26H如圖3.2所示,執(zhí)行結果A65H,執(zhí)行結果A26H。注意:是它區(qū)別寄存器尋址的標志。26H片內RAMA 65H 圖3.2 R065H3.1.5 相對尋址 相對

4、尋址是將程序計數(shù)器相對尋址是將程序計數(shù)器PCPC中的中的當前內容與指令第二字節(jié)所給出的數(shù)當前內容與指令第二字節(jié)所給出的數(shù)相加,其和為跳指令的轉移地址。相加,其和為跳指令的轉移地址。 程序存儲器A圖3-3 指令過程 PC 26H0000H2000H2001H 80H 26H 2028H02H 20H A L U2002H3.1.6 變址尋址 以DPTR和PC基址寄存器和累加器A變址寄存器的內容和為地址,尋址該地址單元,讀取數(shù)據(jù)。 (1)MOVCA,APC;A(APC)(2)MOVCA,ADPTR ; A(ADPTR) 執(zhí)行第一條時先使當前執(zhí)行第一條時先使當前PC值加值加1,然后把,然后把這個加這

5、個加1后的后的PC值和累加器值和累加器A中的偏移量相加中的偏移量相加,作為操作數(shù)地址,從該地址中取出操作數(shù)送,作為操作數(shù)地址,從該地址中取出操作數(shù)送入入A中。第二條過程與第一條指令類似,例如中。第二條過程與第一條指令類似,例如: 已知已知:片外片外ROM的的2006H單元中有一數(shù)單元中有一數(shù)34H,編寫程序用變址尋址方法把這個數(shù)送入編寫程序用變址尋址方法把這個數(shù)送入A中,試進中,試進行分析。行分析。 解:根據(jù)題目要求,基址可定為解:根據(jù)題目要求,基址可定為2000H,地地址偏移量則為址偏移量則為06H,程序如下:程序如下:MOVDPTR,2000H ;DPTR2000HMOVA,06H ;A0

6、6HMOVCA,ADPTR ;A34H程序存儲器A 圖3.4 DPTR20 06H0000H34H 2006H 00H A L U 如圖如圖3.4所示所示,這里這里A具有雙重作用,在具有雙重作用,在指令執(zhí)行前用來存放地址偏移量,指令執(zhí)行指令執(zhí)行前用來存放地址偏移量,指令執(zhí)行后為目的操作數(shù)。后為目的操作數(shù)。 3.1.7 位尋址 3.2.1 指令格式 操作碼操作碼用用MCS-51單片機所規(guī)定的助記符來單片機所規(guī)定的助記符來表示,它命令表示,它命令CPU作何種操作。作何種操作。 注釋注釋是對該指令作用或功能的說明,以便是對該指令作用或功能的說明,以便于閱讀,不參與編譯于閱讀,不參與編譯(可有可無,不

7、是必備的可有可無,不是必備的)。注釋部分前一定要用分號注釋部分前一定要用分號“;”隔開。隔開。操作數(shù)操作數(shù)分為目的操作數(shù)和源操作數(shù),常用符分為目的操作數(shù)和源操作數(shù),常用符號號(如寄存器、標號如寄存器、標號)、常量、常量(如立即數(shù)、地址值等如立即數(shù)、地址值等)來表示。操作碼和操作數(shù)之間用若干空格分隔,來表示。操作碼和操作數(shù)之間用若干空格分隔,而目的操作數(shù)和源操作數(shù)之間用逗號而目的操作數(shù)和源操作數(shù)之間用逗號“,”分隔。分隔。3.2.2 指令的三種表達形式 通常,指令有二進制,十六制和助記符等三通常,指令有二進制,十六制和助記符等三種表示形式種表示形式 1) 指令的二進制形式指令的二進制形式 具有難

8、讀、難寫、難記憶和難修改等缺點,因具有難讀、難寫、難記憶和難修改等缺點,因此人們通常不用它來編寫程序。此人們通常不用它來編寫程序。2) 指令的十六進制形式指令的十六進制形式 雖然讀寫方便,但仍不易為人們識別和修改,雖然讀寫方便,但仍不易為人們識別和修改,通常也不被用來編寫程序,通常也不被用來編寫程序,3) 指令的助記符形式指令的助記符形式 又稱為指令的匯編符或匯編語句形式,是一種又稱為指令的匯編符或匯編語句形式,是一種由英文單詞或縮寫字母形象表征指令功能的形式由英文單詞或縮寫字母形象表征指令功能的形式。 如果累加器如果累加器A中已有一個加數(shù)中已有一個加數(shù)20,那么能夠完,那么能夠完成成206并

9、把結果送入累加器并把結果送入累加器A的加法指令的的加法指令的:二進制形式二進制形式為為: 0011100000000110B;十六進制形式十六進制形式為為: 3806H;助記符形式助記符形式為:為: ADDA,06H ;A A+06H3.2.3 指令的字節(jié)數(shù) 1 1)無操作數(shù)單節(jié)指令)無操作數(shù)單節(jié)指令 這類指令的指令碼有操作碼字段和專門用來這類指令的指令碼有操作碼字段和專門用來指示操作數(shù)所在寄存器號的字段組成。指示操作數(shù)所在寄存器號的字段組成。 例如:八位數(shù)傳送指令例如:八位數(shù)傳送指令 MOVA,Rn其中,其中,n的取值范圍為的取值范圍為07。2 2)含有操作數(shù)寄存器號的單字節(jié)指令)含有操作數(shù)

10、寄存器號的單字節(jié)指令 雙字節(jié)指令含有兩個字,操作碼字節(jié)在前,雙字節(jié)指令含有兩個字,操作碼字節(jié)在前,操作數(shù)字節(jié)在后。操作數(shù)字節(jié)在后。 例如:八位數(shù)傳送指令例如:八位數(shù)傳送指令 MOV A , data ;Adata 這條指令的含義是指令碼第二字這條指令的含義是指令碼第二字節(jié)節(jié)data取出來存放到累加器取出來存放到累加器A中中 這類指令的指令碼的第一字節(jié)為操作碼,第這類指令的指令碼的第一字節(jié)為操作碼,第 二字節(jié)為操作數(shù)或操作數(shù)地址。二字節(jié)為操作數(shù)或操作數(shù)地址。 故三字節(jié)指令共可有如下四類故三字節(jié)指令共可有如下四類: :3.2.4 指令的分類及符號說明 MCS-51單片機可以分為五類:單片機可以分為

11、五類:1.指令分類指令分類2)算術運算指令算術運算指令4)位操作指令位操作指令3)邏輯運算指令邏輯運算指令1)數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令5)控制轉移指令控制轉移指令(1)Rn:表示當前選中的寄存器區(qū)的表示當前選中的寄存器區(qū)的8個個工作寄存器,工作寄存器,(n=0-7)中的一個。中的一個。(2)Ri:表示寄存器間接尋址,表示寄存器間接尋址,Ri只能只能 是是R0或或R1。 (3)#data:8位直接數(shù)據(jù),實際使用時位直接數(shù)據(jù),實際使用時 data應是應是00H-0FFH中的一個。中的一個。(4)#data16:表示包含在指令中的表示包含在指令中的16位立位立 即數(shù)。即數(shù)。(5)direct:表示表

12、示8位內部數(shù)據(jù)存儲器單位內部數(shù)據(jù)存儲器單 元的地址。元的地址。(6)Addr16:表示表示16位的目的地址。位的目的地址。(7)Addr11:表示表示11位的目的地址。位的目的地址。(8)Rel:表示表示8位帶符號的偏移量。位帶符號的偏移量。(9)DPTR:為數(shù)據(jù)指針,可用作為數(shù)據(jù)指針,可用作16位位 的地址寄存器。的地址寄存器。 (10)Bit:表示內部表示內部RAM或專用寄存器中或專用寄存器中 的直接尋址位。的直接尋址位。(11)A:累加器累加器ACC。(12)B:專用寄存器,用于專用寄存器,用于MUL和和DIV指指 令中。令中。(13):為間址寄存器或基址寄存器的前:為間址寄存器或基址寄

13、存器的前 綴。如綴。如Ri, A+PC,A+DPTR。(14)/:位操數(shù)的前綴,表示對該位操作位操數(shù)的前綴,表示對該位操作 數(shù)取反。如數(shù)取反。如/bit.(15)$:當前指令的地址。當前指令的地址。內部數(shù)據(jù)傳送指令(內部數(shù)據(jù)傳送指令(15條)條) 這類指令的源操作數(shù)和目的操作這類指令的源操作數(shù)和目的操作數(shù)地址都在單片機內部。數(shù)地址都在單片機內部。3.2.5 數(shù)據(jù)傳送指令已知:已知:R030H,試問執(zhí)行如下指令后試問執(zhí)行如下指令后累加器累加器A、R3、30H、31H單元中內容各是什么?單元中內容各是什么?MOV A, #20HMOV R3, #45HMOV R0, #46HMOV 31H, #4

14、7H執(zhí)行后,結果為執(zhí)行后,結果為: A=20H, R3=45H, (30H)=46H, (31H)= 已知:已知:(30H)=12H、(31H)=13H、R0=30H、R1=31H,試問執(zhí)行以下指令后試問執(zhí)行以下指令后A、30H、31H和和32H各是什么?各是什么? MOV A , R0 MOV R1,A MOV R0, #34h MOV 32h , R1執(zhí)行后,A=12H ,30H=34H ,31H=12H ,32H=12H PUSHdirect ;SP SP+1,(SP) (direct)POP direct ;(SP) direct, SP SP-1 第一條指令稱為壓棧指令,用于把dir

15、ect為地址的操作數(shù)傳送到堆棧中去。 第二條指令稱為出棧指令。 已知:(20H)=M1,(50H)=M2編程用堆棧指令把20H和50H單元中內容相交換。解:由堆棧所具備的原則,程序為:MOV SP ,#60H;棧底首地址為60HPUSH20H;SPSP1,61HM1PUSH50H;SPSP1,62HM2POP 20H ;20M2,SPSP-1=61H 該類指令是其核心,總共該類指令是其核心,總共49條,分為算術運算指令,邏輯運條,分為算術運算指令,邏輯運算和移位指令等三大類。算和移位指令等三大類。3.2.6 算邏運算和移位指令1、加法指令(13條)(1)不帶進位位(Cy)加法(4條)ADD A

16、, Rn ADD A, directADD A, RjADD A, #data 例例 3.10A= 0 1 0 1 1 0 1 0 Bdata= 0 1 1 0 1 0 1 1 B 90107+ ) 1 1 1 0 0 0 1 0 1 B 1CS1970CP 1AC2.帶進位位(Cy)加法(4條)ADDC A, RnADDC A, #dataADDC A, directADDC A, Ri3.加1指令(5條) INCA;AA1INCRn;RnRn1INCdirect;(direct)(direct)1INCRi;(Ri)(Ri)1INCDPTR;DPTRDPTR12、減法指令(8條)1)帶進位

17、位()帶進位位(Cy)減法指令減法指令(4條條)000 0011CyACF0Rs1 Rs0OV1P2 2)減)減1 1指令(指令(4 4條)條)DEC A ;AA-1DEC Rn ;RnRn-1DEC direct ;direct(direct)-1DEC Ri ;(Ri)(Ri)-11. BCD加法加法對對A中兩個壓縮中兩個壓縮BCD數(shù)相加之和調整為數(shù)相加之和調整為2位位BCD碼數(shù)。碼數(shù)。1)只能用在對)只能用在對BCD碼數(shù)進行碼數(shù)進行ADD或或ADDC操操 作后使用。作后使用。2)影響標志位:有進位時)影響標志位:有進位時 C1。A= 0 1 0 0 0 1 0 0 Bdata=1 0 0

18、 0 0 1 1 0 B 4486+ )0 1 1 0 1 0 0 0 0 B 1 1 0 1 0 0 1 1 0 0 0 0 B 0 1 1 0 0 1 0 1 0 B 130 1 1 0 B 低4位9, 加6調整高4位9,加6調整 MCS51單片機中沒有十進制減法調整指令,因此,這里的BCD減法運算必須采用BCD補碼運算法則。 例例 3.17 兩位BCD數(shù)的模100BCD減數(shù)加60調整BCD差BCD減數(shù)減數(shù)的補數(shù) 1 0 0 1 1 0 1 0 B0 0 1 0 0 1 0 1 B 1 1 1 1 0 1 0 1 B 1 1 0 1 0 1 0 1 0 1 0 1 B 0 1 1 1 0

19、1 0 1 B 1 0 0 0 0 0 0 0 B +4、乘法和除法指令MULAB ;ABBA ,形成標志 C0積積255 OV1DIVAB ;ABAB,形成標志乘法指令除法指令 C=0除數(shù)除數(shù)0 OV1除數(shù)除數(shù)0 OV0 解:求8位無符號單字節(jié)乘法,可直接利用乘法指令來實現(xiàn),程序為: 共共20條,分為與、或、異或、條,分為與、或、異或、A操作指令。操作指令。(一)與指令(一)與指令ANL A,RnANL A,RiANL A,directANL A,#dataANL direct, AANL direct, #data; A A Rn; A A (Ri); A A direct; A A #d

20、ata; direct direct A; direct direct #data(二)或指令(二)或指令 (三)異或指令(三)異或指令例例 3.21(四)累加器清零和取反指令(四)累加器清零和取反指令CPL ACLR A; A A; A 0 解:一個8位帶符號二進制機器數(shù)的補碼可以定義為反碼加“1”。為此,相應程序為:ORG 0030HMOV A ,40H ;A34HCPL A ;A/34HINC A ;A34H的補碼MOV 40H ,A ;結果送回40H單元SJMP $ ;停止RL A ;RR A ;A7A0ACyA7A0ACyA7A0AA7A0ARLC A ;RRC A ; 解:一個16

21、位二進制數(shù)擴大到二倍就等于是把它進行一次算術左移。由于MCS51單元片機的移位指令都是二進制8位的移位指令,因此16位數(shù)的移位指令必須用程序來實現(xiàn)。 算法為: M M+1 0 一、控制轉移指令一、控制轉移指令(17(17條條) )LJMPaddr16 ;Pcaddr16AJMP addr11 ;PcPC+2,PC100arrr11SJMP rel ;PcPC+2,PCPC+relJMP A+DPTR ;PcA+DPTR1、無條件轉移指令、無條件轉移指令3.2.7控制轉移和位操作指令F800HFFFFHF000HF7FFHE800HEFFFHE000HE7FFHD800HDFFFHD000HD7

22、FFHC800HCFFFHC000HC7FFHB800HBFFFHB000HB7FFHA800HAFFFHA000HA7FFH9800H9FFFH9000H97FFH8800H8FFFH8000H87FFH7800H7FFFH7000H77FFH6800H6FFFH6000H67FFH5800H5FFFH5000H57FFH4800H4FFFH4000H47FFH3800H3FFFH3000H37FFH2800H2FFFH2000H27FFH1800H1FFFH1000H17FFH0800H0FFFH0000H07FFH程序存儲器程序存儲器64K地址空間地址空間MCS-51系列單片機可以在系列

23、單片機可以在64KB地址范圍內尋地址范圍內尋址,絕對轉移指令的轉移范圍只在址,絕對轉移指令的轉移范圍只在PC當前值當前值所指的所指的2KB地址范圍內。地址范圍內。一頁:一頁: 256個地址單元個地址單元一區(qū):一區(qū): 8頁,共頁,共2KB地址單元;地址高地址單元;地址高5位決定區(qū)。位決定區(qū)。 64K: 32區(qū),區(qū),256頁。頁。 長轉移指令長轉移指令LJMP addr16 ; PC addr16 三字節(jié)指令,不影響標志位,可在三字節(jié)指令,不影響標志位,可在64KB地址范圍內無條件轉移。地址范圍內無條件轉移。 絕對轉移指令絕對轉移指令二字節(jié)指令,可在二字節(jié)指令,可在2KB地址范圍內轉移。地址范圍內

24、轉移。AJMP addr11 ; PC PC+2,PC10-0 addr11 解:設SZ=4100H,addr11=11010101101B,則根據(jù)上述指令碼格式可得絕對轉移指令的指令碼為: addr11 AJMPPCPC+1PC+2ROM2KB 1 1 0 0 0 0 0 1 1 0 1 0 1 1 0 1操作碼a9a10a11a7a0PC= 0 1 0 0 0 1 1 0 1 0 1 0 1 1 0 1 B=46ADHPC15 PC11a0 . . 短轉移短轉移機器碼: 80H rel SJMP rel ; PC PC+2+rel . 變址尋址轉移指令變址尋址轉移指令JMP A+DPTR;

25、 PC A+DPTR機器碼:機器碼: 73H JZ rel; A=0 PC PC+2+rel A 0 PC PC+2JNZ rel; A0 PC PC+2+rel A=0 PC PC+22、條件轉移指令、條件轉移指令累加器累加器A判零轉移判零轉移(2條條) CJNE A, #data, rel ;不相等轉移不相等轉移;#data=A, PC PC+3, C 0 ;#dataA, PC PC+3+rel, C 1CJNE A, direct,rel;不相等轉移不相等轉移 ;若若A=(direct) ,則則PCPC+3,C00 ;若若A(direct) ,則則PCPC+3+rel, C00 ;若若Adata ,則則PCPC+3+rel, C00 ;若若Rndata ,則則PCPC+3+rel, C00 ;若若(Ri)data ,則則PCPC+3+rel, C11DJNZ direct, rel ;(direct) (direct)-1 ;若(direct)0,則PCPC+3+rel ;若(direct)=0,則PCPC+3DJNZ Rn, rel;Rn Rn1 ;若Rn=0 則 PC PC+2 ;若Rn0 則PC PC+2+rel減一不為零轉移減一不為零轉移調用指令調用指令(2條條)ACALL addr11;PC PC+2 ;SP SP+1 ;(SP) PC70 ;S

溫馨提示

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

評論

0/150

提交評論