第三章89C51的指令系統(tǒng)_第1頁(yè)
第三章89C51的指令系統(tǒng)_第2頁(yè)
第三章89C51的指令系統(tǒng)_第3頁(yè)
第三章89C51的指令系統(tǒng)_第4頁(yè)
第三章89C51的指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章89C51的指令系統(tǒng)提要指令系統(tǒng)簡(jiǎn)介尋址方式數(shù)據(jù)傳送類指令算術(shù)運(yùn)算類指令邏輯運(yùn)算類指令控制轉(zhuǎn)移類指令位操作類指令2023年2月4日2第1節(jié)指令系統(tǒng)簡(jiǎn)介1、簡(jiǎn)要介紹2、指令格式2023年2月4日31、簡(jiǎn)要介紹MCS-51單片機(jī)共有111條指令:?jiǎn)巫止?jié)指令有49條,雙字節(jié)指令有45條,三字節(jié)指令有17條。其中有64條是單機(jī)器周期指令,45條雙機(jī)器周期指令,有2條是4機(jī)器周期指令(乘法和除法,單字節(jié))。根據(jù)功能可分為5類:數(shù)據(jù)傳輸指令,有29條算術(shù)運(yùn)算類指令,有24條邏輯操作類指令,有24條位操作指令,有17條控制轉(zhuǎn)移指令,是17條。2023年2月4日42、指令格式指令格式:[標(biāo)號(hào)]:<操作碼>[目的操作數(shù)],[源操作數(shù)][;注釋]標(biāo)號(hào):指令的符號(hào)地址操作碼:規(guī)定了指令的操作功能操作數(shù):參加操作的數(shù)據(jù)、數(shù)據(jù)地址或符號(hào)地址注釋:該條指令的說(shuō)明,便于閱讀MCS-51指令系統(tǒng)根據(jù)指令字節(jié)長(zhǎng)度可分為單字節(jié)、雙字節(jié)和三字節(jié)。第二節(jié)尋址方式1、尋址方式定義2、尋址方式中的常用符號(hào)3、尋址方式1、尋址方式定義將尋找指令中的操作數(shù)或操作數(shù)所在地址,稱為尋址。把如何找到操作數(shù)或操作數(shù)所在的地址,稱為尋址方式。尋址方式越多,計(jì)算機(jī)的功能就越強(qiáng),靈活性就越大,更能有效的處理各種數(shù)據(jù)。2、指令中的常用符號(hào)Rn:n等于0—7。R0-R7代表當(dāng)前所選定的工作寄存器組。Ri:i取值為0或1??勺鳛榈刂分羔樀膬蓚€(gè)工作寄存器,既可存放數(shù)據(jù),又可存放地址。#data:表示8位的立即數(shù),出現(xiàn)在指令中的8位常數(shù)。#data16:表示16位的立即數(shù),出現(xiàn)在指令當(dāng)中的16位常數(shù)。direct:直接地址,表示8位片內(nèi)數(shù)據(jù)存儲(chǔ)器單元,SFR也是直接地址。addr11:表示一個(gè)11位的目的地址,主要用在ACALL和AJMP指令,其目的地址是在下一條指令地址所在的2K字節(jié)分區(qū)內(nèi)。addr16:表示一個(gè)16位的目的地址,主要用在于LCALL和LJMP指令中,可在整個(gè)64K地址空間內(nèi)轉(zhuǎn)移。2、指令中的常用符號(hào)disp:表示一個(gè)補(bǔ)碼形式的8位地址偏移量,以下一條指令的第一字節(jié)地址為基值,偏移的范圍是-128到+127。bit:表示片內(nèi)數(shù)據(jù)存儲(chǔ)器中或特殊寄存器中的可直接尋址的位地址。@:間址寄存器前面的前綴符號(hào),用在寄存器間接尋址方式中。/:取反符號(hào),在位操作指令中,先求反再進(jìn)行操作。(x):表示指定的寄存器或地址中的內(nèi)容。((x)):表示由x所指的地址單元中的內(nèi)容,適合間址尋址使用。箭頭←:表示指令的操作流程,將箭頭右邊內(nèi)容送給左邊的單元。$:表示本條指令的起始地址。3、尋址方式1)立即尋址2)直接尋址3)寄存器尋址4)間接尋址5)變址尋址6)相對(duì)尋址7)位尋址1)立即尋址立即尋址指令大多是雙字節(jié):第一個(gè)字節(jié)是操作碼第二個(gè)字節(jié)是操作數(shù)。真接參與運(yùn)算的操作數(shù),稱為立即數(shù),數(shù)的前面面用“#”來(lái)表示。例:MOVA,#31H有一條指令的源操作數(shù)是16位,功能是向DPTR傳送16位的立即數(shù),立即數(shù)的高8位送到DPH里,而低8位送到DPL中。例:MOVDPTR,#3FA6H2)直接尋址在指令當(dāng)中,直接給出操作數(shù)所在的存儲(chǔ)地址,包括片內(nèi)RAM128個(gè)單元,以及所有特殊功能寄存器SFR。對(duì)于特殊功能寄存器,直接尋址時(shí),可以用其地址,也可以使用其名字。(P1或90H)例:MOVA,69HMOVA,P1MOVA,90H3)寄存器尋址對(duì)工作寄存器R0——R7、累加器A、寄存器B、數(shù)據(jù)指針DPTR中的數(shù)進(jìn)行尋址。R0到R7是由操作碼的低三位來(lái)表示。其它寄存器隱含在操作碼當(dāng)中。例:MOVA,R5;A(R5)指令代碼:EDH(11101101)注:操作碼的低三位101表示操作數(shù)是R5。MOVR2,#30H4)寄存器間接尋址方式寄存器間接尋址中,操作數(shù)所指定的寄存器存放的不是操作數(shù)本身,而是操作數(shù)的地址??捎米鏖g接寄存器的有R0、R1和DPTR。間址寄存器使用時(shí),前面一定要加@來(lái)標(biāo)識(shí)。當(dāng)訪問(wèn)片內(nèi)RAM,或片外RAM低256個(gè)字節(jié)時(shí):可用R0或R1來(lái)作為間址寄存器。操作碼的最低位指明具體使用哪個(gè)寄存器。例:MOVA,@R1

