第4章 單片機(jī)指令系統(tǒng)_第1頁
第4章 單片機(jī)指令系統(tǒng)_第2頁
第4章 單片機(jī)指令系統(tǒng)_第3頁
第4章 單片機(jī)指令系統(tǒng)_第4頁
第4章 單片機(jī)指令系統(tǒng)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

4單片機(jī)指令系統(tǒng)*4.1單片機(jī)指令系統(tǒng)4.2單片機(jī)尋址方式*4.3數(shù)據(jù)傳送類指令4.4算術(shù)運(yùn)算類指令4.5邏輯操作類指令4.6控制轉(zhuǎn)移類指令*4.7位操作類指令4.1單片機(jī)指令系統(tǒng)4.1.1、單片機(jī)指令系統(tǒng)1、指令

①指令:規(guī)定計(jì)算機(jī)執(zhí)行特定操作的命令。②指令的表達(dá)形式:機(jī)器碼指令和匯編語言指令。機(jī)器碼指令:用二進(jìn)制代碼表示的指令。匯編語言指令:用助計(jì)符來表示的指令。

2、單片機(jī)指令系統(tǒng)

單片機(jī)指令共有111條指令,使用了七種尋址方式,256個(gè)操作碼,42種助記符,33種功能,51種基本操作。按字節(jié)數(shù)分類,單字節(jié)指令49條,雙字節(jié)指令46條,三字節(jié)指令16條;按運(yùn)算速度分類,單周期指令57條,雙周期指令52條,四周期指令2條。按照功能分:數(shù)據(jù)傳送類,算術(shù)運(yùn)算、邏輯運(yùn)算、控制轉(zhuǎn)移和位處理指令。4.1.2指令格式[標(biāo)號:]操作碼助計(jì)符[目的操作數(shù),][源操作數(shù)][;注釋]①標(biāo)號:指令的符號地址,它通常代表一條程序語句(助計(jì)符指令)的機(jī)器代碼存儲(chǔ)單元的地址。②操作碼:表示指令進(jìn)行何種操作,用助記符形式給出,助計(jì)符為英語單詞的縮寫。例如:ADD,MOV,PUSH,MOVX等。③操作數(shù):指令操作的對象。操作數(shù)分為目的操作數(shù)和源操作數(shù),任何指令的操作都是實(shí)現(xiàn)“從源操作數(shù)到目的操作數(shù)”。操作數(shù)可以是數(shù)字(地址、數(shù)據(jù)),也可以是標(biāo)號或寄存器名。

④注釋:對指令功能的說明。

Back

4.2單片機(jī)尋址方式4.2.1符號注釋作用:描述單片機(jī)指令系統(tǒng)的功能。①Rn:選定當(dāng)前寄存器區(qū)的寄存器R0~7。②@Ri:當(dāng)前選中的工作寄存器組中可作為地址指針的兩個(gè)工作寄存器R0和R1。③#data:8位常數(shù),即包含在指令中的8位常數(shù)。④#data16:16位常數(shù),即包含在指令中的16位常數(shù)。⑤direct:8位片內(nèi)RAM單元(包括SFR)的直接地址。⑥addr11:11位目的地址,用于ACALL和AJMP指令中。⑦addr16:16位目的地址,用于LCALL和LJMP指令中。⑧rel:補(bǔ)碼形式的8位地址偏移量,用于相對轉(zhuǎn)移指令中。⑨bit:片內(nèi)RAM或特殊功能寄存器的直接尋址位地址。⑩@:間接尋址方式中,表示間址寄存器的符號。11.():表示某單元中的內(nèi)容。12.$:4.2.2單片機(jī)尋址方式1、立即尋址指令的操作數(shù)緊跟在指令操作碼的后面,立即數(shù)就是存放在程序存儲(chǔ)器中的常數(shù),用“#”號表示。例如:ADDA,#34H;把立即數(shù)34H與累加器A2、直接尋址操作數(shù)項(xiàng)給出的是參加運(yùn)算的操作數(shù)的地址。直接地址只能用來表示SFR、內(nèi)部數(shù)據(jù)存儲(chǔ)器以及位地址空間。其中,特殊功能寄存器和位地址空間只能用直接尋址方式來訪問。例如:MOVA,3AH3、寄存器尋址寄存器尋址是對R0~R7、累加器A、通用寄存器B、地址寄存器DPTR和進(jìn)位CY進(jìn)行操作。其中R0~R7由操作碼低3位的8種組合表示,ACC、B、DPTR及CY則隱含在操作碼中。例如:MOVA,R24、寄存器間接尋址操作數(shù)所指定的寄存器中存放的不是操作數(shù)本身,而是操作數(shù)的地址。用于訪問片內(nèi)數(shù)據(jù)存儲(chǔ)器或片外數(shù)據(jù)存儲(chǔ)器()。在語法結(jié)構(gòu)上要在其前加@。例如:MOVA,@R05、變址尋址(基址寄存器+變址間接尋址)

