




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)原理與接口技術(shù)第3章 MCS-51單片機(jī)指令系統(tǒng)7/27/20221共51本章教學(xué)要求熟悉MCS-51單片機(jī)指令系統(tǒng)的分類、格式;熟悉MCS-51指令系統(tǒng)的七種尋址方式;掌握MCS-51指令系統(tǒng)的數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算、轉(zhuǎn)移操作、布爾運(yùn)算等指令的功能;掌握MCS-51指令系統(tǒng)的各種指令對(duì)寄存器資源的占用情況。第3章 MCS-51單片機(jī)指令系統(tǒng)7/27/20222共51本章目錄3.1 指令系統(tǒng)簡(jiǎn)介3.1.1 指令系統(tǒng)的分類3.1.2 指令格式3.1.3 指令中的常用符號(hào)3.1.4 尋址方式第3章 MCS-51單片機(jī)指令系統(tǒng)3.2 指令系統(tǒng)3.2.1 數(shù)據(jù)傳送指令3.2.2 算術(shù)運(yùn)算指
2、令3.2.3 邏輯運(yùn)算指令3.2.4 控制轉(zhuǎn)移指令3.2.5 位操作指令習(xí)題與思考題7/27/20223共513.1 指令系統(tǒng)簡(jiǎn)介指令系統(tǒng) 計(jì)算機(jī)所有指令的集合,稱為該計(jì)算機(jī)的指令系統(tǒng),它是表征計(jì)算機(jī)性能的重要標(biāo)志。每種計(jì)算機(jī)都有它自己特有的指令系統(tǒng)。指令是指計(jì)算機(jī)執(zhí)行某種操作(如傳送數(shù)據(jù)、做算術(shù)運(yùn)算等)的命令。-指令系統(tǒng)7/27/20224共51要讓計(jì)算機(jī)工作,就得向計(jì)算機(jī)發(fā)出指令。指令的格式是機(jī)器碼指令格式,如:75905B ,即數(shù)字格式。另一種指令格式,即匯編指令格式,如:MOV P1, #5BH-指令的兩種格式3.1 指令系統(tǒng)簡(jiǎn)介7/27/20225共51-MCS-51匯編語言指令格式
3、操作碼 操作數(shù)1 ,操作數(shù)2 ;注釋MCS-51單片機(jī)的匯編語言使用40多種助記符表征30多種指令功能。MCS-51單片機(jī)能夠識(shí)別并執(zhí)行的指令共有111條。這111條指令,構(gòu)成了MCS-51單片機(jī)的指令系統(tǒng)。3.1 指令系統(tǒng)簡(jiǎn)介7/27/20226共51-特點(diǎn)1) 指令執(zhí)行時(shí)間短。只需1個(gè)機(jī)器周期的指令有64條,2個(gè)機(jī)器周期的指令有45條,而4個(gè)機(jī)器周期的指令僅有2條(既乘法和除法指令)。2) 指令字節(jié)少。單字節(jié)指令有49條,雙字節(jié)指令有46條,三字節(jié)指令有16條。3) 位操作指令極為豐富,這體現(xiàn)了MCS-51單片機(jī)具有面向控制的特點(diǎn)。3.1 指令系統(tǒng)簡(jiǎn)介7/27/20227共513.1.1
4、指令系統(tǒng)的分類 MCS-51單片機(jī)能夠識(shí)別并執(zhí)行的指令共有111條。按指令所占字節(jié)數(shù)、指令執(zhí)行時(shí)間和指令功能進(jìn)行分類。1按指令所占字節(jié)數(shù)分類 1) 單字節(jié)指令(49條) 2) 雙字節(jié)指令(46條) 3) 三字節(jié)指令(16條)-按指令所占存儲(chǔ)空間分類7/27/20228共512按指令執(zhí)行時(shí)間分類1) 單周期指令(65條)2) 雙周期指令(44條)3) 四周期指令(2條)3.1.1 指令系統(tǒng)的分類-按指令執(zhí)行時(shí)間可分類7/27/20229共511) 數(shù)據(jù)傳送類指令(29條)2) 算術(shù)運(yùn)算類指令(24條)3) 邏輯運(yùn)算類指令(24條)4) 控制轉(zhuǎn)移類指令(17條)5) 位操作類指令(17條)3.1.
5、1 指令系統(tǒng)的分類-按指令功能分類3按指令功能分類7/27/202210共513.1.2 指令格式 指令由操作碼和操作數(shù)組成。操作碼用來規(guī)定要執(zhí)行的操作的性質(zhì),操作數(shù)為指令的操作提供數(shù)據(jù)和地址。1指令的基本格式符號(hào)地址: 操作碼 操作數(shù)1 ,操作數(shù)2 ,操作數(shù)3 ;注釋 其中符號(hào)地址和操作碼之間用“:”作為分隔符,也可再加上若干空格。操作碼和操作數(shù)之間用空格作為分隔符。操作數(shù)之間用“,”作為分隔符。注釋之前用“;”作為分隔符。-基本格式7/27/202211共51一條指令必須在一行中寫完。例如:MAIN:MOV A,#10H ;主程序段MAIN為符號(hào)地址;MOV為操作碼;A、#10H為二個(gè)操作
6、數(shù);最后是注釋。 指令在送入計(jì)算機(jī)執(zhí)行之前,必須先轉(zhuǎn)換成機(jī)器語言形式。轉(zhuǎn)換成機(jī)器語言的過程稱為匯編,匯編有機(jī)器匯編和手工匯編兩種方法。3.1.2 指令格式-基本格式7/27/202212共513.1.3 指令中的常用符號(hào) 為了便于閱讀指令,MCS-51指令助記符中的一些常用符號(hào)約定如下。Rn:表示當(dāng)前工作寄存器R0R7中的一個(gè)。Ri:表示寄存器間接尋址,常作間接尋址的地址指針。其中Ri代表R0和R1寄存器中的一個(gè)。direct:表示內(nèi)部數(shù)據(jù)存貯器單元的地址及特殊功能寄存器SFR的地址,對(duì)SFR而言,既可使用它的物理地址,也可直接使用它的名字。7/27/202213共51#date:表示8位立即
7、數(shù),即8位常數(shù),取值范圍為#00H#0FFH。date16:表示16位立即數(shù),即16位常數(shù),取值范圍為#0000H#0FFFFH。addr16:表示16位地址。addr11:表示11位地址。rel:用補(bǔ)碼形式表示的地址偏移量,取值范圍為-128+127。bit:表示內(nèi)部RAM和SFR中的具有位尋址功能的位地址。3.1.3 指令中的常用符號(hào)7/27/202214共51:表示間接尋址寄存器或基址寄存器的前綴符號(hào)。$:表示當(dāng)前指令的地址。/:位操作數(shù)的前綴,表示對(duì)該位操作數(shù)取反,如:/bit。(x):表示存儲(chǔ)單元x的內(nèi)容。(x):表示以寄存器或存儲(chǔ)單元x的內(nèi)容作為地址的存儲(chǔ)單元的內(nèi)容。:表示數(shù)據(jù)傳送
8、方向。3.1.3 指令中的常用符號(hào)7/27/202215共513.1.4 尋址方式 如何找到參與運(yùn)算的操作數(shù)據(jù)或數(shù)據(jù)所在的地址稱為尋址方式。所以尋址方式是在地址范圍內(nèi)如何找到所需要的操作數(shù)的地址。 MCS-51指令系統(tǒng)的尋址方式主要有立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、基址加變址尋址、相對(duì)尋址和位尋址等七種。7/27/202216共51 立即尋址是將操作數(shù)直接寫在指令中,作為指令的一部分存放在代碼段里,位置在程序存儲(chǔ)器中。立即尋址中的操作數(shù),稱為立即數(shù)。例如:MOV A, #30H ;30HA1.立即尋址3.1.4 尋址方式-立即尋址7/27/202217共512.直接尋址 直接尋
9、址是將操作數(shù)的地址直接存放在指令中。這種尋址方式的操作數(shù)指的是內(nèi)部數(shù)據(jù)存儲(chǔ)器中存放數(shù)據(jù)的地址,或存放數(shù)據(jù)的一個(gè)特殊功能寄存器地址。例如:MOV A, 30H ;(30H)A3.1.4 尋址方式-直接尋址7/27/202218共51直接尋址方式可訪問的范圍1) 特殊功能寄存器。這部分存儲(chǔ)單元既可以用單元地址給出,也可以用寄存器符號(hào)的形式給出。如:MOV A, 90H 或 MOV A, P1為同一條指令的兩種寫法(特殊功能寄存器只能用直接尋址方式訪問)。2) 內(nèi)部數(shù)據(jù)存儲(chǔ)器的低128個(gè)字節(jié)單元。直接以單元地址的形式給出對(duì)于8032/8052等單片機(jī),其內(nèi)部高128字節(jié)RAM(80HFFH)不能用直
10、接尋址方式訪問。3.1.4 尋址方式-訪問范圍7/27/202219共513) 位地址空間片內(nèi)RAM中20H2FH中的128個(gè)位地址,以及SFR中的11個(gè)可進(jìn)行位尋址的寄存器中的位地址(可位尋址的特殊功能寄存器有B、ACC、PSW、IP、IE、SCON、TCON、P0P3)。4) 在一些程序控制指令中,可采用直接尋址方式提供程序轉(zhuǎn)移的目標(biāo)地址。3.1.4 尋址方式-訪問范圍直接尋址方式可訪問的范圍7/27/202220共51-寄存器尋址寄存器尋址是指操作數(shù)存放在寄存器中,并且尋址時(shí)的寄存器已隱含在指令的操作碼中。例如:MOV A, R53.1.4 尋址方式3.寄存器尋址7/27/202221共
11、51寄存器尋址方式的尋址范圍:(1) 4個(gè)工作寄存器組共32個(gè)通用寄存器(在指令中只能使用當(dāng)前寄存器組)(2) 部分特殊功能寄存器。如A,B,DPTR。-寄存器尋址3.1.4 尋址方式7/27/202222共51-寄存器尋址4.寄存器間接尋址寄存器間接尋址是指操作數(shù)據(jù)存放在以寄存器內(nèi)容為地址的單元中。如:MOV A, R0 ;(R0)A指令功能為將R0所指出的內(nèi)部RAM單元內(nèi)容送入累加器A中,執(zhí)行過程如圖所示。圖中設(shè)R0=60H。3.1.4 尋址方式7/27/202223共51寄存器間接尋址的尋址范圍:1) 內(nèi)部低128字節(jié)單元(只能使用R0、R1作間址寄存器)。2) 外部數(shù)據(jù)存儲(chǔ)器(64KB
12、字節(jié),使用DPTR作間址寄存器。另外,外部低128B單元也可用R0、R1作間址寄存器尋址)。3) 在堆棧操作指令(PUSH、POP)中,以堆棧指針SP作間址寄存器,尋址空間為片內(nèi)RAM。3.1.4 尋址方式-尋址范圍7/27/202224共51-基址變址尋址基址變址尋址是指操作數(shù)存放在以變址寄存器和基址寄存器的內(nèi)容相加形成的數(shù)為地址的單元中。其中累加器A作變址寄存器、程序計(jì)數(shù)器PC或寄存器DPTR作基址寄存器。基址加變址尋址方式常用于查表操作。如:MOVC A, A+PC ;PC+1PC,(A+PC)AMOVC A, A+DPTR ;(A+DPTR)A3.1.4 尋址方式5.基址變址尋址7/2
13、7/202225共51相對(duì)尋址是將程序計(jì)數(shù)器PC的當(dāng)前值與指令第二字節(jié)給出的偏移量相加,從而形成轉(zhuǎn)移的目標(biāo)地址。例如:JC 80H ;C=1則跳轉(zhuǎn)-相對(duì)尋址3.1.4 尋址方式6.相對(duì)尋址7/27/202226共51-位尋址位尋址是指對(duì)片內(nèi)RAM中20H2FH中的128個(gè)位地址,以及SFR中的11個(gè)可進(jìn)行位尋址的寄存器中的位地址尋址(可位尋址的特殊功能寄存器有B、ACC、PSW、IP、IE、SCON、TCON、P0P3)。例如:MOV C, 20H此指令是將RAM中位尋址區(qū)20H位地址中的內(nèi)容,送給位累加器Cy。位尋址指令不同于字節(jié)地址尋址指令,例如:MOV A, 20H 3.1.4 尋址方式
14、7.位尋址7/27/202227共51-位尋址的表示形式1) 直接使用位地址包括位尋址區(qū)的位地址00H7FH和部分特殊功能寄存器的位地址。例如,PSW寄存器第2位的位地址為D2H。2) 位名稱表示法專用寄存器中的一些尋址位是有符號(hào)名的,對(duì)其進(jìn)行位尋址時(shí)可用其符號(hào)名,例如,PSW寄存器的第2位可用OV表示。3) 單元地址加位表示法例如,2F單元的第1位,可表示為2FH.1。再如,D0H單元(PSW)的第2位,可表示為D0H.2。3.1.4 尋址方式7/27/202228共514) 專用寄存器名稱加位表示法例如,PSW寄存器的第2位可表示為:PSW.2。對(duì)于可位尋址的特殊功能寄存器,上面4種表示法
15、是等效的。以讀取PSW第二位為例的4種位尋址指令如下:MOV C, 0D2H ;直接使用位地址尋址MOV C, OV ;使用位名稱尋址MOV C, 0D0H.2 ;使用單元地址加位表示法尋址MOV C, PSW.2 ;使用專用寄存器名稱加位表示法尋址3.1.4 尋址方式-位尋址的表示形式7/27/202229共51在MCS-51單片機(jī)的指令系統(tǒng)中,指令對(duì)哪一個(gè)存儲(chǔ)器空間進(jìn)行操作,是由指令的操作碼和尋址方式確定的。1)對(duì)程序存儲(chǔ)器只能采用立即尋址和基址加變址尋址方式;2)對(duì)特殊功能寄存器只能采用直接尋址方式,不能采用寄存器間接尋址; 3.1.4 尋址方式-總結(jié)7/27/202230共513)對(duì)8
16、032/8052等單片機(jī)內(nèi)部RAM的高128個(gè)字節(jié)(80HFFH),只能采用寄存器間接尋址,不能使用直接尋址方式;4)對(duì)位操作指令只能對(duì)位尋址區(qū)操作;5)外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器只能用MOVX指令訪問;6)內(nèi)部RAM的低128個(gè)字節(jié)(00H7FH)既能用直接尋址,也能用間接尋址。3.1.4 尋址方式-總結(jié)7/27/202231共51存儲(chǔ)空間對(duì)應(yīng)的尋址方式3.1.4 尋址方式-尋址范圍7/27/202232共513.2 指令系統(tǒng)MCS-51的數(shù)據(jù)傳送指令共有29條。助記符有MOV、MOVC、MOVX、XCH、XCHD、PUSH、POP。數(shù)據(jù)傳送指令一般的操作是把源操作數(shù)傳送到目的操作數(shù),指令執(zhí)行完成
17、后,源操作數(shù)不變,目的操作數(shù)等于源操作數(shù)。如果要求在進(jìn)行數(shù)據(jù)傳送時(shí),目的操作數(shù)不丟失,則不能用直接傳送指令,而采用交換型的數(shù)據(jù)傳送指令。數(shù)據(jù)傳送指令不影響標(biāo)志Cy、AC和OV,但可能會(huì)對(duì)奇偶標(biāo)志P有影響。3.2.1 數(shù)據(jù)傳送類指令-傳送指令7/27/202233共51-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令7/27/202234共51-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令7/27/202235共51助記符 功能說明MOV A, Rn ;(Rn)ARn中的內(nèi)容送到累加器A中MOV A, direct ;(direct) A直接地址單元中的內(nèi)容送到 累加器A中MOV A, Ri;(Ri) A R
18、i內(nèi)容指向的地址單元中的 內(nèi)容送到累加器A中MOV A, #data;dataA立即數(shù)送到累加器A中功能:將源操作數(shù)指定內(nèi)容送到累加器A中。-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令1以累加器為目的操作數(shù)的指令(4條)7/27/202236共51助記符功能說明MOV Rn, A;(A)Rn 累加器A中的內(nèi)容送到寄存 器Rn中MOV Rn, direct;(direct) Rn直接尋址單元中的 內(nèi)容送到寄存器Rn中MOV Rn, #data;dataRn 立即數(shù)直接送到寄存器 Rn中功能:將源操作數(shù)指定的內(nèi)容送到所選定的工作寄存器Rn中。-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令2以寄存器Rn為目的
19、操作數(shù)的指令(3條)7/27/202237共51助記符 功能說明MOV direct, A ;(A)direct 累加器A中的內(nèi)容送到直接地址單元中MOV direct, Rn;(Rn)direct寄存器Rn中的內(nèi)容送到直接地址單元中MOV direct1, direct2 ;(direct2) direct1 直接地址單元2中的內(nèi)容送到直接地址1中MOV direct, Ri ;(Ri) direct以寄存器Ri中的內(nèi)容為地址的單元中內(nèi)容送到直接地址單元中MOV direct,#data ;datadirect 立即數(shù)送到直接地址單元中-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令3以直接地址為目
20、的操作數(shù)的指令(5條)7/27/202238共51功能:將源操作數(shù)指定的內(nèi)容送到由直接地址指出的片內(nèi)存儲(chǔ)單元中。如:MOV 20H, A;累加器A中的內(nèi)容送到20H直接地址單元中MOV 20H, R1;寄存器R1中的內(nèi)容送到20H直接地址單元中MOV 20H, 30H;30H直接地址單元中的內(nèi)容送到20H直接地址單元中MOV 20H, R1;以寄存器R1中的內(nèi)容為地址的單元中內(nèi)容送到20H直接地址單元中MOV 20H, #34H ;立即數(shù)送到20H直接地址單元中MOV P2, #34H;立即數(shù)送到P2直接地址單元中-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令7/27/202239共51助記符 功能
21、說明MOV Ri, A;(A)(Ri)累加器A中內(nèi)容送到以Ri中內(nèi)容為地址的RAM單元中MOV Ri, direct ;(direct) (Ri)直接地址單元中內(nèi) 容送到以Ri中內(nèi)容為地址的RAM單元中MOV Ri, #data ;data(Ri) 立即數(shù)送到以Ri中內(nèi)容 為地址的RAM單元中-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令4以間接地址為目的操作數(shù)的指令(3條)7/27/202240共51功能:將源操作數(shù)指定的內(nèi)容送到以R0或R1為地址指針的片內(nèi)RAM存儲(chǔ)單元中。如:MOV R0, A;累加器A中內(nèi)容送到以R0中內(nèi)容為 地址的RAM單元中MOV R1, 20H;20H單元中內(nèi)容送到以R
22、1中內(nèi)容為 地址的RAM單元中MOV R0, #34H ;立即數(shù)34H送到以R0中內(nèi)容為地 址的RAM單元中-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令7/27/202241共51助記符 功能說明MOV DPTR, #data16;dataHDPH,dataLDPL ;16位常數(shù)的高8位送到DPH,低8位送到DPL功能:將一個(gè)16位的立即數(shù)送到DPTR中去。其中高8位送入DPH,低8位送入DPL。如:MOV DPTR, #1234H;指令執(zhí)行后DPH中的值為 12H,DPL中的值為34H-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令516位數(shù)的傳遞指令(1條)7/27/202242共51如果我們分別向D
23、PH和DPL送數(shù),則結(jié)果也一樣。如下面兩條指令:MOV DPH, #12HMOV DPL, #34H就相當(dāng)于執(zhí)行了MOV DPTR, #1234H。MCS-51是一種8位機(jī),這是唯一的一條16位立即數(shù)傳遞指令。-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令7/27/202243共51助記符 功能說明MOVX A, Ri ;(Ri) A寄存器Ri指向的片外RAM單元中的內(nèi)容送到累加器A中MOVX Ri, A ;A(Ri)累加器A中內(nèi)容送到寄存器Ri指向的片外RAM單元中MOVX A, DPTR ;(DPTR) A數(shù)據(jù)指針指向的片外 RAM單元中的內(nèi)容送到累加器A中MOVX DPTR, A ;(A)(D
24、PTR)累加器A中內(nèi)容送到數(shù) 據(jù)指針指向的片外RAM單元中-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令6累加器A與片外RAM數(shù)據(jù)傳送指令(4條)7/27/202244共51功能:在MCS-51中,與外部存儲(chǔ)器RAM打交道的只可以是A累加器。所有需要送入外部RAM的數(shù)據(jù)必須通過A傳送,而所有要讀入的外部RAM中的數(shù)據(jù)也必須通過A讀入。在此我們可以看出內(nèi)外部RAM的區(qū)別,內(nèi)部RAM間可以直接進(jìn)行數(shù)據(jù)傳遞,而外部RAM則不行。例如,要將外部RAM中某一單元(假設(shè)為0100H單元的數(shù)據(jù))送入另一個(gè)單元(假設(shè)為0200H單元),則必須先將0100H單元中的內(nèi)容讀入A,然后再送到0200H單元中去。-傳送指令
25、列表3.2.1 數(shù)據(jù)傳送類指令7/27/202245共51要讀或?qū)懲獠縍AM,必須要知道16位的RAM地址。在后兩條指令中,地址是被直接放在DPTR中的。而前兩條指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址,此時(shí),高8位地址要由P2口來提供。使用時(shí)應(yīng)先將要讀或?qū)懙牡刂匪腿隓PTR或Ri(高8位地址送到P2口)中,然后再用讀/寫指令。-傳送指令列表3.2.1 數(shù)據(jù)傳送類指令7/27/202246共51例3-1 將外部RAM的100H單元中內(nèi)容送入外部RAM的200H單元中。MOVDPTR, #0100HMOVXA, DPTRMOVDPTR, #0200HMOVXDPTR,
26、 A-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送類指令7/27/202247共51助記符 功能說明MOVC A, A+DPTR ;(A)+(DPTR) A表格地址 ;單元中的內(nèi)容送到累加器A中MOVC A, A+PC;(PC)+1PC,(A)+(PC) A ;表格地址單元中的內(nèi)容送到累加器A中功能:將ROM中的數(shù)據(jù)送到A中。常用此指令來查一個(gè)已存儲(chǔ)在ROM中的數(shù)據(jù)表格。這組指令也稱為查表指令。-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送類指令7讀程序存儲(chǔ)器指令(2條)7/27/202248共51以DPTR或PC為基址,以A為變址,在不斷修改A中內(nèi)容(等值增量)的同時(shí),執(zhí)行該指令,實(shí)現(xiàn)對(duì)ROM中存儲(chǔ)的一塊區(qū)域數(shù)據(jù)的
27、讀取。以PC為基址時(shí),不用設(shè)置PC的值,只需根據(jù)A的內(nèi)容,就可以查出表格中的數(shù)據(jù)。但表格只能放在該條查表指令后面的256個(gè)單元之中,表格的大小受到限制,而且表格只能被一段程序所利用。而以DPTR為基址時(shí),表格的大小和位置可以在64 KB的ROM中任意安排,并且表格可被任意程序塊所共享。說明:查找到的結(jié)果放在A中,因此,這類指令執(zhí)行前后,A中的值不一定相同。-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送類指令7/27/202249共51例3-2 有一個(gè)110的平方表存放在0100H開始的ROM中,用DPTR和R0基址+變址的尋址方式實(shí)現(xiàn)查表功能,確定110(在R0中)的平方值。MOVDPTR, #0100H
28、MOVA, R0MOVCA, A+DPTR.ORG0100;ORG是指明后面數(shù)據(jù)塊的起始地址DB0,1, 4, 9, 16, 25, 36DB49, 64, 81, 100 ;DB是定義字節(jié)指令-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送類指令7/27/202250共51助記符 功能說明PUSH direct;(SP)+1SP,(direct) (SP);堆棧指針首先加1,直接尋址單元;中的數(shù)據(jù)送到堆棧指針SP所指的;單元中POP direct;(SP) direct,(SP) - 1SP;堆棧指針SP所指的單元中的數(shù)據(jù);送到直接尋址單元中,堆棧指針;SP再進(jìn)行減1操作-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送
29、類指令8堆棧操作(2條)7/27/202251共51功能:第1條為壓入堆棧指令,就是將direct中的內(nèi)容送入堆棧中;第2條為彈出堆棧指令,就是將堆棧中的內(nèi)容送回到direct中。如: MOVSP, #5FH MOVA, #100 MOVB, #20 PUSHACC PUSHB-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送類指令其中,PUSH ACC指令是這樣執(zhí)行的:將SP中的值加1,即變?yōu)?0H,然后將A中的值送到60H單元中,因此執(zhí)行完本條指令后,內(nèi)存60H單元中的值就是100。同樣,執(zhí)行PUSH B時(shí),是將SP中的值加1,即變?yōu)?1H,然后將B中的值送入到61H單元中,即執(zhí)行完本條指令后,61H單元
30、中的值變?yōu)?0。7/27/202252共51助記符 功能說明XCH A, Rn ;(A)(Rn)累加器與工作寄存器 Rn中的內(nèi)容互換XCH A, direct ;(A)(direct)累加器與直接地址 單元中的內(nèi)容互換XCH A, Ri ;(A)(Ri)累加器與工作寄存器 Ri所指存儲(chǔ)單容互換元中的內(nèi)容互換-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送類指令9交換指令(5條)7/27/202253共51XCHD A, Ri;(A.3A.0)(Ri.3Ri.0)累加器與工作寄存器Ri所指存儲(chǔ)單元中的低半字節(jié)內(nèi)容互換SWAP A;(A.3A.0)(A.7A.4)累加器中內(nèi)容高低半字節(jié)互換功能:前4條指令是把累
31、加器A中的內(nèi)容與源操作數(shù)所指的數(shù)據(jù)相互交換。最后一條指令將累加器A中的內(nèi)容高低半字節(jié)互換。-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送類指令7/27/202254共51例3-3 假設(shè)A中內(nèi)容為34H,R0指向的單元內(nèi)容為56H。執(zhí)行下列指令后看結(jié)果。MOV R6, #29H ;R6=29HXCH A, R6 ;A=29H,R6=34HSWAP A ;A=92HXCH A, R6 ;A=34H,R6=92HXCHD A, R0 ;A=36H,(R0)=54H-傳送指令應(yīng)用3.2.1 數(shù)據(jù)傳送類指令7/27/202255共513.2.2 算術(shù)運(yùn)算類指令MCS-51的算術(shù)運(yùn)算指令共有24條。助記符有ADD、A
32、DDC、SUBB、DA、INC、DEC、MUL、DIV。算術(shù)運(yùn)算主要是執(zhí)行加、減、乘、除法四則運(yùn)算。7/27/202256共513.2.2 算術(shù)運(yùn)算類指令-運(yùn)算指令列表7/27/202257共513.2.2 算術(shù)運(yùn)算類指令-運(yùn)算指令列表7/27/202258共513.2.2 算術(shù)運(yùn)算類指令-運(yùn)算指令對(duì)標(biāo)志位的影響7/27/202259共51例3-4 設(shè)1067H存在于R1R0中,30A0H存在于R3R2中,計(jì)算R1R0+R3R2,結(jié)果存于R5R4中。MOV A, R0ADD A, R2;R0+R2A和CyMOV R4, AMOV A, R1ADDC A, R3;R1+R3+CyA和CyMOV
33、R5, A R1 R0+R3 R2 R5 R43.2.2 算術(shù)運(yùn)算類指令-運(yùn)算指令應(yīng)用7/27/202260共51例3-5 設(shè)A=12H,R0=33H,(21H)=32H,(34H)=22H,DPTR=1234H。連續(xù)執(zhí)行下面指令后看相應(yīng)寄存器和單元中的結(jié)果。INC A;A=13HINC R0;R0=34HINC 21H;(21H)=33HINC R0;(34H)=23HINC DPTR;DPTR=1235H3.2.2 算術(shù)運(yùn)算類指令-運(yùn)算指令應(yīng)用7/27/202261共513.2.3 邏輯運(yùn)算類指令邏輯運(yùn)算和移位指令共有24條,助記符有ANL、ORL、XRL、CLR、CPL、RL、RLC、R
34、R、RRC。有與、或、異或、求反、左/右移位、清0等邏輯操作,有直接、寄存器和寄存器間址等尋址方式。這類指令一般不影響程序狀態(tài)字(PSW)標(biāo)志。MCS-51指令系統(tǒng)的邏輯運(yùn)算指令見表3-5。7/27/202262共51邏輯運(yùn)算類指令列表7/27/202263共51邏輯運(yùn)算類指令列表7/27/202264共51助記符 功能說明ORL A, Rn ;(A)(Rn)AORL A, direct ;(A)(direct)AORL A, Ri ;(A)(Ri)AORL A, #data ;(A)dataAORL direct, A ;(direct)(A)directORL direct, #data
35、;(direct)datadirect 3.2.3 邏輯運(yùn)算類指令1邏輯或指令(6條)7/27/202265共513.2.3 邏輯運(yùn)算類指令功能:將兩個(gè)單元中的內(nèi)容執(zhí)行邏輯或操作。如果目的操作數(shù)的直接地址是I/O地址,則為“讀修改寫”操作。如:MOVA, #45H;A=45HMOVR1, #25H;R1=25HMOV25H, #39H;(25H)=39HORLA, R1;45H39H = 7DH, A = 7DHORL25H, #13H;39H13H = 3BH, (25H) = 3BHORL25H, A;3BH7DH =7FH, (25H) = 7FH7/27/202266共513.2.3
36、邏輯運(yùn)算類指令助記符 功能說明ANL A, Rn ;(A)(Rn)AANL A, direct ;(A)(direct)AANL A, Ri ;(A)(Ri)AANL A, #data ;(A)dataAANL direct, A ;(direct)(A)directANL direct, #data ;(direct)datadirect2邏輯與指令(6條)7/27/202267共513.2.3 邏輯運(yùn)算類指令功能:將兩個(gè)單元中的內(nèi)容執(zhí)行邏輯與操作。如果目的操作數(shù)的直接地址是I/O地址,則為“讀修改寫”操作。如:MOVA, #45H;A=45HMOVR1, #25H;R1=25HMOV25H
37、, #79H;(25H)=79HANLA, R1;45H79H = 41H, A = 41HANL25H, #15H;79H15H = 11H, (25H) = 11HANL25H, A;11H41H = 01H, (25H) = 01H7/27/202268共513.2.3 邏輯運(yùn)算類指令助記符 功能說明XRL A, Rn;(A)(Rn)A XRL A, direct ;(A) (direct)AXRL A, Ri;(A) (Ri)AXRL A, #data;(A)dataAXRL direct, A;(direct) (A)directXRL direct, #data;(direct)
38、datadirect3邏輯異或指令(6條)7/27/202269共513.2.3 邏輯運(yùn)算類指令功能:將兩個(gè)單元中的內(nèi)容執(zhí)行邏輯異或操作。如果直接地址是I/O地址,則為“讀修改寫”操作。如:MOVA, #45H;A=45HMOVR1, #25H;R1=25HMOV25H, #39H;(25H)=39HXRLA, R1;45H39H = 7CH, A = 7CHXRL25H, #13H;39H13H = 2AH, (25H) = 2AHXRL25H, A;2AH7CH =56H, (25H) = 56H7/27/202270共513.2.3 邏輯運(yùn)算類指令 助記符 功能說明清零:CLR A ;0
39、A,這條指令將累加器A中的內(nèi)容清零。取反:CPL A ;/(A)A,這條指令將累加器A中的內(nèi)容按位取反。如:若A=5CH,執(zhí)行 CPL A后的結(jié)果是A=A3H。4清零與取反指令(2條)7/27/202271共513.2.3 邏輯運(yùn)算類指令RL A ;累加器A中的內(nèi)容向左環(huán)移1位RLC A ;累加器A中的內(nèi)容帶進(jìn)位標(biāo)志位向左環(huán)移1位5循環(huán)移位指令(4條)7/27/202272共513.2.3 邏輯運(yùn)算類指令RR A ;累加器A中的內(nèi)容向右環(huán)移1位RRC A;累加器A中的內(nèi)容帶進(jìn)位標(biāo)志位向右環(huán)移1位5循環(huán)移位指令(4條)7/27/202273共513.2.3 邏輯運(yùn)算類指令功能:對(duì)累加器A中的內(nèi)容
40、進(jìn)行簡(jiǎn)單的邏輯操作。除了帶進(jìn)位標(biāo)志位的移位指令外,其他都不影響Cy,AC,OV等標(biāo)志位。 如:若A=5CH,Cy=1, 執(zhí)行RLC A后,結(jié)果為 A=B9H,Cy=0,P=1。對(duì)RLC和RRC指令,在Cy=0時(shí):RLC相當(dāng)于乘以2,RRC相當(dāng)于除以2。5循環(huán)移位指令(4條)7/27/202274共513.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移指令有17條,助記符有:ACALL、LCALL、RET、RETI、AJMP、LJMP、SJMP、JMP、CJNE、DJNZ、JZ、JNZ、NOP。控制轉(zhuǎn)移指令用于控制程序的流向,所控制的范圍即為程序存儲(chǔ)器區(qū)間。7/27/202275共51控制轉(zhuǎn)移類指令列表3.2.
41、4 控制轉(zhuǎn)移類指令7/27/202276共513.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令列表7/27/202277共513.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令列表7/27/202278共51 MOV DPTR, #TAB ;將TAB代表的地址送入DPTR JMP A+DPTR;跳轉(zhuǎn) TAB: AJMP ROUT0;A=0時(shí),跳轉(zhuǎn)到ROUT0TAB+2: AJMP ROUT1;A=2時(shí),跳轉(zhuǎn)到ROUT1TAB+4: AJMP ROUT2;A=4時(shí),跳轉(zhuǎn)到ROUT2TAB+6: AJMP ROUT3;A=6時(shí),跳轉(zhuǎn)到ROUT3.ROUT0:.ROUT1: .ROUT2: .ROUT3: .3.2.
42、4 控制轉(zhuǎn)移類指令例3-6 利用間接轉(zhuǎn)移指令實(shí)現(xiàn)散轉(zhuǎn)程序結(jié)構(gòu)。7/27/202279共51例3-7 條件轉(zhuǎn)移程序結(jié)構(gòu)舉例。MOVA, R0JZL1MOVR1, #00HAJMPL2L1:MOVR1, #0FFHL2:SJMPL2在執(zhí)行上面這段程序前,如果R0=0,結(jié)果是R1=0FFH;如果R00,結(jié)果是R1=00H。把上面例子中的JZ改成JNZ后,如果R0=0,結(jié)果是R1=00H;如果R00,結(jié)果是R1=0FFH。3.2.4 控制轉(zhuǎn)移類指令7/27/202280共51 MOV A, R0 CJNE A, #10H, L1 ;如R010H,則轉(zhuǎn)移至標(biāo)號(hào)L1 MOV R1, #0 ;如R0=10H,則不轉(zhuǎn)移,00HR1 AJMP L3L1: JC L2 ;如Cy=1,即R010H,0AAHR1 AJMP L3L2: MOV R1, #0FFH ;R010H,則R1=0AAH;如果R010H,則R1=0FFH。3.2.4 控制轉(zhuǎn)移類指令例3-8 比較R0中的數(shù)是否大于10H。7/27/2022
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 發(fā)廊合資合伙協(xié)議書
- 土地確權(quán)分割協(xié)議書
- 醫(yī)院拆除房屋協(xié)議書
- 印刷轉(zhuǎn)讓合同協(xié)議書
- 商鋪拆遷補(bǔ)償協(xié)議書
- 商品購(gòu)銷合同協(xié)議書
- 區(qū)域黨建聯(lián)建協(xié)議書
- 雙方組團(tuán)旅游協(xié)議書
- 合作銷售合作協(xié)議書
- 員工工傷補(bǔ)償協(xié)議書
- 加油站職業(yè)危害防治計(jì)劃和實(shí)施方案
- 路面彎沉溫度修正系數(shù)
- 山東省濟(jì)南市槐蔭區(qū)2024屆中考聯(lián)考化學(xué)試題含解析
- (完整版)xx中學(xué)“雙積雙評(píng)”積分入團(tuán)實(shí)施方案
- 拖拉機(jī)和聯(lián)合收割機(jī)安全技術(shù)檢驗(yàn)合格證明
- 文化產(chǎn)業(yè)政策與法規(guī)
- 2023年危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位負(fù)責(zé)人和安全管理人員培訓(xùn)
- 第四講嬰幼兒情緒情感及社會(huì)功能的發(fā)育
- (完整word版)餐券模板
- 平野蒼流:打漁張引黃灌區(qū)開灌60周年紀(jì)念專輯
- 電梯安全風(fēng)險(xiǎn)管控清單
評(píng)論
0/150
提交評(píng)論