指令代碼:E7H5)變址尋址變址尋址是通過(guò)“基址寄存器+變址寄存器”來(lái)進(jìn)行間接尋址以DPTR(數(shù)據(jù)指針)或PC(程序計(jì)數(shù)器)為基址寄存器以A作為變址寄存器。主要是用在查表操作。例:MOVCA,@A+DPTR

指令代碼:93H

MOVCA,@A+PC6)相對(duì)尋址相對(duì)尋址:PC中的當(dāng)前值+指令的第二字節(jié)給出的偏移量,相加的結(jié)果作為相對(duì)跳轉(zhuǎn)指令的目的地址。

只在相對(duì)轉(zhuǎn)移指令中使用當(dāng)前值:正運(yùn)行指令之后的字節(jié)地址,即下一條指令起始地址。偏移量是帶符號(hào)是數(shù),有正負(fù)之分,以補(bǔ)碼的形式給出,轉(zhuǎn)移范圍是-128到+127。例:JC06H

指令代碼:40H,06H7)位尋址位尋址:對(duì)片內(nèi)RAM的可位尋址區(qū)域和某些可位尋址的特殊功能寄存器進(jìn)行位操作。在進(jìn)行位操作的時(shí)候,進(jìn)位位C作為位累加器使用。位地址與直接地址中的字節(jié)地址,形式是完全一樣,主要由操作碼來(lái)區(qū)分。例:SETB3DH

指令代碼:D2H,3DH位尋址位尋址的位地址表示方法:(1)直接使用位地址(2)用單元地址加位序號(hào)表示(3)用位名稱表示(4)對(duì)特殊功能寄存器可直接用寄存器符號(hào)加位序號(hào)表示2023年2月4日18第三節(jié)數(shù)據(jù)傳送類指令傳送類指令是指令系統(tǒng)當(dāng)中,最基本、使用最多的一類指令,主要用于數(shù)據(jù)的傳送,保存和交換等。具體分為以下幾類:

1、以累加器A為目的操作數(shù)的指令

2、以寄存器Rn為目的操作數(shù)的指令

3、以直接地址為目的操作數(shù)的指令

4、以間接地址為目的操作數(shù)的指令

5、16位的數(shù)據(jù)傳送指令