以16位寄存器DPTR(或PC)作為基址寄存器,累加器A作為變址寄存器。變址時(shí),把兩者的內(nèi)容相加,得到的結(jié)果作為操作數(shù)的地址。這種方式常用于查表。變址尋址方式有兩類:①以程序計(jì)數(shù)器當(dāng)前值為基址,(當(dāng)前PC值是指本條指令的首址),執(zhí)行這類指令時(shí),先使PC指向下一條指令地址,然后再與累加器內(nèi)容相加,形成變址尋址的地址。格式:MOVCA,@A+PC;(PC)=(PC)+1;(A)=(A)+(PC)②以數(shù)據(jù)指針DPTR為基址,以數(shù)據(jù)指針內(nèi)容和累加器內(nèi)容相加形成變址地址。格式:MOVCA,@A+DPTR;(A)=(A)+(DPTR)

6、相對尋址

以程序計(jì)數(shù)器PC的當(dāng)前值為基址,加上相對尋址指令的字節(jié)長度,再加上指令中給定的偏移量rel的值.(rel是8位帶符號數(shù),用二進(jìn)制補(bǔ)碼表示),形成相對尋址的地址。例如:JNZ75H;JNZrel;JNZPRO1;7、位尋址

位尋址是指對片內(nèi)RAM的位尋址區(qū)和某些可進(jìn)行位尋址的特殊功能寄存器中的位進(jìn)行操作的尋址方式。例如:SETB3DH注意:位地址與字節(jié)地址在形式上是一樣的,但有本質(zhì)區(qū)別。

Back4.3數(shù)據(jù)傳送類指令4.3.1片內(nèi)數(shù)據(jù)傳送類指令格式:MOV目的操作數(shù),源操作數(shù);

1、累加器為目的操作數(shù)的指令MOVA,Rn;寄存器尋址MOVA,direct;直接尋址MOVA,@R0;間接尋址MOVA,#data;立即尋址2、以寄存器Rn為目的操作數(shù)的指令MOVRn,AMOVRn,directMOVRn,#data

3、以直接地址為目的操作數(shù)的指令MOVdirect,AMOVdirect,RnMOVdirect,@RiMOVdirect,#dataMOVdirect,direct4、以間接地址為目的操作數(shù)的指令MOV@Ri,AMOV@Ri,directMOV@Ri,#date5、16位數(shù)據(jù)傳送指令MOVDPTR,#data164.3.2外部數(shù)據(jù)傳送類指令格式:MOVX目的操作數(shù),源操作數(shù);1、通過Ri間接尋址

MOVXA,@RiMOVX@Ri,A這兩條指令適應(yīng)外部0B~256B數(shù)據(jù)區(qū)與累加器A進(jìn)行數(shù)據(jù)交換。2、通過DPTR間接尋址

MOVXA,@DPTRMOVX@DPTR,A這兩條指令適應(yīng)外部64KB數(shù)據(jù)區(qū)與累加器A進(jìn)行數(shù)據(jù)交換。注意:外部數(shù)據(jù)與外部數(shù)據(jù)進(jìn)行交換也只有通過累加器中轉(zhuǎn)。4.3.3查表指令

MOVCA,@A+PCMOVCA,@A+DPTR注:這兩條指令只適用于程序存儲(chǔ)器查表操作。查閱學(xué)生成績子程序:

MOVA,#5;學(xué)號MOVDPTR,#2000HORG1000HMOVCA,@A+DPTR;…PRO1:…RETPRO2:….RETORG2000HTABLE:DB80DB68DB70DB50DB90DB86……END

MOVA,#0;學(xué)號

ADDA,#3;對表格與查表指令差距進(jìn)行修改1FFFH:MOVCA,@A+PCNOPNOP2000H:NOP2001H:DB80DB68DB70DB50DB90DB86……4.3.4堆棧操作指令

PUSHdirect;壓棧(SP)+1SP;指針自動(dòng)加1(direct)(SP):把直接地址單元中的內(nèi)容壓到以SP中內(nèi)容作為地址的單元.

POPdirect;出棧((SP))direct把SP中內(nèi)容作為地址,將該地址單元中的內(nèi)容彈出給直接地址.(SP)-1SP;指針自動(dòng)減14.3.5交換指令XCHA,RnXCHA,directXCHA,@RiXCHDA,@Ri;低4位互換SWAPA;A的低4位和高4位互換注意:數(shù)據(jù)的交換只有通過累加器A才能完成。

Back4.4算術(shù)運(yùn)算類指令(+-*/INCDECDA)1、加法指令格式:ADDA,源操作數(shù);功能:(A)+(源操作數(shù))A功能:(A)+(源操作數(shù))AADDA,RnADDA,directADDA,@RiADDA,#data2、帶進(jìn)位加法指令A(yù)DDCA,源操作數(shù);功能:(A)+(源操作數(shù))+(CY)AADDCA,RnADDCA,directADDCA,@RiADDCA,#data

