單片機(jī)尋址方式指令系統(tǒng)教程.ppt_第1頁(yè)
單片機(jī)尋址方式指令系統(tǒng)教程.ppt_第2頁(yè)
單片機(jī)尋址方式指令系統(tǒng)教程.ppt_第3頁(yè)
單片機(jī)尋址方式指令系統(tǒng)教程.ppt_第4頁(yè)
單片機(jī)尋址方式指令系統(tǒng)教程.ppt_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章指令系統(tǒng),硅谷芯微技術(shù)貢獻(xiàn)網(wǎng)址:www.threeway.cc,本章重點(diǎn):,理解指令的6種尋址方式理解各種類型指令的用法能讀懂簡(jiǎn)單的程序,3.1MCS51指令概述,3.1.1機(jī)器指令:用二進(jìn)制編碼表示的,能夠被計(jì)算機(jī)直接識(shí)別和執(zhí)行的語言稱為機(jī)器語言,對(duì)應(yīng)的指令成為機(jī)器指令。機(jī)器指令不需要翻譯就可直接運(yùn)行,是計(jì)算機(jī)發(fā)展初期使用的。,3.1.2匯編指令:機(jī)器語言的繁雜和不便操作直接催生了匯編指令。匯編語言用助記符、符號(hào)和數(shù)字來表示機(jī)器指令。它與機(jī)器語言指令一一對(duì)應(yīng),便于理解和記憶。但是匯編語言并不能直接被機(jī)器識(shí)別,因此匯編程序在編寫好后必須被翻譯成相應(yīng)的機(jī)器語言才能執(zhí)行,而這些工作是由編譯器完成的。,3.1.3匯編偽指令偽指令和匯編指令屬于同一范疇,屬于一種符號(hào)語言。不同之處在于,匯編指令都有其對(duì)應(yīng)的機(jī)器碼,而偽指令沒有對(duì)應(yīng)的機(jī)器碼,偽指令的作用在于控制編譯器的編譯過程。也就是說,匯編指令的實(shí)質(zhì)是對(duì)應(yīng)的機(jī)器指令,程序運(yùn)行過程中才會(huì)被執(zhí)行。而偽指令的實(shí)質(zhì)是編譯過程控制語句,編譯完成后偽指令就完成使命了,在程序燒錄進(jìn)單片機(jī)實(shí)際運(yùn)行過程中并沒有偽指令的參與。,3.2指令的語句結(jié)構(gòu)MCS-51匯編語言的完整語句結(jié)構(gòu)如圖3.1,包括標(biāo)號(hào)、操作碼、操作數(shù)和注釋4部分。其中,操作碼和操作數(shù)是必選部分,而標(biāo)號(hào)和注釋(方括號(hào)括起來的部分)是可選項(xiàng)目。,尋址方式,是指指令語句中操作數(shù)的解析方式。即,操作數(shù)按照什么規(guī)則來存取。,3.3MCS51的6中尋址方式,3.3.1立即尋址又叫立即數(shù)尋址,是指在指令中直接給出參與運(yùn)算的數(shù)字。為了區(qū)別于作為地址的數(shù)字,把這種直接使用的數(shù)字稱為立即數(shù),并在其前面加上#以區(qū)別于作為地址的數(shù)字。因?yàn)榱⒓磾?shù)本質(zhì)上即是一個(gè)數(shù)字,因此其只能作為源操作數(shù)而不能作為目的操作數(shù)(目的操作數(shù)需要的是一個(gè)地址)。如:MOVA,#30H;把#30H復(fù)制到A中,3.3.2直接尋址操作數(shù)來源于直接地址。所謂直接地址,是指RAM區(qū)域的一個(gè)字節(jié)型地址空間。大多數(shù)直接尋址會(huì)使用用戶RAM區(qū)(30H7FH),當(dāng)位尋址區(qū)(20H2FH)被按字節(jié)尋址時(shí),也屬于直接尋址范疇。直接尋址可作為源操作數(shù)或目的操作數(shù),當(dāng)其用作源操作數(shù)時(shí),實(shí)際作為操作數(shù)的是該地址內(nèi)存儲(chǔ)的數(shù)據(jù)。如MOV30H,#40HMOVA,30H第二句中源操作數(shù)的30H即為直接尋址,此時(shí)實(shí)際使用的操作數(shù)其實(shí)是存儲(chǔ)于30H中的#40H,所以程序執(zhí)行后A中實(shí)際值為#40H。直接尋址作為目的操作數(shù)時(shí),實(shí)際指示的是這個(gè)地址本身(而不是地址內(nèi)的數(shù)),因?yàn)槟康牟僮鲾?shù)的任務(wù)是存儲(chǔ)操作后的結(jié)果數(shù)據(jù),因此需要的是一個(gè)地址(雖然命名為操作數(shù),但實(shí)際叫“存儲(chǔ)地址”更加確切)。直接尋址作為目的操作數(shù)的一個(gè)實(shí)例是上面第一句語句中的30H。,3.3.3寄存器尋址也叫寄存器直接尋址(以明確區(qū)別于寄存器間接尋址),此處的寄存器指的是工作寄存器R0R7。無論作為源操作數(shù)還是目的操作數(shù),寄存器尋址的特點(diǎn)和直接尋址均很類似。實(shí)際上,在內(nèi)部結(jié)構(gòu)一節(jié)我們已經(jīng)知道,工作寄存器區(qū)和用戶RAM區(qū)同屬于RAM區(qū),在邏輯上本來就是同級(jí)的。MOVA,R0,3.3.4寄存器間接尋址寄存器間接尋址用于源操作數(shù)時(shí),語句中的寄存器中取出的不再是操作數(shù),而是操作數(shù)的地址,真正的操作數(shù)需要用這個(gè)地址去尋址RAM區(qū)才能得到。同樣,寄存器間接尋址用于目的操作數(shù)時(shí),實(shí)際目的地址不再是語句中的寄存器,而是該寄存器中內(nèi)容對(duì)應(yīng)的RAM區(qū)地址。如圖3.2所示,R0寄存器內(nèi)裝入#34H,在執(zhí)行完語句MOVA,R0后,實(shí)際取到的操作數(shù)是RAM區(qū)域的34H地址處的地址(#56H)。符號(hào)是間接尋址的標(biāo)志符,不能省略或者混用。此外,間接尋址寄存器只能使用工作寄存器區(qū)的R0或R1,其余R2R7不可使用。(4個(gè)區(qū)中的R0和R1均可),3.3.5基址+變址尋址首先,基址+變址尋址也屬于一種間接尋址,即不是直接給出操作數(shù),而是給出操作數(shù)的地址。與寄存器間接尋址(操作數(shù)地址由工作寄存器給出)不同,基址+變址尋址的操作數(shù)地址由兩部分給出,分別成為基地址和變地址。典型的基址+變址尋址的實(shí)例如:MOVCA,A+DPTR其中,DPTR數(shù)據(jù)指針內(nèi)指出基地址,A中存放變地址,A+DPTR共同指出了真實(shí)操作數(shù)的地址。,3.3.6位尋址由于51單片機(jī)內(nèi)部包含一個(gè)位處理器,因此具有位尋址能力。可以位操作的內(nèi)容有RAM的位尋址區(qū)(20H2FH)、可位尋址的SFR等。MCS-51的指令系統(tǒng)中有專門設(shè)置的位尋址指令用于按位操作這些內(nèi)容。,3.4常用符號(hào),Rn:工作寄存器中的寄存器R0、R1R7之一,Ri:工作寄存器中的寄存器R0或R1#data:8位立即數(shù)#data16:16位立即數(shù)direct:片內(nèi)RAM或SFR的地址(8位):間接尋址寄存器Bit:片內(nèi)RAM或SFR的位地址addr11:11位目的地址addr16:16位目的地址rel:補(bǔ)碼形式的8位地址偏移量。偏移范圍為-128127/:位操作指令中,該位求反后參與操作,不影響該位X:片內(nèi)RAM的直接地址或寄存器(X):相應(yīng)地址單元中的內(nèi)容:箭頭左邊的內(nèi)容送入箭頭右邊的單元內(nèi),3.5指令分類,以下分?jǐn)?shù)據(jù)傳送類、算術(shù)運(yùn)算類、邏輯運(yùn)算與移位類、控制轉(zhuǎn)移類、布爾操作類共5個(gè)大類來詳細(xì)講解MCS-51的指令系統(tǒng):3.5.1.數(shù)據(jù)傳送類助記符:MOV、MOVX、MOVCXCH、XCHD、SWAPPUSH、POPMOV:將后面的立即數(shù)(地址中的數(shù)據(jù))放到前面的地址(寄存器)中。MOVR0,R1MOVX:用于片外尋址,由于使用外部存儲(chǔ)器技術(shù)已經(jīng)基本被淘汰,在此就不做過多講解。MOVC:主要用于查表中,是將ROM中的數(shù)取出。本組指令也被稱為查表指令,常用此指令來查一個(gè)已做好在ROM中的表格。MOVDPTR,#T_tabMOVA,R0MOVCA,A+DPTR.T_tab:DB0,1,4,9,16,25,XCH:用于兩個(gè)字節(jié)型變量互相交換數(shù)據(jù)。XCHD:用于兩個(gè)字節(jié)型變量互相交換低4位數(shù)據(jù)(高4位保持不變)。SWAPA:指令,用于將A的高4位和低4位互相交換。PUSH、POP:堆棧操作指令,分別為壓棧和彈棧操作。這兩句經(jīng)常用來在進(jìn)入中斷服務(wù)程序時(shí)保存ACC和PSW,以保證主程序中的ACC和PSW不會(huì)被中斷服務(wù)程序破壞掉。注意壓棧和出棧時(shí),先壓后出,后壓先出??偨Y(jié):數(shù)據(jù)傳送類指令結(jié)構(gòu)簡(jiǎn)單、容易理解,關(guān)鍵在于熟練掌握并應(yīng)用于各種尋址方式。,3.5.2.算術(shù)運(yùn)算類算術(shù)運(yùn)算主要對(duì)8位無符號(hào)數(shù);也可用于帶符號(hào)數(shù)運(yùn)算。包括:加、減、乘、除、加1、減1運(yùn)算指令影響PSW有關(guān)位。,助記符:ADDADDCINCMULDASUBBDECDIVADD:前后兩數(shù)相加,和放入前面寄存器。影響進(jìn)位標(biāo)志位C。ADDC:前后兩數(shù)相加再加上進(jìn)位標(biāo)志位C的值,和放入前面寄存器。ADDC往往和ADD配合使用,完成多字節(jié)加法。結(jié)果對(duì)C有影響。INC:對(duì)地址或者寄存器里面的數(shù)據(jù)進(jìn)行加一。不影響進(jìn)位標(biāo)志位C。SUBB:前后兩數(shù)想減再減去C的值,差放入前面寄存器,同ADDC,結(jié)果對(duì)C有影響。DEC:對(duì)地址或者寄存器里面的數(shù)據(jù)進(jìn)行減一。不影響進(jìn)位標(biāo)志位。MULAB:AB兩數(shù)相乘,積的低八位放入A中,高八位放入B中。DIVAB:AB兩數(shù)相除,商放入A中,余數(shù)放入B中。DAA:十進(jìn)制調(diào)整,可以看成對(duì)十六進(jìn)制數(shù)進(jìn)行十進(jìn)制運(yùn)算。如下:MOVA,#49H;A=49HADDA,#1;加一DAA;A=50H,3.5.3邏輯運(yùn)算類,助記符:ANLORLCPLCLRRRRLRRCRLCANL:前后兩數(shù)按位相與,結(jié)果放入前面寄存器。ORL:前后兩數(shù)按位相或,結(jié)果放入前面寄存器。CPL:對(duì)累加器A(bit位地址)數(shù)據(jù)按位進(jìn)行取反。CLR:對(duì)累加器A(bit位地址)中數(shù)據(jù)清零。RR:循環(huán)右移。RRC:帶C循環(huán)右移。RL:循環(huán)左移。RLC:帶C循環(huán)左移。,助記符:LJMPAJMPJMPSJMPJZJCJBJNZJNCINBLCALLACALLRETRETICJNEDJNZLJMP:無條件跳轉(zhuǎn),尋址范圍64k。AJMP:無條件跳轉(zhuǎn),尋址范圍2k。JMP:散轉(zhuǎn),跳轉(zhuǎn)地址由A+DPTR決定。SJMP:相對(duì)跳轉(zhuǎn),范圍上下128字節(jié)。JZ:A中數(shù)據(jù)為0跳轉(zhuǎn),不為0向下執(zhí)行。JNZ:與JZ相反。JC、JB:C、bit位為0向下執(zhí)行,不為0跳轉(zhuǎn)。JNC、JNB:與JC、JB相反。LCALL、ACAlL:子程序調(diào)用。前者調(diào)用范圍64k,后者2K。RET、RETI:前者,子程序返回,與LCALL、ACALL配合使用。后者只用于中斷返回。CJNE:兩數(shù)相比較相等則向下執(zhí)行,不等則跳轉(zhuǎn)。同時(shí)前面數(shù)大于后面數(shù),C=0。后面數(shù)大于前面數(shù),C=1。DJNZ:該數(shù)減一是否為0,為零則向下執(zhí)行,不為0則跳轉(zhuǎn)。CJNE和DJNZ常用來實(shí)現(xiàn)循環(huán)程序結(jié)構(gòu),即是兩種最典型的循環(huán)結(jié)構(gòu)。,3.5.4控制轉(zhuǎn)移類,3.5.5.布爾操作類(位操作),助記符:MOVCLRCPLSETBANLORLJB(JNB)JC(JNC)MOV:對(duì)位進(jìn)行賦值。CLR:對(duì)該位進(jìn)行清零。CPL:對(duì)該位進(jìn)行取反。SETB:對(duì)該位置1。ANL:相與。ORL:相或。,3.5.6.偽指令,助記符:ORGCSEGDBEQUENDDSEGDWBIT,ORG偽指令用于指定該指令語句后一段語句生成的機(jī)器碼在ROM內(nèi)存儲(chǔ)的起始點(diǎn),每條ORG指令的作用范圍為本條語句后面的一條指令開始到下一個(gè)ORG指令出現(xiàn)為止。END偽指令為匯編程序結(jié)束標(biāo)志,編譯器將無視END后的指令語句。DB、DW偽指令用于在ROM中開辟一些數(shù)值區(qū)域,DB開辟的數(shù)值區(qū)域以字節(jié)(8bit)為單位,DW開辟的數(shù)值區(qū)域以雙字節(jié)(16bit)為單位。EQU指令和DAT

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論