6、累加器A與片外數(shù)據(jù)存儲(chǔ)器傳送指令

7、查表指令

8、交換指令

9、堆棧指令1、以累加器A為目的操作數(shù)的指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MOVA,Rn11101rrrA←(Rn)1121MOVA,direct11100101directA←(direct)1122MOVA,@Ri1110011iA←((Ri))1121MOVA,#data01110100dataA←data11222、以寄存器Rn為目的操作數(shù)的指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MOVRn,A11111rrrRn←(A)1121MOVRn,direct10101rrrdirectRn←(direct)2242MOVRn,#data01111rrrdataRn←data11223、以直接地址為目的操作數(shù)的指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MOVdirect,A11110101directdirect←(A)1122MOVdirect,Rn10001rrrdirectdirect←(Rn)2242MOVdirect2,direct110000101direct1direct2direct2←(direct1)2243MOVdirect,@Ri1000011idirectdirect←((Ri))2242MOVdirect,#data01110101directdatadirect←data22434、以間接地址為目的操作數(shù)的指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MOV@Ri,A1111011i(Ri)←(A)1121MOV@Ri,direct1010011idirect(Ri)←(direct)1122MOV@Ri,#data0111011idata(Ri)←data22425、16位的數(shù)據(jù)傳送指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MOVDPTR,#data1610010000data15~8data7~0DPH←data15~8DPL←data7~022436、累加器A與片外數(shù)據(jù)存儲(chǔ)器傳送指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MOVXA,@DPTR11100000A←((DPTR))2241MOVX@DPTR,A11110000(DPTR)←(A)2241MOVXA,@Ri1110001iA←((Ri))2241MOVX@Ri,A1111001i(Ri)←(A)22417、查表指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MOVCA,@A+PC10000011PC←(PC)+1A←((A)+(PC))2241MOVCA,@A+DPTR10010011A←((A)+(DPTR))22418、交換指令

高4位

低4位匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)XCHA,Rn11001rrr1121XCHA,direct11000101direct1122XCHA,@Ri1100011i1121XCHDA,@Ri1101011i1121SWAPA110001001121(A)(Rn)(A)(direct)(A)((Ri))(A)0~3((Ri))0~39、堆棧指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)PUSHdirect11000000directSP←(SP)+1(SP)←(direct)2242POPdirect11010000directdirect←((SP))SP←(SP)-12242第四節(jié)算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令主要是對(duì)8位數(shù)進(jìn)行算術(shù)操作,包括加法、減法、加1、減1、乘法和除法,以及十進(jìn)制調(diào)整指令。算術(shù)運(yùn)算類操作大多要影響到PSW中的相關(guān)位:通過(guò)溢出標(biāo)志OV,可以對(duì)帶符號(hào)數(shù)進(jìn)行補(bǔ)碼運(yùn)算;借助進(jìn)位標(biāo)志C,可以進(jìn)行多精度的加減運(yùn)算;借助輔助進(jìn)位位AC對(duì)壓縮BCD碼進(jìn)行運(yùn)算。第四節(jié)算術(shù)運(yùn)算類指令1、加法2、帶進(jìn)位加法3、減法4、加一5、減一6、乘除法7、十進(jìn)制調(diào)整指令1、加法匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)ADDA,Rn00101rrrA←(A)+(Rn)1121ADDA,direct00100101directA←(A)+(direct)1122ADDA,@Ri0010011iA←(A)+((Ri))1121ADDA,#data00100100dataA←(A)+data11221、加法與加法相關(guān)的標(biāo)志位

C:加法運(yùn)算中,最高位第7位有進(jìn)位,進(jìn)位位

C=1,否則C=0。

AC:加法運(yùn)算中,如果低半字節(jié)向高半字節(jié)有進(jìn) 位,AC=1,否則AC=0。

OV:帶符號(hào)位數(shù)相加,要考慮溢出位OV。如果

