版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)學(xué)習(xí)第三章第1頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式單片機(jī)要執(zhí)行某種操作,用戶必須按照格式編寫指令,單片機(jī)才能識別并準(zhǔn)確操作。指令的編碼規(guī)則稱為指令格式。3.1.1指令的格式1.指令的一般格式MCS一51單片機(jī)指令的一般格式為:操作碼操作數(shù)。例如指令:74H30H。1)操作碼用來表示執(zhí)行什么樣的操作,例如傳送、加、減等。MCS一51系列單片機(jī)的操作碼為8位二進(jìn)制的機(jī)器碼,在指令中為第一字節(jié)。用機(jī)器碼寫成的指令是機(jī)器指令,也稱為指令代碼。下一頁返回第2頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式2)操作數(shù)表示參與操作的數(shù)據(jù)或數(shù)據(jù)的存儲地址,不同類型的指令,操作數(shù)的個(gè)數(shù)是不一樣的,可以有3個(gè)、2個(gè)、1個(gè)等。在具有多個(gè)操作數(shù)的指令中,把它們分別稱為第一操作數(shù)、第二操作數(shù)等。如果操作數(shù)是一個(gè)直接參加操作的數(shù)據(jù),這種操作數(shù)稱為立即數(shù);而大部分操作數(shù)存放于寄存器或數(shù)據(jù)存儲器的某個(gè)存儲單元,操作數(shù)字段僅指出操作數(shù)所在的寄存器或存儲器地址。2.常用指令格式編寫指令時(shí),要記住各種由“0”和“1”二進(jìn)制數(shù)組成的代碼和他們的含義是很困難的,既容易出錯(cuò),又不易檢查。所以常用的指令格式是以助記符表示的符號指令,也稱匯編語言,由標(biāo)號、操作碼助記符、操作數(shù)和注釋4個(gè)字段組成,格式如下:[標(biāo)號:]操作碼助記符[操作數(shù)1][,操作數(shù)2][;注釋]其中,方括號內(nèi)的項(xiàng)為任選項(xiàng),需要此項(xiàng)時(shí),指令中不寫方括號;兩操作數(shù)之間應(yīng)以逗號分開。上一頁下一頁返回第3頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式例如,指令:START:MoVA,#79H;A←79H1)標(biāo)號標(biāo)號是用戶定義的符號,由以字母開始的1~8個(gè)字符(字母或數(shù)字)組成,它代表指令的符號地址,通常在程序分支、轉(zhuǎn)移等所需要的地方加上一個(gè)標(biāo)號,并不是每條指令都必須有標(biāo)號。當(dāng)將指令轉(zhuǎn)換成機(jī)器指令時(shí),指令第一字節(jié)(也稱首字節(jié))的存儲單元地址值賦給該標(biāo)號。2)操作碼助記符助記符是一些代表操作含義的英文縮寫,一般由2~5個(gè)英文字母組成,如“MOV”表示“傳送”、“ADD”表示“加”等。操作碼助記符對應(yīng)的機(jī)器碼是指令的第一字節(jié),也是指令不可缺少的部分。3)操作數(shù)與機(jī)器指令格式中的操作數(shù)相似。4)注釋注釋是對本指令或本段程序的功能說明,便于對程序的閱讀理解,在轉(zhuǎn)換成機(jī)器指令時(shí)不予考慮。注釋的前面需加分號“;”。上一頁下一頁返回第4頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式單片機(jī)識別機(jī)器指令,編程人員使用符號指令,機(jī)器指令與符號指令之間有一一對應(yīng)的關(guān)系,絕沒有重復(fù)。各種指令的機(jī)器碼不需要記憶,編程人員可查閱機(jī)器指令與符號指令的映射表將符號指令譯成機(jī)器指令,這個(gè)過程稱為匯編;但更多的是用專門的軟件來完成匯編過程。3.1.2指令的分類MCS一51指令系統(tǒng)有33種操作功能。指令助記符與尋址方式組合,得到111種指令。分類如下:上一頁下一頁返回第5頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式
1.按字節(jié)數(shù)分類
1)單字節(jié)指令,有49條。
2)雙字節(jié)指令,有45條。
3)3字節(jié)指令,有17條。
2.按指令執(zhí)行時(shí)間分類
1)單周期指令,有64條。
2)雙周期指令,有45條。
3)四周期指令,乘、除各有1條。上一頁下一頁返回第6頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式3.按功能分類1)數(shù)據(jù)傳送指令,有28條。這類指令主要用于單片機(jī)片內(nèi)RAM和特殊功能寄存器SFR之間傳送數(shù)據(jù),也可以用于單片機(jī)片內(nèi)和片外存儲單元之間傳送數(shù)據(jù)。數(shù)據(jù)傳送指令是把源地址中操作數(shù)傳送到目的地址(或目的寄存器)的指令,在該指令執(zhí)行后源地址中的操作數(shù)不被破壞。源操作數(shù)有8位和16位之分,前者稱為8位數(shù)傳送指令,后者叫做16位數(shù)傳送指令。交換指令也屬于數(shù)據(jù)傳送指令,是把兩個(gè)地址單元中內(nèi)容相互交換。因此,這類指令中的操作數(shù)或操作數(shù)地址是互為“源操作數(shù)”和“目的操作數(shù)”的。上一頁下一頁返回第7頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式2)算術(shù)運(yùn)算指令,有24條。算術(shù)運(yùn)算指令用于對兩個(gè)操作數(shù)進(jìn)行加、減、乘、除等算術(shù)運(yùn)算。在兩個(gè)操作數(shù)中,一個(gè)應(yīng)放在累加器A中,另一個(gè)可以在某個(gè)寄存器或片內(nèi)RAM單元中,也可以放在指令碼的第二和第三字節(jié)中。指令執(zhí)行后,運(yùn)算結(jié)果便可保留在累加器A中,運(yùn)算中產(chǎn)生的進(jìn)位標(biāo)志、奇偶標(biāo)志和溢出標(biāo)志等皆可保留在PSW中。參加運(yùn)算的兩數(shù)可以是8位的,也可以是16位的。3)邏輯運(yùn)算和環(huán)移指令,有25條。這類指令包括邏輯運(yùn)算和環(huán)移兩類指令。邏輯操作指令用于對兩個(gè)操作數(shù)進(jìn)行邏輯乘、邏輯加、邏輯取反和異或等操作,大多數(shù)指令也需要把兩個(gè)操作數(shù)中的一個(gè)預(yù)先放入累加器A,操作結(jié)果也在累加器A中。環(huán)移指令可以對累加器A中的數(shù)進(jìn)行環(huán)移。環(huán)移指令有左環(huán)移和右環(huán)移之分,也有帶進(jìn)位位Cy和不帶進(jìn)位位Cy之分。上一頁下一頁返回第8頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式4)位操作指令,有12條。位操作指令又稱布爾變量操作指令,共分為位傳送、位置位、位運(yùn)算和位控制轉(zhuǎn)移指令等四類。其中,位傳送、位置位和位運(yùn)算指令的操作數(shù)不是以字節(jié)為單位進(jìn)行操作的,而是以字節(jié)中某位為單位進(jìn)行的;位控制轉(zhuǎn)移指令不是以檢測某個(gè)字節(jié)的結(jié)果為條件而轉(zhuǎn)移的,而是以檢測字節(jié)中的某一位的狀態(tài)來轉(zhuǎn)移的。5)控制轉(zhuǎn)移指令,有22條。控制轉(zhuǎn)移指令分為條件轉(zhuǎn)移、無條件轉(zhuǎn)移、調(diào)用和返回等指令。這類指令的共同特點(diǎn)是可以改變程序執(zhí)行的流向,或者是使CPU轉(zhuǎn)移到另一處執(zhí)行,或者是繼續(xù)順序地執(zhí)行。無論是哪一類指令,執(zhí)行后都會改變程序計(jì)數(shù)器PC中的值。上一頁下一頁返回第9頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式3.1.3指令的存放空間指令是單片機(jī)執(zhí)行某種操作的命令,用戶若要單片機(jī)完成一件事情,必須先編寫指令,再轉(zhuǎn)成機(jī)器碼形式,從鍵盤等設(shè)備輸入到程序存儲器存放。存放在程序存儲器的哪個(gè)空間,用戶應(yīng)首先給程序計(jì)數(shù)器PC一個(gè)首地址,指令就從這個(gè)首地址開始存放,一個(gè)字節(jié)存放到一個(gè)單元后,程序計(jì)數(shù)器PC自動加1,指令的下一字節(jié)存放在PC當(dāng)前值的地址單元。3.1.4指令常用的縮寫符號說明在描述MCS一51指令系統(tǒng)的功能時(shí),經(jīng)常使用一些縮寫符號,各符號的含義如下:(1)A累加器ACC。常用ACC表示其地址,用A表示其名稱。(2)AB累加器ACC和寄存器B組成的寄存器對。通常在乘、除法指令中出現(xiàn)。上一頁下一頁返回第10頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式(3)Rn(n=0~7),選定的當(dāng)前工作寄存器,范圍為R0~R7。(4)Ri(i=0或1),工作寄存器R0或R1。(5)@間接尋址符號,簡稱間址符,常與Ri配合用,如@Rl,表示指令對R1寄存器間接尋址。(6)#data8位立即數(shù),“#”表示后面的data是立即數(shù)而不是直接地址。(7)direct表示片內(nèi)RAM存儲單元的8位直接地址,立即數(shù)和直接地址可用二進(jìn)制碼表示,后綴為“B”;也可用十六進(jìn)制碼表示,后綴為“H”;如果是以字母開頭的十六進(jìn)制數(shù),在其前面應(yīng)加一個(gè)“0”。如,二進(jìn)制碼10101000B也可轉(zhuǎn)成十六進(jìn)制碼A8H,但必須寫成“0A8H”。上一頁下一頁返回第11頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式(8)@DPTR:表示以DPTR為數(shù)據(jù)指針的間接尋址,用于對外部64KRAM/ROM尋址。(9)rel以補(bǔ)碼形式表示的8位地址偏移量,范圍為-128~+127。(10)Bit位地址。(11)$:當(dāng)前指令的地址。指令中還經(jīng)常使用到下列符號,含義如下:
+加;
-減;*乘;/除;上一頁下一頁返回第12頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式∧邏輯與;∨邏輯或;⊕邏輯異或;<小于;>大于;<>不等于;←→取代或替換;(X)表示X寄存器或X地址單元中的內(nèi)容;((X))表示以X寄存器或X地址單元中的內(nèi)容為地址的存儲單元中的內(nèi)容;()將X寄存器的內(nèi)容取反;rrr機(jī)器指令三位值由工作寄存器Rn確定,RO~R7對應(yīng)的rrr分別為000~111。上一頁下一頁返回第13頁,課件共140頁,創(chuàng)作于2023年2月3.1指令格式例3—1已知數(shù)據(jù)存儲器各單元內(nèi)容如圖3—1所示,說明(50H)、(A)、()、((50H))各為多少?解(50H):表示地址為50H存儲單元里的內(nèi)容01110000B。(A):表示累加器A中的內(nèi)容,因A的地址為0EOH,所以(A)為00100001B。():表示地址為50H存儲單元里的內(nèi)容取反,為10001111B。((50H)):以50H存儲單元的內(nèi)容70H為地址的存儲單元內(nèi)的內(nèi)容,為00111001B。上一頁返回第14頁,課件共140頁,創(chuàng)作于2023年2月3.2尋址方式指令包含操作碼和操作數(shù),有些指令直接給出參與運(yùn)算和操作的數(shù),但更多指令只是以各種方式給出操作數(shù)所在的地址。單片機(jī)通過地址信息尋找操作數(shù)的方式,稱為尋址方式。尋址方式越多,表明計(jì)算機(jī)的功能越強(qiáng),靈活性越大。在MCS一51單片機(jī)中,操作數(shù)的存放范圍是很寬的,可以放在片外ROM/RAM中,也可以放在片內(nèi)ROM/RAM以及特殊功能寄存器SFR中。為了適應(yīng)這一操作數(shù)范圍內(nèi)的尋址,MCS一51的指令系統(tǒng)共使用了七種尋址方式,它們是立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。下一頁返回第15頁,課件共140頁,創(chuàng)作于2023年2月3.2尋址方式3.2.1立即尋址指令中的操作數(shù)只是數(shù)據(jù),而不是地址,這樣的操作數(shù)就稱為立即數(shù),立即數(shù)直接參與操作,這種尋址方式稱為立即尋址。其實(shí)立即尋址并沒有尋址過程。這類指令的立即數(shù)大多數(shù)是一個(gè)字節(jié)的8位二進(jìn)制數(shù)。指令中,操作數(shù)前有“#”符號,據(jù)此可以判定是立即尋址,并有相應(yīng)的操作碼。例如,指令:MOVA,#64H;A←64H這條指令的功能是把數(shù)據(jù)64H(立即數(shù))送到累加器A中,在MCS一51指令系統(tǒng)中有相應(yīng)操作碼為74H,立即尋址的示意如圖3—2所示,設(shè)程序計(jì)數(shù)器PC=70H。上一頁下一頁返回第16頁,課件共140頁,創(chuàng)作于2023年2月3.2尋址方式3.2.2直接尋址指令中直接給出操作數(shù)所在地址的尋址方式稱為直接尋址。例如,指令:MOVA,64H;A←(64H)這條指令的功能是把內(nèi)部數(shù)據(jù)存儲器地址為64H的存儲單元內(nèi)容送至累加器A,這個(gè)指令的操作碼為0E5H,直接尋址的示意圖如圖3—3所示,設(shè)程序計(jì)數(shù)器PC=38H。由圖可知,地址為64H的存儲單元內(nèi)容為87H,則指令執(zhí)行結(jié)果是將87H送到ACC。上一頁下一頁返回第17頁,課件共140頁,創(chuàng)作于2023年2月3.2尋址方式應(yīng)注意直接尋址方式與立即尋址方式的區(qū)別:雖然兩者指令的第二字節(jié)相同,但在助記符指令中相差一個(gè)“#”號,由于符號指令與機(jī)器指令有一一對應(yīng)的關(guān)系,故操作碼不同,所以執(zhí)行結(jié)果不一樣,而在操作碼中含有尋址方式的信息。3.2.3寄存器尋址由指令指出某一個(gè)寄存器的內(nèi)容作為操作數(shù),這種尋址方式稱為寄存器尋址。寄存器尋址對所選的工作寄存區(qū)R0~R7進(jìn)行操作,操作碼字節(jié)的低3位000~111指明了所用的寄存器。例如,指令:MOVA,R7;A←(R7)上一頁下一頁返回第18頁,課件共140頁,創(chuàng)作于2023年2月3.2尋址方式這條指令的功能是把寄存器R7的內(nèi)容送人累加器A中,但數(shù)據(jù)存儲器的4個(gè)工作寄存器區(qū)都有寄存器R7,并都有相應(yīng)地址,怎樣確定R7的地址呢?首先由程序狀態(tài)字寄存器(PSW)中的D3位和D4位決定寄存器區(qū),再與操作碼低3位組合(n=7,為111)形成地址0FH,就是工作寄存器區(qū)1區(qū)中的R7寄存器。寄存器尋址方式執(zhí)行過程如圖3—4所示。3.2.4寄存器間接尋址由指令指出某一個(gè)寄存器的內(nèi)容作為操作數(shù)的地址,這種尋址方式稱為寄存器間接尋址。特別注意:寄存器的內(nèi)容不是操作數(shù),而是操作數(shù)所在的存儲器地址。例如,指令:MOVA,@Ri這條指令中,i=0指RO;i=1,則指R1。上一頁下一頁返回第19頁,課件共140頁,創(chuàng)作于2023年2月3.2尋址方式指令功能是將以寄存器R0或R1內(nèi)容為地址的存儲單元中的數(shù)據(jù)送入A。執(zhí)行這條指令首先應(yīng)找到Ri地址,Ri的8位地址A7~A0中:A7A6A5=000,A2A1=00,A0由i決定,A4A3由程序狀態(tài)字寄存器PSW中D4D3位決定,其作用實(shí)際是選定工作寄存器區(qū)域。寄存器間接尋址執(zhí)行過程如圖3—5所示,圖中i=1,將以工作寄存器區(qū)l的R1內(nèi)容64H為地址的存儲單元的數(shù)據(jù)51H送人A。3.2.5變址尋址變址尋址也稱基地址寄存器加變址寄存器間接尋址,它是以程序計(jì)數(shù)器PC或數(shù)據(jù)指針DPTR作為基地址寄存器,以累加器A作為變址寄存器,把兩者內(nèi)容相加形成操作數(shù)的地址。這種尋址方式用于讀取程序存儲器中常數(shù)表,或訪問外部數(shù)據(jù)存儲器。例如,指令:MOVCA,@A+DPTR;A←((A)+(DPTR))上一頁下一頁返回第20頁,課件共140頁,創(chuàng)作于2023年2月3.2尋址方式這條指令的功能是把DPTR的內(nèi)容作為基地址,DPTR是16位寄存器,其高8位在DPH中,低8位在DPL中。把累加器A的內(nèi)容作為地址偏移量,兩者相加后得到16位地址,把該地址對應(yīng)的程序存儲器ROM單元中的內(nèi)容送到A中,A中原數(shù)據(jù)自動擦除。尋址過程示意圖如圖3—6所示。3.2.6位尋址MCS一51指令系統(tǒng)有一些指令是用于位的操作。位操作指令能對內(nèi)部RAM中的位尋址區(qū)和某些有位地址的特殊功能寄存器進(jìn)行位操作,也就是說可對位地址空間的每個(gè)位進(jìn)行位變量傳送、狀態(tài)控制、邏輯運(yùn)算等操作,常用的位處理器是程序狀態(tài)字寄存器的CY位。例如,指令:MOVC,06H;CY←(06H)上一頁下一頁返回第21頁,課件共140頁,創(chuàng)作于2023年2月3.2尋址方式C累加器只有一位,指令是位尋址方式,操作碼是0A2H,06H是位地址。指令含義是將內(nèi)部RAM的20H單元的D6位的內(nèi)容送入累加器C,其指令執(zhí)行過程如圖3—7所示。這條指令應(yīng)區(qū)別于指令“MOVA,06H”,A是8位累加器,意思是將RAM中06H單元的內(nèi)容送入A中,操作碼是0E5H。3.2.7相對尋址相對尋址以程序計(jì)數(shù)器PC的當(dāng)前值作為基地址,與指令中給定的相對偏移量rel相加,作為程序邏輯的轉(zhuǎn)移地址。這種尋址方式用于相對轉(zhuǎn)移指令中。上一頁返回第22頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令在MCS一51單片機(jī)中,數(shù)據(jù)傳送是最基本和最主要操作。數(shù)據(jù)傳送操作可以在片內(nèi)RAM和SFR內(nèi)進(jìn)行,也可以在累加器A和片外存儲器之間進(jìn)行。指令中必須指定傳送數(shù)據(jù)的源地址和目的地址,以便機(jī)器執(zhí)行指令時(shí)把源地址中內(nèi)容傳送到目的地址中,但不改變源地址中內(nèi)容。在這類指令中,除以累加器A為目的操作數(shù)寄存器指令會對奇偶標(biāo)志位P有影響外,其余指令執(zhí)行時(shí)均不會影響任何標(biāo)志位。MCS一51單片機(jī)的數(shù)據(jù)傳送指令共有28條,分為內(nèi)部數(shù)據(jù)傳送指令、外部數(shù)據(jù)傳送指令、堆棧操作指令和數(shù)據(jù)交換指令等四類。本節(jié)將分類進(jìn)行介紹,并給出相應(yīng)的機(jī)器代碼,以便相互對照加以理解。下一頁返回第23頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令3.3.1內(nèi)部數(shù)據(jù)傳送指令(15條)1.以A為目的操作數(shù)的指令這類指令的格式為:MOV[目的操作數(shù),][源操作數(shù)]1)指令與指令代碼指令指令代碼操作MOVA,Rn11101rrrA←(Rn)MOVA,direct11100101directA←(direct)MOVA,@Ri111001liA←((Ri))MOVA,#data01110100dataA←data上一頁下一頁返回第24頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令對Rn尋址的指令,其機(jī)器碼字節(jié)的低三位為rrr,對應(yīng)于8個(gè)工作寄存器之一,當(dāng)為000時(shí),表示RO;為001時(shí),表示R1;依次類推。2)指令功能這組指令的功能是把源操作數(shù)的內(nèi)容送入累加器A。3)源操作數(shù)尋址方式立即尋址;直接尋址;寄存器尋址;寄存器間接尋址等尋址方式。例3—2說明下列指令的功能及尋址方式。MOVA,R6MOVA,64HMOVA,@R0MOVA,#78H上一頁下一頁返回第25頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令解MOVA,R6;A←(R6),寄存器尋址MOVA,64H;A←(64H),直接尋址MOVA,@R0;A←((R0)),寄存器間接尋址MOVA,#78H;A←78H,立即尋址4)指令字節(jié)表面看來,這組指令由三部分組成:操作碼、A和源操作數(shù),但操作碼含有向A送數(shù)的信息,所以累加器A不占程序存儲器的存儲空間,故這個(gè)指令是兩字節(jié)指令。一般來說,不占程序存儲器的存儲空間的還有各區(qū)的工作寄存器。上一頁下一頁返回第26頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令2.以Rn為目的操作數(shù)的指令1)指令與指令代碼指令指令代碼操作MOVRn,A1111lrrrRn←(A)MOVRn,direct10101rrrdirectRn←(direct)MOVRn,#data0111lrrrdataRn←data2)功能這組指令的功能是將源操作數(shù)的內(nèi)容送入當(dāng)前工作寄存器區(qū)的R0~R7中的某一個(gè)寄存器。3)源操作數(shù)尋址方式立即尋址;直接尋址;寄存器尋址。上一頁下一頁返回第27頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令例3—4指出下列指令的功能和尋址方式。MOVR2,#64HMOVR3,64HMOVR7,A解MOVR2,#64H;R2←64H,立即尋址
MOVR3,64H;R3←(64H),直接尋址
MOVR7,A;R7←(A),寄存器尋址上一頁下一頁返回第28頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令3.以直接尋址的單元為目的操作數(shù)指令1)指令與指令代碼指令指令代碼操作MOVdirect,A11110101directdirect←(A)MOVdirect,Rn10001rrrdirectdirect←(Rn)MOVdirectl,direct210000101direct2directldirectl←(direct2)MOVdirect,@Ri100001lidirectdirect←((Ri))MOVdirect,#data01110101direct,datadirect←data上一頁下一頁返回第29頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令應(yīng)注意:“MOVdirectl,direct2”指令譯成指令代碼時(shí),源地址(direct2)在前,目的地址directl在后。2)功能這組指令的功能是把源操作數(shù)送人由直接地址指向的存儲單元,直接尋址時(shí),direct可以是特殊功能寄存器的地址、內(nèi)部RAM區(qū)的地址,因此允許對端口直接操作。例如,指令:“MOVP1,40H”的含義是將40H單元的內(nèi)容送入P1端口,機(jī)器指令為“100001010100000010010000”,是三字節(jié)指令。第一字節(jié)是操作碼,第二字節(jié)是源操作數(shù)的地址,第三字節(jié)是目的操作數(shù)P1的地址。3)源操作數(shù)尋址方式立即尋址;直接尋址;寄存器尋址;寄存器間接尋址。上一頁下一頁返回第30頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令例3—7若(64H)=70H,(A)=78H,說明執(zhí)行指令“MOV64H,A”的結(jié)果。解執(zhí)行后結(jié)果為(64H)=78H,(A)=78H不變。
4.以寄存器間接尋址的單元為目的操作數(shù)指令1)指令與指令代碼指令指令代碼操作MOV@Ri,A111101li(Ri)←(A)MOV@Ri,direct101001lidirect(Ri)←(direct)MOV@Ri,#data011101lidata(Ri)←data上一頁下一頁返回第31頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令2)功能本組指令是將源操作數(shù)送人以R0或R1內(nèi)容為地址的存儲單元中。3)源操作數(shù)尋址方式立即尋址;直接尋址;寄存器尋址。例3—10若(30H)=35H,(R1)=70H,說明執(zhí)行指令“MOV@R1,30H”的結(jié)果。解70H單元的內(nèi)容為35H,同時(shí)(30H)=35H,(R1)=70H不變。3.3.2外部數(shù)據(jù)傳送指令(7條)1.16位數(shù)據(jù)傳送指令1)指令與指令代碼指令指令代碼MOVDPTR,#datal610010000dataH8
操作
dataL8DPTR←datal6上一頁下一頁返回第32頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令2)功能把16位常數(shù)送入DPTR,16位的數(shù)據(jù)指針DPTR由DPH和DPL組成,執(zhí)行結(jié)果把高位立即數(shù)送入DPH,低位立即數(shù)送入DPL,本指令是三字節(jié)指令。2.外部ROM的字節(jié)傳送指令由于外部程序存儲器只讀不寫,因此數(shù)據(jù)傳送是單向的,即只從外部程序存儲器中讀出數(shù)據(jù),并且只能向累加器A傳送。這類指令共有兩條,均屬于變址尋址指令,因?qū)iT用于查表而又稱為查表指令。(1)指令MOVCA,@A十PC上一頁下一頁返回第33頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令本指令的指令代碼是10000011,為一字節(jié)指令,當(dāng)CPU讀取本條指令后,PC已自動加1,指向下一條指令的首字節(jié)的地址。如果該指令存放單元為1000H,則PC的當(dāng)前值為1001H。執(zhí)行該指令時(shí),把A的內(nèi)容作為無符號數(shù)和PC當(dāng)前內(nèi)容相加后得到一個(gè)16位的地址,并將該地址指出的程序存儲器單元內(nèi)容送到累加器A。而A的內(nèi)容從00H-0FFH共256個(gè),所以(A)和(PC)相加得到的地址只能在該查表指令以下256個(gè)單元地址內(nèi)?!癕OVC”中的“C”表示程序存儲器。例3—13設(shè)(A)=30H,執(zhí)行指令“1000H:MOVCA,@A+PC”的結(jié)果。解該指令將程序存儲器中1031H單元內(nèi)容送入累加器A中。上一頁下一頁返回第34頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令(2)指令MOVCA,@A+DPTR這條指令的指令代碼是10010011,它的操作是以DPTR作為基地址寄存器,由A中的無符號數(shù)與DPTR中的內(nèi)容相加得到一個(gè)16位的程序存儲器的地址,并將該地址的內(nèi)容送到A。例3—15設(shè)(DPTR)=8100H,(A)=40H,說明執(zhí)行指令后的結(jié)果。MOVCA,@A+DPTR解將程序存儲器中8140H單元內(nèi)容送人累加器A。該指令只與A的內(nèi)容相關(guān),與該指令存放的地址無關(guān),因此表格大小和位置可在64K字節(jié)程序存儲器中任意安排,只要在查表之前對DPTR和A賦值,就使一個(gè)表格可被各個(gè)程序所公用。上一頁下一頁返回第35頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令3.外部RAM的字節(jié)傳送指令1)指令與指令代碼指令指令代碼操作MOVXA,@DPTR11100000((DPTR))→AMOVXA,@Ri1110001i((Ri)+(P2))→AMOVX@DPTR,A11110000(A)→(DPTR)MOVX@Ri,A1111001i(A)→(Ri)十(P2)上一頁下一頁返回第36頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令
2)功能這組指令是將累加器A和外部擴(kuò)展的RAM的數(shù)據(jù)傳送,由于DPTR是16位地址指針,因此用DPTR間接尋址的指令尋址范圍是0~64K字節(jié);而Ri是8位寄存器,故用Ri間接尋址的指令尋址范圍是外部RAM的低256單元。外部RAM的數(shù)據(jù)傳送,只有通過累加器A來進(jìn)行。在片外容量大于256個(gè)單元時(shí),地址高8位由P2口輸出,而Ri中的地址作為低8位地址經(jīng)P0口輸出,這些(Ri)與(P2)組合后,可對片外0~64KB范圍尋址。例3—16將外部RAM30H單元的內(nèi)容送入內(nèi)部RAM20H的單元。解MOVR0,#30HMOVXA,@R0MOV20H,A上一頁下一頁返回第37頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令3.3.3堆棧操作指令(2條)在MCS一51內(nèi)部RAM中可以設(shè)定一個(gè)后進(jìn)先出的堆棧,地址為30H~7FH,堆棧指針SP中的內(nèi)容總是堆棧區(qū)中最后一個(gè)進(jìn)棧數(shù)據(jù)所在的存儲單元地址。堆棧操作包括進(jìn)棧和出棧兩種。1.進(jìn)棧指令與指令代碼指令指令代碼操作PUSHdirect11000000directSP←SP+1(SP)←(direct)這條指令首先將堆棧指針SP+1,然后把直接地址里的內(nèi)容傳送到堆棧指針SP指出的內(nèi)部RAM存儲單元中。上一頁下一頁返回第38頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令例3—18設(shè)(SP)=30H,(ACC)=60H,(B)=70H,執(zhí)行下列指令后結(jié)果怎樣?PUSHACCPUSHB解操作過程是:PUSHACC;(SP)+1,31H→SP,(ACC)→31HPUSHB;(SP)+1,32H→SP,(B)→32H結(jié)果為(31H)=60H,(32H)=70H,(sp)=32H上一頁下一頁返回第39頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令2.出棧指令與指令代碼指令指令代碼操作POPdirect11010000direct(SP)→directSP←SP-1這條指令的功能是將堆棧指針SP指出的內(nèi)部RAM單元的內(nèi)容送入直接地址指出的存儲單元中,堆棧指針SP減l。出棧指令用于恢復(fù)CPU現(xiàn)場。例3—19設(shè)(SP)=32H,(32H)=70H,(31H)=60H,執(zhí)行下述指令后結(jié)果怎樣?POPDPHPOPDPL上一頁下一頁返回第40頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令解操作過程是:POPDPH;((SP))→DPH,(SP)一l→SPPOPDPL;((SP))→DPL,(SP)一1→SP結(jié)果為(DPH)=70H,(DPL)=60H,所以,DPTR=7060H,(SP)=30H3.3.4數(shù)據(jù)交換指令(4條)數(shù)據(jù)交換指令共有4條,其中字節(jié)交換指令3條,半字節(jié)交換指令1條。1.字節(jié)交換指令1)指令與指令代碼指令指令代碼XCHA,Rn11001rrrXCHA,direct11000101directXCHA,@Ri1100011i上一頁下一頁返回第41頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令2)功能將累加器A的內(nèi)容和源操作數(shù)內(nèi)容相互交換。3)源操作數(shù)尋址方式寄存器尋址;直接尋址;寄存器間接尋址。例3一20設(shè)(A)=80H,(R1)=74H,(74H)=60H,(60H)=50H,(80H)=40H,順序執(zhí)行下列指令后結(jié)果怎樣?XCHA,R1XCHA,60HXCHA,@R1解執(zhí)行指令①結(jié)果:(A)=74H,(R1)=80H②結(jié)果:(A)=50H,(60H)=74H③結(jié)果:(A)=40H,(80H)=50H上一頁下一頁返回第42頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令2.半字節(jié)交換指令1)指令與指令代碼指令指令代碼XCHDA,@Ri110101li2)功能這條指令將A的低4位與R0或R1指出的RAM單元低4位相互交換,各自高4位不變。3)源操作數(shù)尋址方式為寄存器間接尋址。上一頁下一頁返回第43頁,課件共140頁,創(chuàng)作于2023年2月3.3數(shù)據(jù)傳送指令例3—22設(shè)(A)=15H,(R0)=30H,(30H)=40H,執(zhí)行下列指令后結(jié)果怎樣?XCHDA,@R0解執(zhí)行結(jié)果為:(A)=10H,(30H)=45H以上所述的均為傳送類指令,數(shù)據(jù)傳送指令對標(biāo)志位的影響:(1)只有PSW寄存器直接參加操作,被改寫了內(nèi)容的情況下,標(biāo)志位受影響。(2)PSW中P標(biāo)志位(奇偶校驗(yàn)位)總是追蹤累加器A的狀態(tài)。如果A中有奇數(shù)個(gè)1,則P=1,否則P=0。其他標(biāo)志位不受影響。上一頁返回第44頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令MCS一51指令系統(tǒng)的算術(shù)運(yùn)算指令比較豐富,包括加、減、乘、除法指令,數(shù)據(jù)運(yùn)算能力較強(qiáng)。3.4.1加法指令(14條)加法指令使用助記符“ADD”。1.不帶進(jìn)位的加法指令1)指令與指令代碼指令指令代碼ADDA,Rn00101rrrADDA,direct00100101directADDA,@Ri0010011iADDA,#data00100100data下一頁返回第45頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令2)功能將源操作數(shù)與累加器A的內(nèi)容相加,其結(jié)果放于累加器A中。3)源操作數(shù)的尋址方式寄存器尋址;直接尋址;寄存器間接尋址;立即尋址。4)對標(biāo)志位的影響加法運(yùn)算對程序狀態(tài)字寄存器PSW的各標(biāo)志位有一定的影響。①如果位7有進(jìn)位輸出,則CY=l,否則CY=0;②如果位3有進(jìn)位輸出,則AC=1,否則AC=0;③溢出標(biāo)志位OV=C6⊕C7,如果位6有進(jìn)位輸出而位7沒有或者位7有進(jìn)位而位6沒有,則OV=1,否則OV=0;④P標(biāo)志位始終跟蹤累加器A內(nèi)“1”的個(gè)數(shù),如果A中有奇數(shù)個(gè)“1”,則P=1。上一頁下一頁返回第46頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令例3—23設(shè)(A)=42H,(R0)=0FCH,說明執(zhí)行指令“ADDA,R0”的結(jié)果。解01000010+)1111110000111110因C6與C7均有進(jìn)位,故OV=0,結(jié)果有5個(gè)“1”,為奇數(shù),故P=1,AC=0,CY=1,(A)=3EH。上一頁下一頁返回第47頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令2.帶進(jìn)位加法指令1)指令與指令代碼指令指令代碼ADDCA,Rn00111rrrADDCA,direct00110101directADDCA,@Ri0011011iADDCA,#data00110100data2)功能這組指令同時(shí)把源操作數(shù)、進(jìn)位標(biāo)志位和累加器A的內(nèi)容相加,結(jié)果存放在累加器A中。上一頁下一頁返回第48頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令3)對PSW的影響如果位7有進(jìn)位輸出,則進(jìn)位標(biāo)志位CY為“1”;否則CY為“0”;如果位3有進(jìn)位輸出,則標(biāo)志位AC=1;若位3無進(jìn)位輸出,AC=0;如果位6有進(jìn)位輸出而位7沒有或者位7有進(jìn)位輸出而位6沒有,則溢出標(biāo)志位OV=1,否則OV=0。4)尋址方式與ADD指令相同。例3—25設(shè)(A)=85H,(20H)=0FFH,CY=1執(zhí)行指令“ADDCA,20H”的結(jié)果。解1000010111111111+)1(1)10000101則(A)=85H,CY=1,AC=l,P=1,OV=0上一頁下一頁返回第49頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令3.增量指令1)指令與指令代碼指令指令代碼INCA00000100INCRn00001rrrINCdireet00000101directINC@Ri0000011iINCDPTR101000112)功能這組指令是把源操作數(shù)加1,應(yīng)注意:當(dāng)用本指令修改輸出口P0~P3時(shí),原始口數(shù)據(jù)的值將從口鎖存器讀入,而不是從引腳讀入。上一頁下一頁返回第50頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令3)對標(biāo)志位影響若原來為0FFH,加1后將溢出為00H,對A的操作可能影響P外,不影響任何標(biāo)志。4)尋址方式直接尋址;寄存尋址;寄存器間接尋址。例3—26設(shè)(A)=0FFH,(R3)=0FH,(30H)=0FOH,(R0)=40H,(40H)=00H,執(zhí)行下列指令的結(jié)果。INCA;(A)+1→AINCR3;(R3)+1→R3INC30H;(30H)+l→30HINC@R0;((R0))+1→(R0)解(A)=00H,(R3)=10H,(30H)=0F1H,(R0)=40H不變,(40H)=01H,PSW狀態(tài)不改變。上一頁下一頁返回第51頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令4.十進(jìn)制調(diào)整指令1)指令與指令代碼指令指令代碼DAA110101002)功能若該指令上一條指令是一條加法指令,加數(shù)和被加數(shù)為十進(jìn)制BCD碼,相加結(jié)果不是十進(jìn)制的BCD碼,所以必須將結(jié)果調(diào)整為BCD碼,該指令自動選擇調(diào)整值00H、06H、60H、66H,將結(jié)果調(diào)整為十進(jìn)制BCD碼。上一頁下一頁返回第52頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令例3—27設(shè)(A)=56H,(R5)=67H,說明執(zhí)行指令后的結(jié)果。ADDA,R5DAA解01010110+)0110011110111101自動選擇66H與上述結(jié)果相加來調(diào)整如下:
10111101+)0110011000100011結(jié)果為(A)=23H,CY=1。上一頁下一頁返回第53頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令3.4.2減法指令(8條)1.帶進(jìn)位減法指令1)指令與指令代碼指令指令代碼SUBBA,Rn10011rrrSUBBA,direct10010101directSUBBA,@Ri100101liSUBBA,#data10010100data上一頁下一頁返回第54頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令2)功能這組指令功能是從累加器A中減去源操作數(shù)和進(jìn)位標(biāo)志,結(jié)果在累加器A中。3)對標(biāo)志位影響①如果位7需借位,則CY=1,否則CY=0;②如果位3需借位,則AC=1,否則AC=0;③如果位6需借位而位7不需借位或位7需借位而位6不需借位,則OV=1,否則OV=0。上一頁下一頁返回第55頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令4)源操作數(shù)尋址方式立即尋址;直接尋址;寄存器尋址;寄存器間接尋址。例3—28設(shè)(A)=0C9H,(R2)=5CH,CY=1,執(zhí)行指令“SUBBA,R2”的結(jié)果。解1100100101011100-)101101100結(jié)果:(A)=6CH,CY=0,AC=1(位3有借位),OV=1(位7無借位,位6有借位),P=0(結(jié)果有4個(gè)“1”)上一頁下一頁返回第56頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令2.減1指令1)指令與指令代碼指令指令代碼DECA00010100DECRn00011rrrDECdirect00010101directDEC@Ri000101li2)功能將源操作數(shù)減1,若原來為00H,減1后為0FFH,不影響標(biāo)志位;但(A)減1時(shí),將影響P標(biāo)志位。當(dāng)本指令用于修改輸出口,用作原始VI數(shù)據(jù)的值將從口鎖存器P0~P3讀入而不從引腳讀入。上一頁下一頁返回第57頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令例3—29設(shè)(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,說明執(zhí)行下列指令的結(jié)果。DECA;(A)-1→ADECR7;(R7)-l→R7DEC30H;(30H)-1→30HDEC@R1;((R1))-1→(R1)解結(jié)果為:(A)=0EH,(R7)=18H,(30H)=0FFH,(40H)=0FEH,P=1,不影響其他標(biāo)志。上一頁下一頁返回第58頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令3.4.3乘法指令(1條)1)指令與指令代碼指令指令代碼MULAB101001002)功能將累加器A和寄存器B中的8位無符號整數(shù)相乘,其中16位積的低位8位字節(jié)放在累加器A中,高8位字節(jié)放在寄存器B中。如果積大于255(0FFH),則置位溢出標(biāo)志OV,否則清0。進(jìn)位標(biāo)志CY總是清0。該指令執(zhí)行時(shí)間是4個(gè)機(jī)器周期。例3—30設(shè)(A)=50H,(B)=0AOH,執(zhí)行指令“MULAB”的結(jié)果。解結(jié)果為(B)=32H,(A)=00H,即為3200H。上一頁下一頁返回第59頁,課件共140頁,創(chuàng)作于2023年2月3.4算術(shù)運(yùn)算指令3.4.4除法指令(1條)1)指令與指令代碼指令指令代碼DIVAB100001002)功能把A中的8位無符號整數(shù)除以寄存器B的8位無符號整數(shù),所得的整數(shù)部分放在A中,余數(shù)放在B中。如果原來的B中的內(nèi)容為0,即除數(shù)為0,則A和B中的內(nèi)容不定,并使標(biāo)志位OV=1,表明除法沒有意義。在任何情況,CY都清“0”。該指令執(zhí)行時(shí)間是4個(gè)機(jī)器周期。上一頁返回第60頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令MCS一51指令系統(tǒng)的邏輯運(yùn)算和環(huán)移指令包括邏輯與、或、異或等指令,以及對累加器A進(jìn)行清0、取反、循環(huán)移位、半字交換等操作指令。3.5.1邏輯運(yùn)算指令(20條)這20條指令可以對兩個(gè)八位二進(jìn)制數(shù)進(jìn)行與、或、非和異或等邏輯運(yùn)算、常用來對數(shù)據(jù)進(jìn)行邏輯處理,使之適合于傳送、存儲和輸出打印等。在這類指令中,除以累加器A為目標(biāo)寄存器指令外,其余指令均不會影響PSW中任何標(biāo)志位。1.邏輯與指令指令助記符為“ANL”,表示是“AND”(與)和“LOG”(邏輯)的組合。1)指令與指令代碼下一頁返回第61頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令1)指令與指令代碼指令指令代碼ANLA,Rn0101lrrrANLA,direct01010101directANLA,@Ri0101011iANLA,#data01010100dataANLdirect,A01010010directANLdirect,#data01010011directdata上一頁下一頁返回第62頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令2)功能該組指令將源操作數(shù)和目的操作數(shù)之間按位進(jìn)行邏輯與操作,結(jié)果存放在目的操作數(shù)中。所謂“位”進(jìn)行邏輯與,是指兩個(gè)8位操作數(shù)的對應(yīng)位的兩個(gè)碼之間進(jìn)行相與,只有同為1,結(jié)果才是1。當(dāng)這條指令用于修改一個(gè)輸出口時(shí),作為原始口數(shù)據(jù)的值將從輸出口數(shù)據(jù)鎖存器(P0~P3)讀人,而不是讀引腳狀態(tài)。3)尋址方式立即尋址;寄存器尋址;直接尋址;寄存器間接尋址。例3—31設(shè)(A)=77H,(R0)=0DH,說明執(zhí)行指令“ANLA,R0”的結(jié)果。解01110111∧)000011010000010l結(jié)果為:(A)=05H。上一頁下一頁返回第63頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令指令助記符“ORL”,由“OR”(或)和“LOG”(邏輯)的組合。1)指令與指令代碼指令指令代碼ORLA,Rn01001rrrORLA,direct01000101directORLA,@Ri010001liORLA,#data01000100data0RLdirect,A01000010directORLdirect,#data01000011directdata上一頁下一頁返回第64頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令2)功能這組指令將源操作數(shù)和目的操作數(shù)之間按位進(jìn)行邏輯或操作,結(jié)果存到目的操作數(shù)。該指令與“邏輯與”類似,用于修改P0~P3數(shù)據(jù)時(shí),原始數(shù)據(jù)值為口鎖存器內(nèi)容,結(jié)果也存放于口鎖存器中。3)尋址方式立即尋址;寄存器尋址;直接尋址;寄存器間接尋址。例3—33設(shè)(P1)=51H,(A)=33H,說明執(zhí)行指令“ORLP1,A”的結(jié)果。解01010001∨)0011001101110011結(jié)果為(P1)=73H上一頁下一頁返回第65頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令3.邏輯異或指令指令助記符“XRL”,XR表示異或,比較的兩數(shù)碼,相同出0,不同出1,“L”表示“邏輯”。1)指令與指令代碼指令指令代碼XRLA,Rn01101rrrXRLA,direct01100101directXRLA,@Ri011001liXRLA,#data01100100dataXRLdirect,A01100010directXRLdirect,#data01100011directdata上一頁下一頁返回第66頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令2)功能這組指令將源操作數(shù)和目的操作數(shù)之間執(zhí)行按位的邏輯異或操作,結(jié)果存放到目的操作數(shù)中。同樣,對P1~P3口的數(shù)據(jù)修改,原始數(shù)據(jù)為口鎖存器內(nèi)容,結(jié)果也存放于口鎖存器中。3)尋址方式立即尋址;直接尋址;寄存器尋址;寄存器間接尋址。例3—35設(shè)(A)=64H,(R5)=0F7H,說明執(zhí)行指令“XRLA,R5”后的結(jié)果。解01100100⊕)1111011110010011結(jié)果為(A)=10010011即93H。上一頁下一頁返回第67頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令4.累加器清零和取反指令(1)清零指令CLRA該指令的指令代碼為11100100,功能是將累加器A清“0”,不影響CY、AC、OV等標(biāo)志。(2)取反指令CPLA該指令的指令代碼為11110100,功能是將累加器A中的每一位取反,原來為1的位變0,原來為0的位變1,不影響標(biāo)志位。例3—37設(shè)(A)=01010101B,說明執(zhí)行指令“CPLA”的結(jié)果。解結(jié)果為(A)=10101010B。上一頁下一頁返回第68頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令3.5.2環(huán)移指令(5條)1.左環(huán)移指令RLA該指令的指令代碼為00100011,該指令將累加器A的內(nèi)容向左循環(huán)移1位,位7位移人位0,不影響其他標(biāo)志位。如圖3—9所示。2.帶進(jìn)位左環(huán)移指令RLCA該指令的指令代碼為00110011,該指令將累加器A的內(nèi)容和進(jìn)位標(biāo)志一起向左環(huán)移一位,A中的D7位移入進(jìn)位位CY,CY的值移入A的DO位,不影響其他標(biāo)志位。如圖3—10所示。
上一頁下一頁返回第69頁,課件共140頁,創(chuàng)作于2023年2月3.5邏輯運(yùn)算和環(huán)移指令3.右環(huán)移指令RRA該指令的指令代碼為00000011,該指令的功能是將累加器A的內(nèi)容向右環(huán)移一位,DO位移入D7位,不影響標(biāo)志位。如圖3—11所示。4.帶進(jìn)位右環(huán)移指令RRCA該指令的指令代碼為00010011,該指令的功能是累加器ACC的內(nèi)容和進(jìn)位標(biāo)志一起向右環(huán)移一位,DO進(jìn)入CY,CY移入D7。如圖3—12所示。5.累加器A半字節(jié)交換指令SWAPA該指令的指令代碼為11000100,該指令的功能是將累加器A的高半字節(jié)(D7~D4)和低半字節(jié)(D3~DO)互換。上一頁返回第70頁,課件共140頁,創(chuàng)作于2023年2月3.6位操作指令在MCS一51系列單片機(jī)中,可以以程序狀態(tài)字寄存器的進(jìn)位位CY(PSW.7)作為累加器C,以數(shù)據(jù)存儲器(RAM)和特殊功能寄存器SFR內(nèi)的位尋址區(qū)的位單元作為操作數(shù),進(jìn)行位變量的傳送、修改和邏輯等操作。3.6.1位變量傳送指令(2條)1)位操作指令位操作指令的格式是:指令助記符[目標(biāo)位,][源位]指令指令代碼MOVC,bit10100010bitMOVbit,C10010010bit下一頁返回第71頁,課件共140頁,創(chuàng)作于2023年2月3.6位操作指令2)功能該指令把源位單元中的數(shù)據(jù)送到目標(biāo)位單元中,其中一個(gè)操作數(shù)必須是位累加器C,另一個(gè)可以是任何直接尋址的位,也就是說位變量的傳送必須經(jīng)過C。3)尋址方式位尋址。例3—38說明下列指令功能。MOVC,13HMOVP1.0,C解①“13H”是位地址,它處于數(shù)據(jù)存儲器22H的存儲單元的D3位,執(zhí)行指令就是將這一位的數(shù)碼送到累加器C。②將CY中的數(shù)碼送到P1的口鎖存器的D0位。上一頁下一頁返回第72頁,課件共140頁,創(chuàng)作于2023年2月3.6位操作指令3.6.2位變量修改指令(6條)1)指令與指令代碼指令指令代碼CLRC11000011CLRbit11000010bitCPLC10110011CPLbit10110010bitSETBC11010011SETBbit11010010bit上一頁下一頁返回第73頁,課件共140頁,創(chuàng)作于2023年2月3.6位操作指令2)功能這組指令將操作數(shù)指出的位清“0”、取反、置“1”,不影響其他標(biāo)志?!癈LR”是清0,“CPL”是取反,“SETB”是置“1”。例3—39說明下列指令的功能。CLRCCLR35HCPL08HSETBP1.5解CLRC;0→CYCLR35H;0→(26H).5CPL08H;→(21H).0SETBP1.5;1→P1.5上一頁下一頁返回第74頁,課件共140頁,創(chuàng)作于2023年2月3.6位操作指令3.6.3位變量邏輯操作指令(4條)1.位變量邏輯與指令1)指令與指令代碼指令指令代碼ANLC,bit10000010bitANLC,/bit10110000bit2)功能如果源位的內(nèi)容為邏輯0,則CY清0,否則CY保持不變?!埃痓it”的斜線表示用位的內(nèi)容的邏輯非為源值,但不影響本身值,不影響別的標(biāo)志。3)尋址方式位尋址。上一頁下一頁返回第75頁,課件共140頁,創(chuàng)作于2023年2月3.6位操作指令例3—40設(shè)P1為輸入口,P3.0作輸出口,說明執(zhí)行下列命令的結(jié)果。MOVC,P1.0ANLC,P1.1ANLC,/P1.2MOVP3.0,C解結(jié)果為(P3.0)=(P1.0)∧(P1.1)∧()2.位變量邏輯或指令1)指令與指令代碼指令指令代碼ORLC,bit01110010bitORLC,/bit10100000bit上一頁下一頁返回第76頁,課件共140頁,創(chuàng)作于2023年2月3.6位操作指令2)功能如果源位的值為1,則進(jìn)位標(biāo)志CY=1,否則進(jìn)位標(biāo)志CY保持原來狀態(tài)。斜線“/”表示邏輯非,但源位本身保持不變。例3—4l設(shè)P1口為輸出口,說明執(zhí)行下列指令組后的結(jié)果。MOVC,00H;(20H.0)→CORLC,01H;(C)V(20H.1)→CORLC,02H;(C)V(20H.2)→CORLC,03H;(C)v(20H.3)→CORLC,04H;(C)V(20H.4)→CORLC,05H;(C)V(20H.5)→CORLC,06H;(C)V(20H.6)→CORLC,07H;(C)V(20H.7)→CMOVP1.0,C;(C)→P1.0解結(jié)果為RAM的20H單元中只要有一位為1,P1.0輸出高電平。上一頁返回第77頁,課件共140頁,創(chuàng)作于2023年2月3.7控制轉(zhuǎn)移指令單片機(jī)在執(zhí)行程序的過程中,有時(shí)需要改變程序的執(zhí)行順序,跳轉(zhuǎn)到指定的單元地址再順序執(zhí)行。這些使單片機(jī)在執(zhí)行程序的過程中產(chǎn)生跳轉(zhuǎn)的指令就是控制轉(zhuǎn)移指令。3.7.1無條件轉(zhuǎn)移指令(4條)1.長跳轉(zhuǎn)指令1)長跳轉(zhuǎn)指令LJMPaddrl6
指令代碼為00000010a15~a8a7~a0。2)功能該指令是三字節(jié)指令,執(zhí)行時(shí)把16位地址中的高8a15~a8位送入PCH,低8位a7~a0送人PCL中,無條件地轉(zhuǎn)向指定地址。該指令不影響任何標(biāo)志,轉(zhuǎn)移的范圍可達(dá)64K字節(jié),故稱長轉(zhuǎn)移指令。下一頁返回第78頁,課件共140頁,創(chuàng)作于2023年2月3.7控制轉(zhuǎn)移指令2.短跳轉(zhuǎn)指令1)短跳轉(zhuǎn)指令A(yù)JMPaddrll指令代碼為al0a9a800001a7~a0。2)功能該指令是二字節(jié)的指令,操作數(shù)“addrll”應(yīng)是一個(gè)十六位二進(jìn)制數(shù),表示轉(zhuǎn)向的目標(biāo)地址,其中“1l”表示低11位,說明轉(zhuǎn)向的目標(biāo)地址范圍由低11位組合決定,故跳轉(zhuǎn)的范圍是2K字節(jié)。該指令在2K字節(jié)范圍內(nèi)將程序轉(zhuǎn)移到目標(biāo)地址。因程序是按PC指針來執(zhí)行的,執(zhí)行完這條指令后PC按一定規(guī)律形成轉(zhuǎn)移的目標(biāo)地址,實(shí)現(xiàn)轉(zhuǎn)移。為保證程序的轉(zhuǎn)移正確執(zhí)行,編寫指令時(shí)應(yīng)保證操作數(shù)“addrl1”的高5位與PC當(dāng)前值的高5位相同。PC當(dāng)前值為該指令首址加2。上一頁下一頁返回第79頁,課件共140頁,創(chuàng)作于2023年2月3.7控制轉(zhuǎn)移指令
例3—42判別下列指令能否正確執(zhí)行?①2000H:AJMP274FH②3000H:AJMP3A4FH解①PC當(dāng)前值=2000H+2H=2002H,高5位為00100,指令設(shè)定的目標(biāo)地址為274FH,高5位為00100,二者相等,故指令能正確執(zhí)行。②PC當(dāng)前值=3000H+2H=3002H,高5位為00110,指令設(shè)定的目標(biāo)地址為3A4FH,高5位為00111,二者不相等,故指令不能正確執(zhí)行。上一頁下一頁返回第80頁,課件共140頁,創(chuàng)作于2023年2月3.7控制轉(zhuǎn)移指令3.相對轉(zhuǎn)移指令1)相對轉(zhuǎn)移指令SJMPrel指令代碼為10000000rel。2)功能該指令是無條件跳轉(zhuǎn)指令,執(zhí)行時(shí)程序計(jì)數(shù)器指針PC+2后成為PC當(dāng)前值,并把有符號數(shù)“rel”值加到PC上,并計(jì)算出轉(zhuǎn)向目標(biāo)地址。rel是個(gè)8位二進(jìn)制數(shù),以補(bǔ)碼表示,稱為“偏移量”,最高位是符號位,正數(shù)為0,負(fù)數(shù)為“1”,余下部分共7位,表示128個(gè)單元。所以rel表示-128~127之間的256個(gè)單元。所以轉(zhuǎn)向的目標(biāo)地址可以在這條指令前128字節(jié)列后127字節(jié)之間。上一頁下一頁返回第81頁,課件共140頁,創(chuàng)作于2023年2月3.7控制轉(zhuǎn)移指令3)偏移量的計(jì)算①目標(biāo)地址大于PC當(dāng)前值rel=目標(biāo)地址一源地址一2=地址差一2:②目標(biāo)地址小于PC當(dāng)前值rel=[目標(biāo)地址一源地址一2]補(bǔ)根據(jù)補(bǔ)碼的計(jì)算規(guī)則可得:rel=0FEH一地址差。對于三字節(jié)相對轉(zhuǎn)移指令只需把原式中的“2”改為“3”即可計(jì)算rel值。一般來說,偏移量不需手工計(jì)算,在匯編程序中都有偏移量計(jì)算功能,本書實(shí)驗(yàn)部分偏移量計(jì)算就是由實(shí)驗(yàn)儀自動完成,而匯編程序中“rel”部分給出符號地址。上一頁下一頁返回第82頁,課件共140頁,創(chuàng)作于2023年2月3.7控制轉(zhuǎn)移指令4.基寄存器加變址寄存器間接轉(zhuǎn)移指令1)指令JMP@A+DPTR指令代碼為01110011。2)功能把累加器A中8位無符號數(shù)與數(shù)據(jù)指針DPTR中的16位數(shù)相加,其結(jié)果作為下條地址送人PC,并且不改變累加器A和數(shù)據(jù)指針內(nèi)容,也不影響標(biāo)志,利用這條指令也能實(shí)現(xiàn)程序的轉(zhuǎn)移。例3—43執(zhí)行下列指令組后的PC值為多少?MOVA,#20HMOVDPTR,#1000HJMP@A+DPTR解順序執(zhí)行完這3條指令后,PC=1020H。上一頁下一頁返回第83頁,課件共140頁,創(chuàng)作于2023年2月3.7控制轉(zhuǎn)移指令該指令的轉(zhuǎn)移目標(biāo)地址不是指令中直接給出的,而是隨著A中的內(nèi)容在以DPTR為起始地址(可任意設(shè)定)的256個(gè)字節(jié)范圍內(nèi)變化。3.7.2條件轉(zhuǎn)移指令(13條)條件轉(zhuǎn)移指令是指滿足一定條件時(shí),程序才進(jìn)行相對轉(zhuǎn)移,若條件不滿足時(shí)則順序執(zhí)行下面的指令,目的地址在以下一條指令的起始地址為中心的256字節(jié)范圍中(-128~127)。當(dāng)條件滿足時(shí),把PC加到指向下一條指令的第一字節(jié)地址,再把有符號的相對偏移量rel
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電力設(shè)備出口銷售合同(含遠(yuǎn)程監(jiān)控)4篇
- 2025年度建筑材料行業(yè)環(huán)保責(zé)任保險(xiǎn)合同2篇
- 二零二五年度定制款窗戶安裝及維護(hù)服務(wù)合同4篇
- 二零二五年度山地林業(yè)合作開發(fā)合同4篇
- 2025年電力設(shè)施安檢服務(wù)采購協(xié)議書3篇
- 二零二五版電動汽車銷售與充電樁投資建設(shè)合同3篇
- 2025年度城市軌道交通鉆孔工程承包協(xié)議4篇
- 二零二五年度綠城地產(chǎn)項(xiàng)目物業(yè)服務(wù)收費(fèi)標(biāo)準(zhǔn)調(diào)整合同4篇
- 二零二五年度高品質(zhì)陶瓷面磚批量采購協(xié)議4篇
- 2025年度智能門禁系統(tǒng)門崗聘用合同4篇
- GB/T 37238-2018篡改(污損)文件鑒定技術(shù)規(guī)范
- 普通高中地理課程標(biāo)準(zhǔn)簡介(湘教版)
- 河道治理工程監(jiān)理通知單、回復(fù)單范本
- 超分子化學(xué)簡介課件
- 高二下學(xué)期英語閱讀提升練習(xí)(一)
- 易制爆化學(xué)品合法用途說明
- 【PPT】壓力性損傷預(yù)防敷料選擇和剪裁技巧
- 大氣喜慶迎新元旦晚會PPT背景
- DB13(J)∕T 242-2019 鋼絲網(wǎng)架復(fù)合保溫板應(yīng)用技術(shù)規(guī)程
- 心電圖中的pan-tompkins算法介紹
- 羊絨性能對織物起球的影響
評論
0/150
提交評論