用于多字節(jié)加法的高字節(jié)加法運(yùn)算.以上指令影響PSW中的標(biāo)志位.我們可以根據(jù)CY和OV中的內(nèi)容判斷無符號和有符號數(shù)加法的溢出情況.eg:將20H為首地址的連續(xù)兩個(gè)單元中的16位數(shù)和以30H為首地址的連續(xù)兩個(gè)單元中的16位數(shù)相加,結(jié)果放到以40H作為首地址的連續(xù)兩個(gè)單元中:MOVA,20H;把被加數(shù)低8位放A中ADDA,30HMOV40H,A;低8位和放40H中.MOVA,21H;把被加數(shù)高8位放A中ADDA,31HJCOVERMOV41H,A;低8位和放40H中.…OVER:…3、帶借位的減法指令式

SUBBA,RnSUBBA,directSUBBA,@RiSUBBA,#data注意事項(xiàng):①減法運(yùn)算在計(jì)算機(jī)中變成了補(bǔ)碼運(yùn)算。②減法指令只有帶借位的,要實(shí)現(xiàn)不帶借位的減法操作,須將PSW中的CY清0。③減法指令同樣影響PSW中的位的值。MOVA,20HCLRCSUBBA,30HMOV40H,AMOVA,21HSUBBA,31HJBOV,OVERMOV41H,A4、乘法指令格式:MULAB;表示(A)×(B)這條指令的功能是把累加器A和寄存器B中兩個(gè)無符號數(shù)相乘,所得16位積低字節(jié)存放在A中,高字節(jié)存放在B中,若乘積大于FFH,則OV置1,,CY總是為0。5、除法指令格式:DIVAB;(A)÷(B)這條指令的功能是進(jìn)行A除B的運(yùn)算,A和B的內(nèi)容均為8位無符號整數(shù)。執(zhí)行指令后,整數(shù)商存于A中,余數(shù)存于B中。執(zhí)行本指令后,標(biāo)志CY和OV均復(fù)位,只有當(dāng)除數(shù)為0時(shí),OV標(biāo)志置1,說明除法溢出。

6、加1指令(不影響標(biāo)志位:FFH+1=00H)

INCAINCRnINCdirectINC@Ri

INCDPTR7、減1指令(不影響標(biāo)志位00H-1=FFH)

DECADECRnDECdirectDEC@Ri8、二十進(jìn)制調(diào)整指令:DAA

Back

4.5邏輯操作類指令1、邏輯“與”指令

ANLA,RnANLA,directANLA,@RiANLA,#dataANLdirect,AANLdirect,#data2、邏輯“或”指令ORLA,Rn

ORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data3、邏輯“異或”指令XRLA,Rn

XRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data4、循環(huán)移位指令

RLA;左移;RRA;右移;RLCA;帶進(jìn)位左移;用于串行數(shù)據(jù)傳送設(shè)計(jì)RRCA;帶進(jìn)位右移;用于串行數(shù)據(jù)傳送設(shè)計(jì)5、取反指令

CPLA

6、清“0”指令

CLRA

Back4.6控制轉(zhuǎn)移類指令1、無條件轉(zhuǎn)移指令

LJMPaddr16;64KB范圍之內(nèi)跳轉(zhuǎn)(PC)目=addr16

AJMPaddr11;2KB范圍之內(nèi)跳轉(zhuǎn)(PC)起+2與PC目的高5位相同,保證在2KB范圍

SJMPrel;256B范圍內(nèi)跳轉(zhuǎn)(-128——127)(PC)起+2+rel=(PC)目在實(shí)際應(yīng)用中,我將指令寫成:LJMPLOOPAJMPLOOPSJMPLOOP

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

JZrel;若A=0,則(PC)起+2+rel=(PC)目JNZrel;若A≠0,則PC+2+relCJNEA,direct,relCJNEA,#data,relCJNERn,#data,reLCJNE@Ri,#data,rel這四句語句執(zhí)行過程是這樣的:若“目的操作數(shù)”≠“原操作數(shù)”則轉(zhuǎn)移到:(PC)起+3+rel=(PC)目;當(dāng)“目的操作數(shù)”<“原操作數(shù)”;1=C,否則,0=CDJNZRn,rel;若Rn-1≠0,則PC+2+rel=PCDJNZdirect,rel3、間接轉(zhuǎn)移指令

JMP@A+DPTR;(A)+(DPTR)=(PC)這一條散轉(zhuǎn)指令,應(yīng)用在程序存儲(chǔ)器中。4、子程序調(diào)用和返回指令

LCALLadr16;(PC)+3=(PC)斷點(diǎn)地址,斷點(diǎn)地址自動(dòng)壓棧(系統(tǒng)的硬件自動(dòng)完成)(SP)+1=(SP)先低8位PC0~7=((SP)),(SP)+1=(SP)后高8位PC8~15=((SP)),轉(zhuǎn)移到addr16=(PC)目,執(zhí)行子程序

ACALLaddr11;PC+2=PC,(SP)+1=(SP)PC7~0=((SP)),(SP)+1=(SP)PC15~8=((SP)),addr11=PC10~0壓棧過程同上(機(jī)器碼生成規(guī)則類似于AJMP)

RET;子程序返回?cái)帱c(diǎn)地址自動(dòng)出棧(硬件自動(dòng)完成)先高8位((SP))=PC15~8,(SP)-1=(SP)后低8位

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論