OV=1,表示運(yùn)算產(chǎn)生溢出。判斷準(zhǔn)則:OV=(D7進(jìn)位位)⊕(D6進(jìn)位位)2、帶進(jìn)位的加法匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)ADDCA,Rn00111rrrA←(A)+(Rn)+(Cy)1121ADDCA,direct00110101directA←(A)+(direct)+(Cy)1122ADDCA,@Ri0011011iA←(A)+((Ri))+(Cy)1121ADDCA,#data00110100dataA←(A)+data+(Cy)11222、帶進(jìn)位的加法利用ADDC指令可以進(jìn)行多字節(jié)加法的運(yùn)算!運(yùn)算結(jié)果對(duì)PSW標(biāo)志位的影響與ADD指令相同。說(shuō)明:所加的進(jìn)位標(biāo)志CY的值是在該指令執(zhí)行之前已經(jīng)存在的進(jìn)位標(biāo)志值,而不是執(zhí)行該指令過(guò)程中產(chǎn)生的進(jìn)位標(biāo)志值。3、減法指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)SUBBA,Rn10011rrrA←(A)-(Rn)-(Cy)1121SUBBA,direct10010101directA←(A)-(direct)-(Cy)1122SUBBA,@Ri1001011iA←(A)-((Ri))-(Cy)1121SUBBA,#data10010100dataA←(A)-data-(Cy)11223、減法指令減法指令只有帶借位的減法,沒(méi)有不帶借位的減法。C被稱為借位位,C=1,表示有借位;C=0,表示沒(méi)有借位。溢出標(biāo)志由運(yùn)算時(shí)第6位和第7位的借位位的“異或”計(jì)算得到。4、加1指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)INCA00000100/A←(A)+11121INCRn00001rrrRn←(Rn)+11121INCdirect00000101directdirect←(direct)+11122INC@Ri0000011i(Ri)←((Ri))+11121INCDPTR10100011DPTR←(DPTR)+122414、加1指令I(lǐng)NC@Ri:Ri寄存器所指向的地址單元的內(nèi)容加1。除INCA,導(dǎo)致P發(fā)生變化外,其他指令不會(huì)影響到PSW的標(biāo)志位。INC指令主要應(yīng)用于寄存器間接尋址,用來(lái)改變操作數(shù)的地址。5、減1指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)DECA00010100/A←(A)-11121DECRn00011rrrRn←(Rn)-11121DECdirect00010101directdirect←(direct)-11122DEC@Ri0001011i(Ri)←((Ri))-111216、乘除法匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MULAB10100100BA←(A)×(B)4481八位無(wú)符號(hào)數(shù)乘法,乘積的低8位放在A中,高8位放在B中。如果乘積大于FFH,OV被置1,表示乘積大于FFH。乘法運(yùn)算會(huì)將C硬件清0。6、乘除法匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)DIVAB100001004481B(余數(shù))(B)累加器A除以B寄存器的內(nèi)容,把商送到累加器A,把余數(shù)存放在B寄存器。如果除數(shù)為0,OV被置1,表示除法沒(méi)有意義。否則OV被清0。除法運(yùn)算將C清零。7、十進(jìn)制調(diào)整指令指令:DAA功能:對(duì)A中剛進(jìn)行的兩個(gè)BCD碼的加法結(jié)果自動(dòng)進(jìn)行修正。該指令會(huì)影響進(jìn)位標(biāo)志CY。在單片機(jī)中沒(méi)有專門(mén)的BCD碼加法指令,要進(jìn)行BCD碼加法運(yùn)算,同樣要使用加法指令A(yù)DD或ADDC。單片機(jī)在執(zhí)行ADD或ADDC指令時(shí),是按照二進(jìn)制規(guī)則進(jìn)行,對(duì)于4位二進(jìn)制數(shù)是按逢16進(jìn)位。而B(niǎo)CD碼是逢十進(jìn)位,二者存在進(jìn)位差,中間差了6。因此單純用ADD或ADDC指令進(jìn)行BCD碼相加時(shí),會(huì)出現(xiàn)錯(cuò)誤。在51單片機(jī)中,遇到十進(jìn)制調(diào)整情況,中間結(jié)果的修正是由硬件自動(dòng)進(jìn)行,用戶不用考慮加6,只要在加法指令后緊跟一條“DAA”指令既可。第五節(jié)邏輯運(yùn)算類指令1、邏輯與2、邏輯或3、邏輯異或4、累加器清零、取反5、循環(huán)移位1、邏輯與匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)ANLA,Rn01011rrrA←(A)∧(Rn)1121ANLA,direct01010101directA←(A)∧(direct)1122ANLA,@Ri0101011iA←(A)∧(Ri)1121ANLA,#data01010100dataA←(A)∧data1122ANLdirect,A01010010directdirect←(direct)∧(A)1122ANLdirect,#data01010011directdatadirect←(direct)∧data22431、邏輯與前四條指令是將累加器A的內(nèi)容和操作數(shù)所指的內(nèi)容按位進(jìn)行邏輯“與”,結(jié)果存放在A中。后兩條指令是將直接地址單元中的內(nèi)容和操作數(shù)所指的內(nèi)容按位進(jìn)行邏輯“與”,結(jié)果存入直接地址單元中。若直接地址正好是I/O端口,則為“讀——改——寫(xiě)”操作。如ANLP1,A。邏輯與可用于將某些位屏蔽,將要屏蔽的位和“0”相與,保留不變的位同“1”相與。2、邏輯或匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)ORLA,Rn01001rrrA←(A)∨(Rn)1121ORLA,direct01000101directA←(A)∨(direct)1122ORLA,@Ri0100011iA←(A)∨((Ri))1121ORLA,#data01000100dataA←(A)∨data1122ORLdirect,A01000010directdirect←(direct)∨(A)1122ORLdirect,#data01000011directdatadirect←(direct)∨data22432、邏輯或功能:將兩個(gè)指定的操作數(shù)按位進(jìn)行邏輯“或”。前四條指令的操作結(jié)果存放在累加器A中,后兩條指令的操作結(jié)果存放在直接地址單元中。邏輯或可將某些位置位,將要置位的位和“1”相或,要保留不變的位同“0”相或。3、邏輯異或匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)XRLA,Rn01101rrr1121XRLA,direct01100101direct1122XRLA,@Ri0110011i1121XRLA,#data01100100data1122XRLdirect,A01100010direct1122XRLdirect,#data01100011directdata2243將兩個(gè)指定的操作數(shù)按位進(jìn)行“異或”,前四條指令的結(jié)果存放在累加器A中,后兩條指令的操作結(jié)果存放在直接地址單元中應(yīng)用:用于將某些位取反,將需求反的位同“1”相異或,要保留的位同“0”相異或。A←(A)(Rn)A←(A)(direct)A←(A)(Ri)A←(A)datadirect←(direct)(A)direct←(direct)data4、清零、取反匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)CLRA11100100A←01121CPLA111101001121清零和取反指令只針對(duì)累加器A,單字節(jié)。只有對(duì)A的取反指令,沒(méi)有求補(bǔ)指令。若要進(jìn)行求補(bǔ)操作,可按“求反加1”來(lái)進(jìn)行。以上所有的邏輯運(yùn)算指令,對(duì)CY、AC和OV標(biāo)志都沒(méi)有影響,只在涉及到累加器A時(shí),才會(huì)影響奇偶標(biāo)志P。5、循環(huán)移位第六節(jié)控制轉(zhuǎn)移類指令51系列單片機(jī)有比較豐富的控制轉(zhuǎn)移指令,具體分類:

