版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第3 3章章 80C51 80C51 單片機(jī)指令系統(tǒng)單片機(jī)指令系統(tǒng)3.1 3.1 單片機(jī)指令系統(tǒng)概述單片機(jī)指令系統(tǒng)概述3.2 80C51 3.2 80C51 單片機(jī)指令尋址方式單片機(jī)指令尋址方式3.3 80C51 3.3 80C51 單片機(jī)指令分類介紹單片機(jī)指令分類介紹3.1 3.1 單片機(jī)指令系統(tǒng)概述單片機(jī)指令系統(tǒng)概述機(jī)器語言:機(jī)器語言:是一種是一種CPU的指令系統(tǒng),是由二進(jìn)制代碼編寫,的指令系統(tǒng),是由二進(jìn)制代碼編寫,能夠直接被機(jī)器識別的程序設(shè)計(jì)語言。能夠直接被機(jī)器識別的程序設(shè)計(jì)語言。 匯編語言:匯編語言:是用能夠反映指令功能的助記符來表示指令的是用能夠反映指令功能的助記符來表示指令的程學(xué)
2、設(shè)計(jì)語言,用助記符來代表程學(xué)設(shè)計(jì)語言,用助記符來代表0、1編程,即符號化了的編程,即符號化了的機(jī)器語言。機(jī)器語言。 機(jī)器語言和匯編語言均屬于低級語言機(jī)器語言和匯編語言均屬于低級語言,都是面向機(jī)器的語言都是面向機(jī)器的語言,和具體機(jī)器的指令系統(tǒng)密切相關(guān)。低級語言適合編寫一些和具體機(jī)器的指令系統(tǒng)密切相關(guān)。低級語言適合編寫一些對速度和代碼長度要求高的程序和直接控制硬件的程序。對速度和代碼長度要求高的程序和直接控制硬件的程序。高級語言:高級語言:不再是面向機(jī)器的語言,而是面向解題的過程。不再是面向機(jī)器的語言,而是面向解題的過程。這類語言屬于高級語言,人們常用的高級語言有:這類語言屬于高級語言,人們常用的
3、高級語言有:BASIC、FORTRAN、Pascal、C語言等。語言等。 高級語言與計(jì)算機(jī)的硬件結(jié)構(gòu)及指令系統(tǒng)無關(guān),它有更強(qiáng)高級語言與計(jì)算機(jī)的硬件結(jié)構(gòu)及指令系統(tǒng)無關(guān),它有更強(qiáng)的表達(dá)能力,可方便地表示數(shù)據(jù)的運(yùn)算和程序的控制結(jié)構(gòu),的表達(dá)能力,可方便地表示數(shù)據(jù)的運(yùn)算和程序的控制結(jié)構(gòu),能更好的描述各種算法,而且容易學(xué)習(xí)掌握。但高級語言能更好的描述各種算法,而且容易學(xué)習(xí)掌握。但高級語言編譯生成的程序代碼一般比用匯編程序語言設(shè)計(jì)的程序代編譯生成的程序代碼一般比用匯編程序語言設(shè)計(jì)的程序代碼要長,執(zhí)行的速度也慢。碼要長,執(zhí)行的速度也慢。高級語言程序高級語言程序“看不見看不見”機(jī)器的硬件結(jié)構(gòu),不能用于編寫機(jī)器的
4、硬件結(jié)構(gòu),不能用于編寫直接訪問機(jī)器硬件資源的系統(tǒng)軟件或設(shè)備控制軟件。為此,直接訪問機(jī)器硬件資源的系統(tǒng)軟件或設(shè)備控制軟件。為此,一些高級語言提供了與匯編語言之間的調(diào)用接口。用匯編一些高級語言提供了與匯編語言之間的調(diào)用接口。用匯編語言編寫的程序,可作為高級語言的一個外部過程或函數(shù),語言編寫的程序,可作為高級語言的一個外部過程或函數(shù),利用堆棧來傳遞參數(shù)或參數(shù)的地址。利用堆棧來傳遞參數(shù)或參數(shù)的地址。指令:指令:規(guī)定計(jì)算機(jī)基本操作的語句或命令。指令通規(guī)定計(jì)算機(jī)基本操作的語句或命令。指令通常有兩個組成部分:操作碼和操作數(shù)。常有兩個組成部分:操作碼和操作數(shù)。指令系統(tǒng):指令系統(tǒng):一個單片機(jī)所能執(zhí)行的指令集合即
5、為它一個單片機(jī)所能執(zhí)行的指令集合即為它的指令系統(tǒng)。的指令系統(tǒng)。 指令由兩部分組成,即指令由兩部分組成,即操作碼操作碼和和操作數(shù)操作數(shù)。操作碼操作碼:規(guī)定指令進(jìn)行什么操作規(guī)定指令進(jìn)行什么操作操作數(shù)操作數(shù):指令操作的對象指令操作的對象 指令可分為單字節(jié)指令、雙字節(jié)指令、三字節(jié)不同長指令可分為單字節(jié)指令、雙字節(jié)指令、三字節(jié)不同長度的指令,格式不同:度的指令,格式不同:單字節(jié)指令:單字節(jié)指令:操作碼、操作數(shù)同在一個字節(jié)中。操作碼、操作數(shù)同在一個字節(jié)中。雙字節(jié)指令:雙字節(jié)指令:操作碼操作碼+操作數(shù)。操作數(shù)。三字節(jié)指令:三字節(jié)指令:操作碼操作碼+操作數(shù)操作數(shù)+操作數(shù)。操作數(shù)。n 指令格式指令格式n 80c
6、51指令中使用的符號的意義作簡要說明指令中使用的符號的意義作簡要說明Rn(n=07):表示當(dāng)前工作寄存器:表示當(dāng)前工作寄存器R0R7中的任一個寄中的任一個寄存器。存器。direct:8位直接地址,在指令中表示直接尋址方式,尋址位直接地址,在指令中表示直接尋址方式,尋址范圍范圍256個單元。個單元。 #data:8位立即數(shù)。位立即數(shù)。 #data16:16位立即數(shù)。位立即數(shù)。addr16:表示表示16位目的地址,主要用于位目的地址,主要用于LCALL和和LJMP指指令中。令中。 addr11:表示表示11位目的地址,主要用于位目的地址,主要用于ACALL和和AJMP指指令中。令中。rel:相對轉(zhuǎn)
7、移指令中的偏移量,為相對轉(zhuǎn)移指令中的偏移量,為8位帶符號補(bǔ)碼。位帶符號補(bǔ)碼。DPTR:數(shù)據(jù)指針。數(shù)據(jù)指針。bit:內(nèi)部內(nèi)部RAM(包括專用寄存器)中的直接尋址位。(包括專用寄存器)中的直接尋址位。A:累加器累加器ACC:直接尋址方式的累加器。直接尋址方式的累加器。B:寄存器寄存器BC:進(jìn)位標(biāo)志位。也稱為累加位。進(jìn)位標(biāo)志位。也稱為累加位。/:加在位地址的前面,表示對該位狀態(tài)取反。加在位地址的前面,表示對該位狀態(tài)取反。:間接尋址寄存器的前綴標(biāo)志。間接尋址寄存器的前綴標(biāo)志。(X):某寄存器或某單元中的內(nèi)容。某寄存器或某單元中的內(nèi)容。(X):由由“X”間接尋址單元中的內(nèi)容。間接尋址單元中的內(nèi)容。:箭頭
8、左邊的內(nèi)容被箭頭右邊的內(nèi)容所取代箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所取代。 尋址方式就是在指令中尋址方式就是在指令中說明操作數(shù)所在地址說明操作數(shù)所在地址的方法。的方法。80C51共有共有7種種尋址方式。尋址方式。n寄存器尋址方式寄存器尋址方式n直接尋址方式直接尋址方式n寄存器間接尋址方式寄存器間接尋址方式n立即尋址方式立即尋址方式n變址尋址方式變址尋址方式n 位尋址方式位尋址方式n 相對尋址方式相對尋址方式 3.2 80C51 3.2 80C51 單片機(jī)指令系統(tǒng)尋址方式單片機(jī)指令系統(tǒng)尋址方式操作數(shù)在寄存器中,如:操作數(shù)在寄存器中,如: MOV A,Rn ;(;(Rn)A,n=07 特點(diǎn):特點(diǎn):由指
9、令指出某一個寄存器的內(nèi)容作為操作數(shù)。存放操由指令指出某一個寄存器的內(nèi)容作為操作數(shù)。存放操作數(shù)的寄存器在指令代碼中不占據(jù)單獨(dú)的一個字節(jié),而是嵌作數(shù)的寄存器在指令代碼中不占據(jù)單獨(dú)的一個字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。入(隱含)到操作碼字節(jié)中。 該類尋址方式的該類尋址方式的尋址范圍尋址范圍為:為:(1)4組通用工作寄存區(qū)共組通用工作寄存區(qū)共32個工作寄存器。個工作寄存器。(2)部分特殊功能寄存器,例如)部分特殊功能寄存器,例如A、B 以及數(shù)據(jù)指針寄存器以及數(shù)據(jù)指針寄存器DPTR等。等。 n寄存器尋址方式寄存器尋址方式指令中操作數(shù)直接以存儲單元地址的形式給出,如:指令中操作數(shù)直接以存儲單元地址的
10、形式給出,如: MOV A,40H 特點(diǎn):特點(diǎn):指令中含有操作數(shù)的地址。該地址指出了參與操作的數(shù)指令中含有操作數(shù)的地址。該地址指出了參與操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。計(jì)算機(jī)執(zhí)行它們時便可根據(jù)據(jù)所在的字節(jié)單元地址或位地址。計(jì)算機(jī)執(zhí)行它們時便可根據(jù)直接地址找到所需要的操作數(shù)。直接地址找到所需要的操作數(shù)。 該類尋址方式的該類尋址方式的尋址范圍尋址范圍為:為: (1) 內(nèi)部內(nèi)部RAM的的128個單元及特殊功能寄存器。除了以單元個單元及特殊功能寄存器。除了以單元地址的形式外,還地址的形式外,還可用寄存器符號可用寄存器符號的形式給出。例如:的形式給出。例如: MOV A,80H 與與 MOV A,
11、P0是等價的是等價的。n直接尋址方式直接尋址方式指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。這種尋指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。這種尋址方式稱為寄存器間接尋址。如:址方式稱為寄存器間接尋址。如: MOV A, R0(只能用(只能用R0或或R1作為間址寄存器作為間址寄存器 )特點(diǎn):特點(diǎn):指令給出的寄存器中存放的是操作數(shù)地址。寄存器間指令給出的寄存器中存放的是操作數(shù)地址。寄存器間接尋址是一種二次尋找操作數(shù)地址的尋址方式,寄存器前邊接尋址是一種二次尋找操作數(shù)地址的尋址方式,寄存器前邊必須加前綴符號必須加前綴符號“”。不能用于尋址特殊功能寄存器。不能用于尋址特殊功能寄存器SFR。n寄
12、存器間接尋址方式寄存器間接尋址方式該尋址方式的該尋址方式的尋址范圍尋址范圍:(1)訪問)訪問內(nèi)部內(nèi)部RAM低低128個個單元,其通用形式為單元,其通用形式為Ri(2)對)對外部內(nèi)部外部內(nèi)部RAM的的64K字節(jié)字節(jié)的間接尋址,如:的間接尋址,如: MOVX A,DPTR(3)片外數(shù)據(jù)存儲器的低)片外數(shù)據(jù)存儲器的低256字節(jié),字節(jié), 例:例: MOVX A,Ri(4)堆棧區(qū))堆棧區(qū) 堆棧操作指令堆棧操作指令PUSH(壓棧)(壓棧)和和POP(出棧)(出棧)使用堆棧使用堆棧指針(指針(SP)作間址寄存器)作間址寄存器將立即參與操作的數(shù)據(jù)直接寫在指令中,這種尋址方式稱為將立即參與操作的數(shù)據(jù)直接寫在指令
13、中,這種尋址方式稱為立即尋址。例立即尋址。例 MOV A , #3AHMOV DPTR, #data16特點(diǎn):特點(diǎn):指令中直接含有所需的操作數(shù)。該操作數(shù)可以是指令中直接含有所需的操作數(shù)。該操作數(shù)可以是8位位的,也可以是的,也可以是16位的,常常處在指令的第二字節(jié)和第三字節(jié)位的,常常處在指令的第二字節(jié)和第三字節(jié)的位置上。立即數(shù)通常使用的位置上。立即數(shù)通常使用#data或或#data16表示,在立即數(shù)表示,在立即數(shù)前面加前面加“#”標(biāo)志,用以和直接尋址中的直接地址(標(biāo)志,用以和直接尋址中的直接地址(direc或或bit)相區(qū)別。)相區(qū)別。 n立即尋址方式立即尋址方式操作數(shù)存放在變址寄存器操作數(shù)存放
14、在變址寄存器(累加器累加器A)和基址寄存器和基址寄存器(DPTR或或PC)相加形成的相加形成的16位地址單元中。這種尋址方式稱為基址加位地址單元中。這種尋址方式稱為基址加變址寄存器間接尋址,簡稱為變址尋址。例:變址寄存器間接尋址,簡稱為變址尋址。例: MOVC A, A+DPTR ;(A)(A)+(DPTR)n變址尋址方式變址尋址方式特點(diǎn):特點(diǎn):指令操作碼中隱含作為基址寄存器用的指令操作碼中隱含作為基址寄存器用的DPTR(或(或PC )和作為變址用的累加器)和作為變址用的累加器A。在執(zhí)行變址尋址指令時,。在執(zhí)行變址尋址指令時,80c51單片機(jī)先把基地址(單片機(jī)先把基地址(DPTR或或PC 的內(nèi)
15、容)和地址偏移的內(nèi)容)和地址偏移量(量(A的內(nèi)容)相加,以形成操作數(shù)地址,再由操作數(shù)地址的內(nèi)容)相加,以形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù),并完成相應(yīng)的操作。變址尋址方式是單字節(jié)找到操作數(shù),并完成相應(yīng)的操作。變址尋址方式是單字節(jié)指令。指令。該尋址方式的該尋址方式的尋址范圍:尋址范圍:只能對程序存儲器只能對程序存儲器ROM進(jìn)行尋址,進(jìn)行尋址,尋址范圍可達(dá)到尋址范圍可達(dá)到64KB,主要用于查表性質(zhì)的訪問。主要用于查表性質(zhì)的訪問。本尋址方式的指令只有本尋址方式的指令只有3條條:MOVC A,A+DPTRMOVC A,A+PCJMP A+DPTR指令中給出的操作數(shù)是一個可單獨(dú)尋址的位地址,這種尋
16、址指令中給出的操作數(shù)是一個可單獨(dú)尋址的位地址,這種尋址方式稱為位尋址方式。如:方式稱為位尋址方式。如: MOV C,3AH特點(diǎn):特點(diǎn):位尋址是直接尋址方式的一種,其特點(diǎn)是對位尋址是直接尋址方式的一種,其特點(diǎn)是對8位二進(jìn)制位二進(jìn)制數(shù)中的某一位的地址進(jìn)行操作。數(shù)中的某一位的地址進(jìn)行操作。n位尋址方式位尋址方式位尋址的位尋址的尋址范圍:尋址范圍:(1)內(nèi)部)內(nèi)部RAM中的位尋址區(qū)。中的位尋址區(qū)。位有兩種表示方法,如,位有兩種表示方法,如,40H;另一種是單元地址加上位,例如,另一種是單元地址加上位,例如,(28H).0,指的是,指的是28H單元單元中的最低位。它們是等價的。中的最低位。它們是等價的。
17、(2)特殊功能寄存器中的可尋址位。)特殊功能寄存器中的可尋址位。可尋址位在指令中有如可尋址位在指令中有如下下4種的表示方法:種的表示方法: a. 直接使用位地址。直接使用位地址。如:如:PSW.5的位地址為的位地址為0D5H。 b. 位名稱的表示方法位名稱的表示方法。如:。如:PSW.5是是F0標(biāo)志位,可使用標(biāo)志位,可使用F0表表示該位。示該位。 c.單元地址加位數(shù)的表示方法單元地址加位數(shù)的表示方法。如。如 :(0D0H).5。 d.特殊功能寄存器符號加位數(shù)的表示方法特殊功能寄存器符號加位數(shù)的表示方法。如。如:PSW.5。將程序計(jì)數(shù)器將程序計(jì)數(shù)器PC的當(dāng)前值(取出本條指令后的的當(dāng)前值(取出本條
18、指令后的PC值)與指值)與指令第二個字節(jié)給出的偏移量(令第二個字節(jié)給出的偏移量(rel)相加,形成新的轉(zhuǎn)移目標(biāo))相加,形成新的轉(zhuǎn)移目標(biāo)地址。稱為相對尋址方式。例:地址。稱為相對尋址方式。例: SJMP rel ; (PC)(PC)+ 2 + rel特點(diǎn):特點(diǎn):相對轉(zhuǎn)移指令的目的地址指令地址指令字節(jié)數(shù)相對轉(zhuǎn)移指令的目的地址指令地址指令字節(jié)數(shù)偏移量。偏移量。相對尋址方式是為實(shí)現(xiàn)程序的相對轉(zhuǎn)移而設(shè)計(jì)的,為相對轉(zhuǎn)相對尋址方式是為實(shí)現(xiàn)程序的相對轉(zhuǎn)移而設(shè)計(jì)的,為相對轉(zhuǎn)移指令所使用,其指令碼中含有相對地址偏移量,能生成浮移指令所使用,其指令碼中含有相對地址偏移量,能生成浮動代碼。動代碼。n 相對尋址方式相對
19、尋址方式偏移量偏移量rel是一帶符號的是一帶符號的8位二進(jìn)制數(shù)補(bǔ)碼數(shù),其位二進(jìn)制數(shù)補(bǔ)碼數(shù),其范圍是:范圍是:128 - +127,因此,因此該尋址方式的該尋址方式的尋址范圍尋址范圍:(1)向)向地址增加方向地址增加方向最大可轉(zhuǎn)移(最大可轉(zhuǎn)移(127+轉(zhuǎn)移指令字節(jié))轉(zhuǎn)移指令字節(jié))個單元地址。個單元地址。(2)向)向地址減少方向地址減少方向最大可轉(zhuǎn)移(最大可轉(zhuǎn)移(128-轉(zhuǎn)移指令字節(jié))個轉(zhuǎn)移指令字節(jié))個單元地址。單元地址。3.3 80C51 3.3 80C51 單片機(jī)指令分類介紹單片機(jī)指令分類介紹 80C51單片機(jī)的指令共有單片機(jī)的指令共有111條。這些指令按功能分成條。這些指令按功能分成5大類:
20、大類:數(shù)據(jù)傳送類(數(shù)據(jù)傳送類(29條)條)算術(shù)運(yùn)算類(算術(shù)運(yùn)算類(24條)條)邏輯運(yùn)算及移位類(邏輯運(yùn)算及移位類(24條)條)控制轉(zhuǎn)移類(控制轉(zhuǎn)移類(17條)條)位操作類(位操作類(17條)條)使用最頻繁的一類指令使用最頻繁的一類指令,通用格式:通用格式: MOV ,屬屬“復(fù)制復(fù)制”性質(zhì),而不是性質(zhì),而不是“搬家搬家”數(shù)據(jù)傳送類指令不影響標(biāo)志位:數(shù)據(jù)傳送類指令不影響標(biāo)志位:Cy、Ac和和OV,影響奇偶,影響奇偶標(biāo)志位標(biāo)志位P。3.3.1 3.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令n 以累加器為目的操作數(shù)的指令以累加器為目的操作數(shù)的指令 MOV A,Rn ; (Rn)A,n=07 MOV A,Ri
21、 ; (Ri)A,i=0,1 MOV A,direct ;(direct)A MOV A,#data ; #dataA 例:例: MOV A,R6 ;(R6)A,寄存器尋址,寄存器尋址 MOV A,R0 ;(R0)A,間接尋址,間接尋址 MOV A,70H ;(70H)A,直接尋址,直接尋址 MOV A,#78H ;78HA,立即尋址,立即尋址 MOV Rn,A ; (A)Rn,n=07 MOV Rn,direct ;(direct)Rn,n=07 MOV Rn,#dat ; #dataRn,n=07功能:是把源操作數(shù)的內(nèi)容送入當(dāng)前一組工作寄存器區(qū)的功能:是把源操作數(shù)的內(nèi)容送入當(dāng)前一組工作寄存
22、器區(qū)的R0R7中的某一個寄存器。中的某一個寄存器。n以以Rn為目的操作數(shù)的指令為目的操作數(shù)的指令 MOV direct,A ; (A)direct MOV direct,Rn;(Rn)direct, n=07 MOV direct1,direct2; MOV direct,Ri ; (Ri)directMOV direct,#data; #datadirect功能:功能:把源操作數(shù)送入直接地址指出的存儲單元。把源操作數(shù)送入直接地址指出的存儲單元。direct指指的是內(nèi)部的是內(nèi)部RAM或或SFR的地址。的地址。n 以直接地址以直接地址direct為目的操作數(shù)的指令為目的操作數(shù)的指令 MOV Ri
23、,A ;(A)(Ri),i=0,1 MOV Ri,direct ; (direct)(Ri) MOV Ri,#data ; #data(Ri)n 以寄存器間接地址為目的操作數(shù)的指令以寄存器間接地址為目的操作數(shù)的指令 MOV DPTR,#data16 ; #data16DPTR唯一的唯一的16位數(shù)據(jù)的傳送指令位數(shù)據(jù)的傳送指令 ,立即數(shù)的高立即數(shù)的高8位送入位送入DPH,立即,立即數(shù)的低數(shù)的低8位送入位送入DPL。n16位數(shù)傳送指令位數(shù)傳送指令(1)進(jìn)棧指令進(jìn)棧指令 PUSH direct先將棧指針先將棧指針SP加加1,然后把,然后把direct中的內(nèi)容送到棧指針中的內(nèi)容送到棧指針SP指示的內(nèi)部指
24、示的內(nèi)部RAM單元中單元中。(2)出棧指令出棧指令 POP directSP指示的棧頂(內(nèi)部指示的棧頂(內(nèi)部RAM單元)內(nèi)容送入單元)內(nèi)容送入direct字節(jié)單元字節(jié)單元中,棧指針中,棧指針SP減減1。n 堆棧操作指令堆棧操作指令例:例: 當(dāng)(當(dāng)(SP)=60H,(A)=30H,(B)=70H時,時, PUSH ACC;(SP)+1=61HSP,(A)61H PUSH B; (SP)+1=62HSP,(B)62H結(jié)果:結(jié)果:(61H)=30H,(62H)=70H,(SP)=62H例例: 當(dāng)當(dāng) (SP)=62H,(62H)=70H,(61H)=30H, POP DPH ; (SP)DPH,(SP
25、)-1SP POP DPL ; (SP)DPL,(SP)-1SP結(jié)果:結(jié)果:(DPTR)=7030H,(SP)=60H MOVX A,DPTR ;(DPTR)A,讀外部讀外部RAM/IO MOVX A,Ri ;(Ri)A,讀外部讀外部RAM/IO MOVX DPTR,A;(A)(DPTR),寫外部寫外部RAM/IO MOVX Ri,A ;(A)(Ri),寫外部寫外部RAM/IO功能:讀外部功能:讀外部RAM存儲器或存儲器或I/O中的一個字節(jié),或把中的一個字節(jié),或把A中中一個字節(jié)的數(shù)據(jù)寫到外部一個字節(jié)的數(shù)據(jù)寫到外部RAM存儲器或存儲器或I/O中。中。MOV后后 “X”表示單片機(jī)訪問的是片外表示單
26、片機(jī)訪問的是片外RAM存儲器或存儲器或I/O。 n 累加器累加器A與外部數(shù)據(jù)存儲器傳送指令與外部數(shù)據(jù)存儲器傳送指令注意:注意:(1)RD*或或WR*信號有效。信號有效。(2)采用)采用DPTR間接尋址,高間接尋址,高8位地址(位地址(DPH)由)由P2口輸口輸出,低出,低8位地址(位地址(DPL)由)由P0口輸出??谳敵?。(3)采用)采用Ri(i=0,1)間接尋址,可尋址片外)間接尋址,可尋址片外RAM的的256個個單元。單元。Ri內(nèi)容由內(nèi)容由P0口輸出??谳敵?。用于讀程序存儲器中的數(shù)據(jù)表格的指令,均采用基址寄存器用于讀程序存儲器中的數(shù)據(jù)表格的指令,均采用基址寄存器加變址寄存器間接尋址方式。指
27、令是在加變址寄存器間接尋址方式。指令是在MOV的后面加的后面加C,“C”是是CODE的第一個字母,即代碼的意思。該類指令共兩的第一個字母,即代碼的意思。該類指令共兩條。條。 (1) MOVC A,A+PC 以以PC作基址寄存器作基址寄存器,A的內(nèi)容的內(nèi)容作為無符號整數(shù)和作為無符號整數(shù)和PC中的內(nèi)中的內(nèi)容(下一條指令的起始地址)容(下一條指令的起始地址)相加后得到一個相加后得到一個16位的地址,位的地址,該地址指出的程序存儲單元的內(nèi)容送到累加器該地址指出的程序存儲單元的內(nèi)容送到累加器A。注意:注意:PSEN*信號有效。信號有效。n 查表指令查表指令例例: (A)=30H,執(zhí)行地址執(zhí)行地址1000
28、H處的指令處的指令 1000H: MOVC A,A+PC本指令占用一個字節(jié),執(zhí)行結(jié)果將程序存儲器中本指令占用一個字節(jié),執(zhí)行結(jié)果將程序存儲器中1031H的內(nèi)的內(nèi)容送入容送入A。優(yōu)點(diǎn):優(yōu)點(diǎn):不改變特殊功能寄存器及不改變特殊功能寄存器及PC的狀態(tài),根據(jù)的狀態(tài),根據(jù)A的內(nèi)容的內(nèi)容就可以取出表格中的常數(shù)。就可以取出表格中的常數(shù)。缺點(diǎn):缺點(diǎn):表格只能存放在該條查表指令后面的表格只能存放在該條查表指令后面的256個單元之內(nèi),個單元之內(nèi),表格的大小受到限制,且表格只能被一段程序所利用。表格的大小受到限制,且表格只能被一段程序所利用。(2) MOVC A,A+DPTR以以DPTR作為基址寄存器,作為基址寄存器,
29、A的內(nèi)容作為無符號數(shù)和的內(nèi)容作為無符號數(shù)和DPTR的內(nèi)的內(nèi)容相加得到一個容相加得到一個16位的地址,把由該地址指出的程序存儲器單位的地址,把由該地址指出的程序存儲器單元的內(nèi)容送到累加器元的內(nèi)容送到累加器A. 例例: (DPTR)=8100H, (A)=40H MOVC A,A+DPTR本指令的本指令的執(zhí)行結(jié)果執(zhí)行結(jié)果只和指針只和指針DPTR及累加器及累加器A的內(nèi)容有關(guān),與的內(nèi)容有關(guān),與該指令存放的地址及常數(shù)表格存放的地址無關(guān),該指令存放的地址及常數(shù)表格存放的地址無關(guān),因此表格的大因此表格的大小和位置可以在小和位置可以在64K程序存儲器中任意安排。程序存儲器中任意安排。XCH A,Rn XCH
30、A,direct XCH A,Ri例:例:(A)=80H,(R7)=08H,(40H)=F0H,(R0)=30H,(30H)=0FH執(zhí)行下列指令:執(zhí)行下列指令: XCH A,R7 ;(A)與與(R7)互換互換 XCH A,40H ;(A)與與(40H)互換互換 XCH A,R0 ;(A)與與(R0)互換互換結(jié)果:結(jié)果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0Hn 字節(jié)交換指令字節(jié)交換指令 XCHD A,Ri累加器的低累加器的低4位與內(nèi)部位與內(nèi)部RAM低低4位交換。位交換。例:例: (R0)=60H,(60H)=3EH,(A)=59H執(zhí)行執(zhí)行 XCHD A,RO 則
31、則(A)=5EH,(60H)=39H。n 半字節(jié)交換指令半字節(jié)交換指令單字節(jié)的加、減、乘、除法指令,都是針對單字節(jié)的加、減、乘、除法指令,都是針對8位二進(jìn)制無符位二進(jìn)制無符號數(shù)。號數(shù)。執(zhí)行的結(jié)果對執(zhí)行的結(jié)果對Cy、Ac、OV 三種標(biāo)志位有影響。三種標(biāo)志位有影響。但增但增1和減和減1指令不影響上述標(biāo)志。指令不影響上述標(biāo)志。3.3.2 3.3.2 算術(shù)操作類指令算術(shù)操作類指令加法運(yùn)算指令共加法運(yùn)算指令共4種形式:種形式: ADD A,Rn ;(A)+(Rn)A,n=07 ADD A,direct ;(A)+(direct)A ADD A,Ri ;(A)+(Ri)A,i=0,1 ADD A,#dat
32、a ; (A)+#dataA一個加數(shù)總是來自累加器一個加數(shù)總是來自累加器A,而另一個加數(shù)可由不同的尋址,而另一個加數(shù)可由不同的尋址方式得到。結(jié)果總是放在方式得到。結(jié)果總是放在A中。中。n 加法指令加法指令使用加法指令時,要注意累加器使用加法指令時,要注意累加器A中的運(yùn)算結(jié)果對各個標(biāo)志中的運(yùn)算結(jié)果對各個標(biāo)志位的影響:位的影響:(1)如果位如果位7有進(jìn)位,則置有進(jìn)位,則置“1”進(jìn)位標(biāo)志進(jìn)位標(biāo)志Cy,否則清,否則清“0”Cy(2)如果位如果位3有進(jìn)位,置有進(jìn)位,置“1”輔助進(jìn)位標(biāo)志輔助進(jìn)位標(biāo)志Ac,否則清,否則清“0”Ac(Ac為為PSW寄存器中的一位)寄存器中的一位)(3)如果位如果位6有進(jìn)位,而
33、位有進(jìn)位,而位7沒有進(jìn)位,或者位沒有進(jìn)位,或者位7有進(jìn)位,有進(jìn)位,而位而位6沒有,則溢出標(biāo)志位沒有,則溢出標(biāo)志位OV置置“1”,否則清,否則清“0”O(jiān)V。(4)溢出標(biāo)志位溢出標(biāo)志位OV的狀態(tài),只有在帶符號數(shù)加法運(yùn)算時的狀態(tài),只有在帶符號數(shù)加法運(yùn)算時才有意義。當(dāng)兩個帶符號數(shù)相加時,才有意義。當(dāng)兩個帶符號數(shù)相加時,OV=1,表示加法運(yùn)算,表示加法運(yùn)算超出了累加器超出了累加器A所能表示的帶符號數(shù)的有效范圍。所能表示的帶符號數(shù)的有效范圍。 例:例: (A)=53H,(R0)=FCH,執(zhí)行指令,執(zhí)行指令 ADD A,R0結(jié)果結(jié)果: (A)=4FH,Cy=1,Ac=0,OV=0,P=1注意:上面的運(yùn)算中,
34、由于位注意:上面的運(yùn)算中,由于位6和位和位7同時有進(jìn)位,所以標(biāo)志位同時有進(jìn)位,所以標(biāo)志位OV=0。 例:例: (A)= 85H,(R0)=20H,(20H)=AFH,執(zhí)行指令:,執(zhí)行指令: ADD A,R0 結(jié)果結(jié)果:(A)=34H,Cy=1,Ac=1,OV=1,P=1注意:由于位注意:由于位7有進(jìn)位,而位有進(jìn)位,而位6無進(jìn)位,所以標(biāo)志位無進(jìn)位,所以標(biāo)志位OV=1標(biāo)志位標(biāo)志位Cy參加運(yùn)算,因此是三個數(shù)相加。共參加運(yùn)算,因此是三個數(shù)相加。共4條:條: ADDC A,Rn ;(A)+(Rn)+CA,n=07 ADDC A,direct ;(A)+(direct)+CA ADDC A,Ri ;(A)
35、+(Ri)+CA,i=0,1 ADDC A,#data ;(A)+#data+CA 例:例:(A)=85H,(20H)=FFH,Cy=1,執(zhí)行指令:,執(zhí)行指令: ADDC A,20H結(jié)果為結(jié)果為:(A)=85H,Cy=1,Ac=1,OV=0,P=1 (A中中1 的的位數(shù)為奇數(shù))位數(shù)為奇數(shù))n 帶進(jìn)位加法指令帶進(jìn)位加法指令 INC A INC Rn ;n=07INC direct INC Ri ;i=0,1 INC DPTR注意:注意:(1)不影響)不影響PSW中的任何標(biāo)志。中的任何標(biāo)志。(2)第)第5條指令條指令I(lǐng)NC DPTR,是,是16位數(shù)增位數(shù)增1指令。指令首先指令。指令首先對低對低8位
36、指針位指針DPL的內(nèi)容執(zhí)行加的內(nèi)容執(zhí)行加1的操作,當(dāng)產(chǎn)生溢出時,的操作,當(dāng)產(chǎn)生溢出時,就對就對DPH的內(nèi)容進(jìn)行加的內(nèi)容進(jìn)行加1操作,并不影響標(biāo)志操作,并不影響標(biāo)志Cy的狀態(tài)。的狀態(tài)。n 增增1指令指令用于對用于對BCD碼十進(jìn)制數(shù)加法運(yùn)算結(jié)果的內(nèi)容修正。碼十進(jìn)制數(shù)加法運(yùn)算結(jié)果的內(nèi)容修正。 指令格式:指令格式: DA A兩個兩個BCD碼按二進(jìn)制相加之后,必須經(jīng)本指令的調(diào)整才能碼按二進(jìn)制相加之后,必須經(jīng)本指令的調(diào)整才能得到正確的壓縮得到正確的壓縮BCD碼的和數(shù)。碼的和數(shù)。n 十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令二進(jìn)制數(shù)的加法運(yùn)算原則并不能適用于十進(jìn)制數(shù)的加法運(yùn)算,二進(jìn)制數(shù)的加法運(yùn)算原則并不能適用于十進(jìn)制數(shù)的
37、加法運(yùn)算,有時會產(chǎn)生錯誤結(jié)果。有時會產(chǎn)生錯誤結(jié)果。例:例:(a)3+6=9 0011+0101=1001 運(yùn)算結(jié)果正確運(yùn)算結(jié)果正確(b)7+8=15 0111+1000=1111 運(yùn)算結(jié)果不正確運(yùn)算結(jié)果不正確(c)9+8=17 1001+1000=00001 C=1 結(jié)果不正確結(jié)果不正確出錯原因:出錯原因:BCD碼只用了其中的碼只用了其中的10個,個,6個為無效碼。個為無效碼。(1010,1011,1100,1101,1110,1111)凡結(jié)果進(jìn)入或者跳過無效碼編碼區(qū)時,其結(jié)果就是錯誤的。凡結(jié)果進(jìn)入或者跳過無效碼編碼區(qū)時,其結(jié)果就是錯誤的。二進(jìn)制數(shù)加法指令不能完全適用于二進(jìn)制數(shù)加法指令不能完全
38、適用于BCD碼十進(jìn)制數(shù)的加法碼十進(jìn)制數(shù)的加法運(yùn)算,對結(jié)果作有條件的修正運(yùn)算,對結(jié)果作有條件的修正 十進(jìn)制調(diào)整十進(jìn)制調(diào)整調(diào)整的方法:調(diào)整的方法:(a)累加器低)累加器低4位大于位大于9或輔助進(jìn)位位或輔助進(jìn)位位Ac=1,則進(jìn)行低,則進(jìn)行低4位位加加6修正。修正。(b)累加器高)累加器高4位大于位大于9或進(jìn)位位或進(jìn)位位Cy=1,則進(jìn)行高,則進(jìn)行高4位加位加6修修正。正。(c)累加器高)累加器高4位為位為9,低,低4位大于位大于9,則高,則高4位和低位和低4位分別位分別加加6修正。修正。例:例:(A)=56H,(R5)=67H,把它們看作為兩個壓縮的,把它們看作為兩個壓縮的BCD數(shù),進(jìn)行數(shù),進(jìn)行BCD
39、數(shù)的加法。執(zhí)行指令:數(shù)的加法。執(zhí)行指令: ADD A,R5 DA A由于高、低由于高、低4位分別大于位分別大于9,所以要分別加,所以要分別加6進(jìn)行十進(jìn)制調(diào)整對進(jìn)行十進(jìn)制調(diào)整對結(jié)果進(jìn)行修正。結(jié)果進(jìn)行修正。結(jié)果為:結(jié)果為: (A)=23H,Cy=1可見,可見,56+67=123,結(jié)果是正確的。,結(jié)果是正確的。 SUBB A,Rn ; (A)-(Rn)- CyA,n=07 SUBB A,direct ; (A)-(direct)- CyA SUBB A,Ri;(A)-((Ri))- CyA, i=0,1 SUBB A,#data ;(A)-#data - CyA從累加器從累加器A中的內(nèi)容減去指定的變
40、量和進(jìn)位標(biāo)志中的內(nèi)容減去指定的變量和進(jìn)位標(biāo)志Cy的值,結(jié)的值,結(jié)果存在累加器果存在累加器A中。中。如果如果位位7需借位需借位,則,則Cy置置“1” ,否則,否則Cy清清“0” ; 如果如果位位3需借位,需借位,則則Ac置置“1” ,否則,否則Ac清清“0” ;如果如果位位6需借位、位需借位、位7不需借位不需借位,或,或位位7需借位、位需借位、位6不需借不需借位位,則,則OV置置“1” ,否則,否則OV清清“0” 。n 帶借位的減法指令帶借位的減法指令 由于減法指令只有帶借位減法指令由于減法指令只有帶借位減法指令, 因此因此, 若要進(jìn)行不帶若要進(jìn)行不帶借位位的減法操作借位位的減法操作, 需先清借
41、位位需先清借位位, 即置即置CY=0。清。清CY有有專門的指令,它屬于位操作類指令,指令為專門的指令,它屬于位操作類指令,指令為: CLR C ; (CY) 0 , C3例例: 設(shè)設(shè)(A)=52H, (R0)=B4H 執(zhí)行指令執(zhí)行指令: CLR C ; (CY)0 , C3 SUBB A, R0 ; (A) (A)(CY)(R0) , 98 結(jié)果為結(jié)果為: (A)=9EH, CY=1, AC=1, OV=1, P=1。 DEC A;(A)-1ADEC Rn ;(Rn)-1Rn,n=07DEC direct;(direct)-1directDEC Ri ;(Ri)-1(Ri),),i=0,1 減
42、減1指令不影響標(biāo)志位。指令不影響標(biāo)志位。 n 減減1 1指令指令 MUL AB ;ABBAn 乘法指令乘法指令 乘法指令的功能是把累加器乘法指令的功能是把累加器A和寄存器和寄存器B中的兩個中的兩個8位位無符號數(shù)相乘無符號數(shù)相乘, 將乘積將乘積16位數(shù)中的低位數(shù)中的低8位存放在位存放在A中中, 高高8位位存放在存放在B中。若乘積大于中。若乘積大于FFH(255), 則溢出標(biāo)志則溢出標(biāo)志OV置置1, 否則否則OV清清0。乘法指令執(zhí)行后進(jìn)位標(biāo)志。乘法指令執(zhí)行后進(jìn)位標(biāo)志CY總是清零總是清零, 即即CY=0。 另外另外, 乘法指令本身只能進(jìn)行兩個乘法指令本身只能進(jìn)行兩個8位數(shù)的乘法運(yùn)位數(shù)的乘法運(yùn)算算,
43、要進(jìn)行多字節(jié)乘法還需編寫相應(yīng)的程序。要進(jìn)行多字節(jié)乘法還需編寫相應(yīng)的程序。例例: 若若(A)=4EH(78), (B)=5DH(93) 執(zhí)行指令執(zhí)行指令: MUL AB 結(jié)果為結(jié)果為: 積為積為(BA)=1C56H(7254)FFH(255), (A)=56H, (B)=1CH, OV=1, CY=0, P=0。 例例: 利用單字節(jié)乘法指令進(jìn)行雙字節(jié)數(shù)乘以單字節(jié)數(shù)運(yùn)算。利用單字節(jié)乘法指令進(jìn)行雙字節(jié)數(shù)乘以單字節(jié)數(shù)運(yùn)算。 若被乘數(shù)為若被乘數(shù)為16位無符號數(shù)位無符號數(shù), 地址為地址為M1和和M1+1(低位先、(低位先、 高位后)高位后), 乘數(shù)為乘數(shù)為8位無符號數(shù)位無符號數(shù), 地址為地址為M2, 積存
44、入積存入R2、 R3和和R4三個寄存器中。三個寄存器中。 (M1+1) (M1) (M2) R3 R4 B A R2 R3 R4 DIV AB ;A/BA(商),余數(shù)(商),余數(shù)B除法指令的功能是把累加器除法指令的功能是把累加器A中的中的8位無符號整數(shù)除以寄存位無符號整數(shù)除以寄存器器B中的中的8位無符號整數(shù)位無符號整數(shù), 所得商存于累加器所得商存于累加器A中中, 余數(shù)存于寄余數(shù)存于寄存器存器B中中, 進(jìn)位標(biāo)志進(jìn)位標(biāo)志CY和溢出標(biāo)志和溢出標(biāo)志OV均被清零。均被清零。若除數(shù)若除數(shù)B中的內(nèi)容為中的內(nèi)容為0時時, 除法運(yùn)算沒有意義除法運(yùn)算沒有意義, 結(jié)果為不定值結(jié)果為不定值, 此時溢出標(biāo)志此時溢出標(biāo)志
45、OV被置為被置為1 , 即即OV=1, 而而CY仍為仍為0。n 除法指令除法指令例例: 利用除法指令把累加器利用除法指令把累加器A中的中的8位二進(jìn)制數(shù)轉(zhuǎn)換為位二進(jìn)制數(shù)轉(zhuǎn)換為3位位BCD數(shù)數(shù), 并以壓縮形式存放在地址并以壓縮形式存放在地址M1、 M2單元中。單元中。 解解: 累加器累加器A中的中的8位二進(jìn)制數(shù)位二進(jìn)制數(shù), 先對其除以先對其除以100(64H), 商商數(shù)即為十進(jìn)制的百位數(shù)數(shù)即為十進(jìn)制的百位數(shù); 余數(shù)部分再除以余數(shù)部分再除以10 (0AH), 所得商所得商數(shù)和余數(shù)分別為十進(jìn)制十位數(shù)和個位數(shù)數(shù)和余數(shù)分別為十進(jìn)制十位數(shù)和個位數(shù), 即得到即得到3位位BCD數(shù)。數(shù)。百位數(shù)放在百位數(shù)放在M1中
46、中, 十位、十位、 個位數(shù)壓縮個位數(shù)壓縮BCD數(shù)放在數(shù)放在M2中中, 十十位與個位數(shù)的壓縮位與個位數(shù)的壓縮BCD數(shù)的存放是通過數(shù)的存放是通過SWAP和和ADD指令指令實(shí)現(xiàn)的。實(shí)現(xiàn)的。MOV B, 64H ; 除數(shù)除數(shù)100 送送BDIV AB ; 得百位數(shù)得百位數(shù) MOV M1, A ; 百位數(shù)存于百位數(shù)存于M1中中MOV A, 0AH ; 取除數(shù)取除數(shù)10 XCH A, B ; 上述余數(shù)與除數(shù)交換上述余數(shù)與除數(shù)交換DIV AB ; 得十位數(shù)和個位數(shù)得十位數(shù)和個位數(shù)SWAP A ; 十位數(shù)存于十位數(shù)存于A的高的高4位位ADD A, B ; 組成壓縮組成壓縮BCD數(shù)數(shù)MOV M2, A ; 十、
47、十、 個位壓縮個位壓縮BCD數(shù)存數(shù)存M2 若上述程序執(zhí)行前若上述程序執(zhí)行前: (A)=A8H (168), 則執(zhí)行后則執(zhí)行后: (M1)=(01)BCD, (M2)=(68)BCD。 注意:注意:乘、乘、 除法指令為單字節(jié)除法指令為單字節(jié)4周期指令周期指令, 在指令執(zhí)行周在指令執(zhí)行周期中是最長的兩條指令。期中是最長的兩條指令。 (1) CLR A 功能:功能:累加器累加器A清清“0”。不影響。不影響Cy、Ac、OV等標(biāo)志。等標(biāo)志。 (2) CPL A功能:功能:累加器累加器A的內(nèi)容的內(nèi)容按位邏輯取反按位邏輯取反,不影響標(biāo)志。,不影響標(biāo)志。3.3.3 3.3.3 邏輯運(yùn)算指令邏輯運(yùn)算指令n簡單邏
48、輯操作指令簡單邏輯操作指令 RL A功能:功能:是累加器是累加器A的的8位位向向左循環(huán)移位左循環(huán)移位,位,位7循環(huán)移入位循環(huán)移入位0,不影,不影響標(biāo)志。響標(biāo)志。n 左環(huán)移指令左環(huán)移指令 RLC A功能:功能:將累加器將累加器A的內(nèi)容和進(jìn)位標(biāo)志位的內(nèi)容和進(jìn)位標(biāo)志位Cy一起一起向向左環(huán)移左環(huán)移一位,一位,Acc.7移入進(jìn)位位移入進(jìn)位位Cy,Cy移入移入Acc.0,不影響其它標(biāo)志,不影響其它標(biāo)志n 帶進(jìn)位左環(huán)移指令帶進(jìn)位左環(huán)移指令 RR A功能:功能:累加器累加器A的內(nèi)容的內(nèi)容向向右環(huán)移右環(huán)移一位,一位,Acc.0移入移入Acc.7,不影,不影響其它標(biāo)志。響其它標(biāo)志。n 右環(huán)移指令右環(huán)移指令 RRC
49、 A功能:功能:累加器累加器A的內(nèi)容和進(jìn)位標(biāo)志的內(nèi)容和進(jìn)位標(biāo)志Cy一起一起向向右環(huán)移右環(huán)移一位,一位,Acc.0進(jìn)入進(jìn)入Cy,Cy移入移入Acc.7。n 帶進(jìn)位右環(huán)移指令帶進(jìn)位右環(huán)移指令 SWAP A功能:功能:將累加器將累加器A的高半字節(jié)(的高半字節(jié)(Acc.7Acc.4)和低半字節(jié))和低半字節(jié)(Acc.3Acc.0)互換。)互換。 例:例: (A)=0C5H,執(zhí)行指令:,執(zhí)行指令: SWAP A 結(jié)果:結(jié)果:(A)=5CHn 累加器半字節(jié)交換指令累加器半字節(jié)交換指令 ANL A,Rn ; (A)(Rn)A,n=07 ANL A,direct ; (A)(direct)A ANL A,#da
50、ta ; (A)#dataA ANL A,Ri ; (A)((Ri))A,i=01 ANL direct,A ; (direct)(A)direct ANL direct,#data ; (direct)#datadirect例:例: (A)=07H,(R0)=0FDH,執(zhí)行指令:執(zhí)行指令: ANL A,R0 結(jié)果:(結(jié)果:(A)=05Hn 邏輯與指令邏輯與指令 ORL A,Rn ;(A)(Rn)A ,n=07 ORL A,direct ;(A)(direct)A ORL A,#data ;(A) dataA ORL A,Ri ; (A)(Ri)A,i=0,1 ORL direct,A ;(;
51、(direct)(A)direct ORL direct,#data;(direct)#datadirect 例:例:(P1)=05H,(A)=33H,執(zhí)行指令,執(zhí)行指令ORL P1,A結(jié)果:(結(jié)果:(P1)=37H n 邏輯或指令邏輯或指令 XRL A,Rn ;(A) (Rn)A XRL A,direct ;(A) (direct)A XRL A,Ri ;(A) (Ri)A ,i=0,1 XRL A,#data ;(A) #dataA XRL direct,A ;(direct) (A)direct XRL direct,#data ;(direct) #data direct 例:例: (
52、A)=90H,(R3)=73H 執(zhí)行指令:執(zhí)行指令: XRL A,R3 結(jié)果:結(jié)果:(A)=E3Hn 邏輯異或指令邏輯異或指令邏輯邏輯“與與”、 “或或”、 “異或異或”各各6條指令有如下共同條指令有如下共同的特點(diǎn)的特點(diǎn): (1) 邏輯邏輯“與與”ANL、 “或或”O(jiān)RL、 “異或異或”XRL運(yùn)運(yùn)算指令除邏輯操作功能不同外算指令除邏輯操作功能不同外, 三者的尋址方式相同三者的尋址方式相同, 指指令字節(jié)數(shù)相同令字節(jié)數(shù)相同, 機(jī)器周期數(shù)相同。機(jī)器周期數(shù)相同。 (2) ANL、 ORL、 XRL的前兩條指令的目的操作數(shù)均的前兩條指令的目的操作數(shù)均為直接地址方式為直接地址方式, 可很方便地對內(nèi)部可很方
53、便地對內(nèi)部RAM的的00HFFH任任一單元或特殊功能寄存器的指定位進(jìn)行清零、置位、取一單元或特殊功能寄存器的指定位進(jìn)行清零、置位、取反、保持等邏輯操作。反、保持等邏輯操作。 (3) ANL、ORL、XRL的后的后4條指令條指令, 其邏輯運(yùn)算的目其邏輯運(yùn)算的目的操作數(shù)均在累加器的操作數(shù)均在累加器A中中, 且邏輯運(yùn)算結(jié)果保存在且邏輯運(yùn)算結(jié)果保存在A中。中。 AJMP addrll3.3.4 3.3.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令n無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令控制轉(zhuǎn)移類指令共計(jì)控制轉(zhuǎn)移類指令共計(jì) 17 條條, 可分為無條件轉(zhuǎn)移指令、可分為無條件轉(zhuǎn)移指令、 條件條件轉(zhuǎn)移指令、轉(zhuǎn)移指令、 子程序調(diào)用及
54、返回指令。子程序調(diào)用及返回指令。AJMP稱為絕對轉(zhuǎn)移指令稱為絕對轉(zhuǎn)移指令, 雙字節(jié)指令。它的機(jī)器代碼是雙字節(jié)指令。它的機(jī)器代碼是由由 11 位直接地址位直接地址addr11和指令特有操作碼和指令特有操作碼 00001, 按下列按下列分布組成的分布組成的: a10 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0 該指令執(zhí)行后該指令執(zhí)行后, 程序轉(zhuǎn)移的目的地址是由程序轉(zhuǎn)移的目的地址是由AJMP指令所在指令所在位置的地址位置的地址PC值加上該指令字節(jié)數(shù)值加上該指令字節(jié)數(shù) 2, 構(gòu)成當(dāng)前構(gòu)成當(dāng)前PC值。值。 取當(dāng)前取當(dāng)前PC值的高值的高 5 位與指令中提供的位與指令中提
55、供的 11 位直接地址形成位直接地址形成轉(zhuǎn)移的目的地址轉(zhuǎn)移的目的地址, 即即: 由于由于11位地址的范圍是位地址的范圍是 0000000000011111111111, 即即 2 KB范圍范圍, 而目標(biāo)地址的高而目標(biāo)地址的高5位是由位是由PC當(dāng)前值固定的當(dāng)前值固定的, 所以所以程序可轉(zhuǎn)移的位置只能是和程序可轉(zhuǎn)移的位置只能是和PC當(dāng)前值在同一當(dāng)前值在同一2KB的范圍的范圍之內(nèi)。本指令轉(zhuǎn)移可以向前也可以向后之內(nèi)。本指令轉(zhuǎn)移可以向前也可以向后, 指令執(zhí)行后不影指令執(zhí)行后不影響狀態(tài)標(biāo)志位。響狀態(tài)標(biāo)志位。PC15 PC14 PC13 PC12 PC11 a10 a9 a8 a7 a6 a5 a4 a3
56、a2 a1 a0例例: 若若AJMP指令地址指令地址(PC)=2300H。 執(zhí)行指令執(zhí)行指令: AJMP 0FFH; (PC) (PC)+2=2302H, 01FF (PC)100 00011111111 結(jié)果為結(jié)果為: 轉(zhuǎn)移目的地址轉(zhuǎn)移目的地址(PC)=20FFH , 程序向前轉(zhuǎn)向程序向前轉(zhuǎn)向20FFH單單元開始執(zhí)行。元開始執(zhí)行。 SJMP rel;目的地址目的地址=源地址源地址+2+rel實(shí)現(xiàn)的程序轉(zhuǎn)移是雙向的。實(shí)現(xiàn)的程序轉(zhuǎn)移是雙向的。在編寫程序時,在編寫程序時,直接寫上要轉(zhuǎn)向的目標(biāo)地址標(biāo)號直接寫上要轉(zhuǎn)向的目標(biāo)地址標(biāo)號就可以。就可以。例如:例如: LOOP:MOV A,R6 SJMP LO
57、OP n 相對轉(zhuǎn)移指令相對轉(zhuǎn)移指令LJMP addr16; (PC) addr16, 02 addr 158 addr 70稱為長轉(zhuǎn)移指令稱為長轉(zhuǎn)移指令, 三字節(jié)指令三字節(jié)指令, 提供提供 16 位目標(biāo)地址位目標(biāo)地址addr16。指令執(zhí)行時把指令的第二和第三字節(jié)分別裝入指令執(zhí)行時把指令的第二和第三字節(jié)分別裝入PC的高位和的高位和低位字節(jié)中,無條件地轉(zhuǎn)向低位字節(jié)中,無條件地轉(zhuǎn)向addr16指出的目標(biāo)地址。目標(biāo)指出的目標(biāo)地址。目標(biāo)地址可以在地址可以在64K程序存儲器地址空間的任何位置。程序存儲器地址空間的任何位置。例例: 在程序存儲器在程序存儲器0000H單元存放一條指令單元存放一條指令: LJM
58、P 3000H; (PC) 3000H, 02 30 00 則上電復(fù)位后程序?qū)⑻絼t上電復(fù)位后程序?qū)⑻?000H 單元去執(zhí)行用戶程序單元去執(zhí)行用戶程序。n長跳轉(zhuǎn)指令長跳轉(zhuǎn)指令JMP A+DPTR由由A中中8位無符號數(shù)與位無符號數(shù)與DPTR的的16位數(shù)內(nèi)容之和來確定。以位數(shù)內(nèi)容之和來確定。以DPTR內(nèi)容作為基址,內(nèi)容作為基址,A的內(nèi)容作變址。給的內(nèi)容作變址。給A賦予不同的值,賦予不同的值,即可實(shí)現(xiàn)程序的多分支轉(zhuǎn)移。即可實(shí)現(xiàn)程序的多分支轉(zhuǎn)移。n間接跳轉(zhuǎn)指令間接跳轉(zhuǎn)指令規(guī)定的條件滿足,則進(jìn)行轉(zhuǎn)移,條件不滿足則順序執(zhí)行下規(guī)定的條件滿足,則進(jìn)行轉(zhuǎn)移,條件不滿足則順序執(zhí)行下一條指令。當(dāng)條件滿足時,把一條
59、指令。當(dāng)條件滿足時,把PC裝入下一條指令的第一個裝入下一條指令的第一個字節(jié)地址,再把帶符號的相對偏移量字節(jié)地址,再把帶符號的相對偏移量rel加到加到PC上,計(jì)算上,計(jì)算出目標(biāo)地址。出目標(biāo)地址。 JZ rel ;若若 (A)=0, 則則 (PC) (PC)+2+rel 60 rel ;若;若 (A)0, 則則 (PC) (PC)+2 JNZ rel ;若若 (A)0, 則則 (PC) (PC)+2+rel, 70 rel;若;若 (A)=0, 則則 (PC) (PC)+2n 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 CJNE A,direct,relCJNE A,#data,relCJNE Rn,#data,r
60、elCJNE Ri,#data,rel比較前面兩個操作數(shù)的大小,如果它們的值不相等則轉(zhuǎn)移。比較前面兩個操作數(shù)的大小,如果它們的值不相等則轉(zhuǎn)移。如果第一操作數(shù)(無符號整數(shù))小于第二操作數(shù)(無符號整如果第一操作數(shù)(無符號整數(shù))小于第二操作數(shù)(無符號整數(shù)),則置進(jìn)位標(biāo)志位數(shù)),則置進(jìn)位標(biāo)志位Cy,否則清,否則清“0”Cy。n 比較不相等轉(zhuǎn)移指令比較不相等轉(zhuǎn)移指令 以上以上 4 條指令的差別僅在于操作數(shù)的尋址方式不同條指令的差別僅在于操作數(shù)的尋址方式不同, 均完成以下操作均完成以下操作: 若目的操作數(shù)若目的操作數(shù)=源操作數(shù)源操作數(shù), 則則 (PC)(PC)+3 ; 若目的操作數(shù)若目的操作數(shù)源操作數(shù)源操
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣東省華附等四校高三語文1月聯(lián)考試卷附答案解析
- 課題申報(bào)參考:家庭結(jié)構(gòu)轉(zhuǎn)變視域下城市青少年體育參與的家庭代際支持網(wǎng)絡(luò)構(gòu)建研究
- 2025版房地產(chǎn)營銷投標(biāo)文件招標(biāo)合同樣本3篇
- 2025版彩禮退還與婚姻解除補(bǔ)償協(xié)議書范本3篇
- 2025年度個人消費(fèi)借款合同范本全新修訂版4篇
- 2025年通遼從業(yè)資格證應(yīng)用能力考些啥
- 電梯安裝工程2025年度環(huán)保要求合同3篇
- 二零二五年度城市共享車牌租賃經(jīng)營許可合同4篇
- 二零二五版煤礦井巷工程地質(zhì)災(zāi)害防治與監(jiān)測承包合同范本4篇
- 2025年度門窗安裝施工與綠色施工管理合同4篇
- 電纜擠塑操作手冊
- 浙江寧波鄞州區(qū)市級名校2025屆中考生物全真模擬試卷含解析
- 2024-2025學(xué)年廣東省深圳市南山區(qū)監(jiān)測數(shù)學(xué)三年級第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- IATF16949基礎(chǔ)知識培訓(xùn)教材
- 【MOOC】大學(xué)生創(chuàng)新創(chuàng)業(yè)知能訓(xùn)練與指導(dǎo)-西北農(nóng)林科技大學(xué) 中國大學(xué)慕課MOOC答案
- 勞務(wù)派遣公司員工考核方案
- 基礎(chǔ)生態(tài)學(xué)-7種內(nèi)種間關(guān)系
- 2024年光伏農(nóng)田出租合同范本
- 《阻燃材料與技術(shù)》課件 第3講 阻燃基本理論
- 2024-2030年中國黃鱔市市場供需現(xiàn)狀與營銷渠道分析報(bào)告
- 新人教版九年級化學(xué)第三單元復(fù)習(xí)課件
評論
0/150
提交評論