1、無(wú)條件轉(zhuǎn)移指令(4條)

2、條件轉(zhuǎn)移指令(8條)

3、調(diào)用子程序和返回指令(4條)

4、空操作指令(1條)1、無(wú)條件轉(zhuǎn)移指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)LJMPaddr1600000010a15~a8a7~a0PC←addr15~02243AJMPaddr11a10a9a800001a7~a0PC←(PC)+2PC10~0←addr10~0PC15~11不變2242SJMPdisp10000000dispPC←(PC)+2PC←(PC)+disp2242JMP@A+DPTR01110011/PC←(A)+(DPTR)2241有4條無(wú)條件轉(zhuǎn)移指令,提供不同的轉(zhuǎn)移范圍和方式,可使程序無(wú)條件轉(zhuǎn)到指令所提供的地址上。1、無(wú)條件轉(zhuǎn)移指令LJMPaddr1600000010a15~a8a7~a0PC←addr15~022431)長(zhǎng)轉(zhuǎn)移指令把指令中給出的16位目的地址addr16送入程序計(jì)數(shù)器PC,使程序無(wú)條件轉(zhuǎn)移到addr16處執(zhí)行。16位地址可尋址64KBROM,可轉(zhuǎn)向64K程序存儲(chǔ)器地址空間的任何單元。長(zhǎng)轉(zhuǎn)移指令是由三字節(jié)指令組成:操作碼、高8位地址、低8位地址。1、無(wú)條件轉(zhuǎn)移指令A(yù)JMPaddr11a10a9a800001a7~a0PC←(PC)+2PC10~0←addr10~0PC15~11不變22422)絕對(duì)轉(zhuǎn)移指令指令格式:包括2字節(jié),具體為:

a10a9a800001a7a6a5a4a3a2a1a0

a10~a8占據(jù)第一字節(jié)的高3位,a7~a0占滿第二字節(jié),而00001是這條指令特有的操作碼,占據(jù)第一字節(jié)的低5位。操作數(shù)出現(xiàn)在操作碼中。低11位地址,范圍為00000000000~11111111111,可轉(zhuǎn)移的范圍是2KB,相對(duì)于當(dāng)前地址可以向前也可向后轉(zhuǎn)移。注意:轉(zhuǎn)移的目的位置與PC+2的地址必須在同一個(gè)2K段內(nèi)。1、無(wú)條件轉(zhuǎn)移指令1、無(wú)條件轉(zhuǎn)移指令SJMPdisp10000000dispPC←(PC)+2PC←(PC)+disp22423)短轉(zhuǎn)移指令無(wú)條件相對(duì)轉(zhuǎn)移指令,雙字節(jié),相對(duì)尋址,disp是8位偏移量,范圍為-128~+127。目的地址=(PC)+2+disp1、無(wú)條件轉(zhuǎn)移指令JMP@A+DPTR01110011/PC←(A)+(DPTR)22414)變址尋址轉(zhuǎn)移指令(散轉(zhuǎn)指令/間接轉(zhuǎn)移指令)將累加器A中的8位無(wú)符號(hào)數(shù)與基址寄存器DPTR中的16位地址相加,得到的和作為目的地址送入PC,實(shí)現(xiàn)轉(zhuǎn)移。將多分支轉(zhuǎn)移指令表的首地址裝入DPTR,對(duì)應(yīng)每個(gè)分支的索引裝入累加器A,根據(jù)A中內(nèi)容動(dòng)態(tài)選擇轉(zhuǎn)向哪一條分支,實(shí)現(xiàn)多分支轉(zhuǎn)移的功能。2、條件轉(zhuǎn)移指令有條件限制,當(dāng)滿足某種條件時(shí),才進(jìn)行轉(zhuǎn)移;不滿足條件時(shí),程序按順序執(zhí)行。具有共同特點(diǎn):所有的條件轉(zhuǎn)移指令都屬于相對(duì)轉(zhuǎn)移指令,轉(zhuǎn)移范圍相同,以PC當(dāng)前值為基準(zhǔn)的256B范圍內(nèi)(-128~+127)。計(jì)算轉(zhuǎn)移地址的方法相同:轉(zhuǎn)移地址=PC當(dāng)前值

+disp條件轉(zhuǎn)移分類:

1)累加器判零轉(zhuǎn)移指令

2)比較判斷轉(zhuǎn)移指令

3)減1條件轉(zhuǎn)移指令2、條件轉(zhuǎn)移指令2、條件轉(zhuǎn)移指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)JZdisp01100000dispPC←(PC)+2若A=0,則PC←(PC)+disp2242若A≠0,順序執(zhí)行JNZdisp01110000dispPC←(PC)+2若A≠0,則PC←(PC)+disp2242若A=0,順序執(zhí)行1)累加器判零轉(zhuǎn)移指令分別對(duì)累加器A的內(nèi)容為零或不為零進(jìn)行檢測(cè),當(dāng)滿足各自條件時(shí),程序轉(zhuǎn)向指定的目標(biāo)地址;當(dāng)不滿足各自的條件時(shí),程序順序向下執(zhí)行。目標(biāo)地址:下一條指令第一個(gè)字節(jié)的地址+相對(duì)偏移量。2、條件轉(zhuǎn)移指令2)比較判斷轉(zhuǎn)移指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)CJNEA,direct,disp10110101directdispPC←(PC)+3若(direct)<(A),則2243PC←(PC)+disp且Cy←0若(direct)>(A),則PC←(PC)+disp且Cy←1若(direct)==(A),則順序執(zhí)行,且Cy←0CJNEA,#data,disp10110100datadispPC←(PC)+3若data<(A),則2243PC←(PC)+disp且Cy←0若data>(A),則PC←(PC)+disp且Cy←1若data==(A),則順序執(zhí)行,且Cy←0CJNERn,#data,disp10111rrrdatadispPC←(PC)+3若data<(Rn),則2243PC←(PC)+disp且Cy←0若data>(Rn),則PC←(PC)+disp且Cy←1若data==(Rn),則順序執(zhí)行,且Cy←0CJNE@Ri,#data,disp1011011idatadispPC←(PC)+3若data<((Ri)),則2243PC←(PC)+disp且Cy←0若data>((Ri)),則PC←(PC)+disp且Cy←1若data==((Ri)),則順序執(zhí)行,且Cy←0比較判斷轉(zhuǎn)移指令的特點(diǎn):三字節(jié)指令,因此PC當(dāng)前值=PC+3;比較時(shí)實(shí)際上做的是減法操作,不保存差值,具體結(jié)果反映在C上;注意在大于和小于(不等于)的時(shí)候,都會(huì)實(shí)現(xiàn)跳轉(zhuǎn),跳轉(zhuǎn)到目標(biāo)地址位置后,如果要做進(jìn)一步的操作,需要通過(guò)判斷C是0還是1,可根據(jù)這個(gè)標(biāo)志來(lái)做下一步的操作。參與比較的兩個(gè)操作數(shù)當(dāng)作無(wú)符號(hào)數(shù)看待;如果進(jìn)行兩個(gè)有符號(hào)數(shù)大小的比較,需要依據(jù)符號(hào)位、CY和OV來(lái)進(jìn)行判決。2、條件轉(zhuǎn)移指令2、條件轉(zhuǎn)移指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)DJNZRn,disp11011rrrdispPC←(PC)+2Rn←(Rn)-12242當(dāng)(Rn)≠0,則PC←(PC)+disp當(dāng)(Rn)=0,則結(jié)束循環(huán),程序往下執(zhí)行DJNZdirect,disp11010101directdispPC←(PC)+3direct←(direct)-12243當(dāng)(direct)≠0,則PC←(PC)+disp當(dāng)(direct)=0,則結(jié)束循環(huán),程序往下執(zhí)行3)減1條件轉(zhuǎn)移指令減1條件轉(zhuǎn)移指令通常在循環(huán)程序中作為計(jì)數(shù)器使用。賦初值后,每執(zhí)行一次程序,計(jì)數(shù)器減1,直到為零結(jié)束循環(huán)。3、調(diào)用子程序和返回指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)ACALLaddr11a10a9a810001addr7~0PC←(PC)+2SP←(SP)+1(SP)←PC7~02242SP←(SP)+1(SP)←PC15~8PC15~11不變PC10~0←addr10~0LCALLaddr1600010010addr15~8addr7~0PC←(PC)+3SP←(SP)+1(SP)←PC7~02243SP←(SP)+1(SP)←PC15~8PC15~0←addr15~0RET00100010/PC15~8←(SP)SP←(SP)-12241PC7~0←((SP))SP←(SP)-1RETI00110010/PC15~8←((SP))SP←(SP)-12241PC7~0←((SP))SP←(SP)-1匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)LCALLaddr1600010010addr15~8addr7~0PC←(PC)+3SP←(SP)+1(SP)←PC7~02243SP←(SP)+1(SP)←PC15~8PC15~0←addr15~01)長(zhǎng)調(diào)用指令長(zhǎng)調(diào)用是16位目的地址,可以在整個(gè)64位的地址范圍內(nèi)進(jìn)行調(diào)用。相對(duì)于LJMP,有壓棧操作。3、調(diào)用子程序和返回指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)ACALLaddr11a10a9a810001addr7~0PC←(PC)+2SP←(SP)+1(SP)←PC7~02242SP←(SP)+1(SP)←PC15~8PC10~0←addr10~0PC15~11不變2)絕對(duì)調(diào)用在使用ACALL時(shí),單片機(jī)會(huì)根據(jù)具體指令會(huì)自動(dòng)匯編成目標(biāo)地址。只要保證調(diào)用子程序的入口地址與PC當(dāng)前值在2K字節(jié)段范圍內(nèi)。相對(duì)于AJMP,ACALL有壓棧操作。3、調(diào)用子程序和返回指令3、調(diào)用子程序和返回指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)RET00100010/PC15~8←((SP))SP←(SP)-12241PC7~0←((SP))SP←(SP)-1前者是子程序的返回指令,后者是中斷子程序的返回,二者完成的操作是一樣的,通過(guò)返回指令彈出之前壓棧的PC高八位和低八位。RET與RETI的區(qū)別:RETI返回中斷斷點(diǎn),同時(shí)清除中斷響應(yīng)時(shí)被置位的優(yōu)先級(jí)狀態(tài)觸發(fā)器二者不能互換使用。RETI00110010/PC15~8←((SP))SP←(SP)-12241PC7~0←((SP))SP←(SP)-14、空操作指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)NOP00000000/PC←(PC)+11121空操作常常用來(lái)產(chǎn)生一個(gè)機(jī)器周期的精確延時(shí)。第七節(jié)位操作指令51單片機(jī)具有豐富的位操作功能,共17條指令.位操作指令以“可尋址位”為對(duì)象,按位來(lái)進(jìn)行操作,與前面討論的按字節(jié)操作的指令是有區(qū)別的。通過(guò)位操作指令可實(shí)現(xiàn)位傳送、位狀態(tài)控制、位邏輯運(yùn)算和位條件轉(zhuǎn)移等。位地址有4種表示方式:“直接位地址”方式“直接地址+位數(shù)”方式“位名稱”方式“特殊功能寄存器+序號(hào)”方式。1、位數(shù)據(jù)傳送指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)MOVC,bit10100010bitC←(bit)1122MOVbit,C10010010bitbit←(c)2242直接位地址不能夠傳給直接位地址,MOVbit1,bit2是錯(cuò)誤的。而字節(jié)的直接地址間是可以互傳內(nèi)容。2、位狀態(tài)控制指令CPL對(duì)該位內(nèi)容求反,改變了該位的內(nèi)容,而/bit將該位值取出來(lái),求反參加運(yùn)算,并不改變bit位的內(nèi)容。當(dāng)直接位地址是I/O口的某一位時(shí),具有讀改寫(xiě)的功能。例如:CPLP1.0。匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)CLRC11000011C←01121CLRbit11000010bitbit←01122CPLC101100111121CPLbit10110010bit1122SETBC11010011C←11121SETBbit11010010bitbit←11122C←(c)bit←(bit)3、位邏輯運(yùn)算指令邏輯與/或就是相乘和相加,CPL是邏輯求反,對(duì)應(yīng)硬件的與/或/非三種操作。位操作沒(méi)有異或操作指令。匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)ANLC,bit10000010bitC←(C)∧(bit)2242ANLC,/bit10110000bit2242ORLC,bit01110010bitC←(C)∨(bit)2242ORLC,/bit10100000bit2242C←(C)∧(bit)C←(C)∨(bit)4、位條件轉(zhuǎn)移指令匯編格式機(jī)器碼操作機(jī)器周期振蕩周期字節(jié)JCdisp01000000dispPC←(PC)+2若Cy=1,則PC←(PC)+disp2242若Cy=0,順序執(zhí)行JNCdisp01010000dispPC←(PC)+2若Cy=0,則PC←(PC)+disp2242若Cy=1,順序執(zhí)行JBbit,disp00100000bitdispPC←(PC)+3若(bit)=1,則PC←(PC)+disp2243若(bit)=0,順序執(zhí)行JNBbit,disp00110000bitdispPC←(PC)+3若(bit)=0,則PC←(PC)+disp2243若(bit)=1,順序執(zhí)行JBCbit,disp00010000bitdispPC←(PC)+3若(bit)=1,則(bit)←0PC←(PC)+disp

2243若(bit)=0,順序執(zhí)行關(guān)于JBC的使用:如果需要在跳轉(zhuǎn)之前對(duì)bit位要清零的話,需要用JBC。如果只需要判斷進(jìn)行跳轉(zhuǎn),就用JB。在串口和定時(shí)/計(jì)數(shù)器中,在通過(guò)軟件查詢的方式來(lái)響應(yīng)中斷時(shí),就會(huì)用到

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論