四章尋址方式與指令系統(tǒng)_第1頁
四章尋址方式與指令系統(tǒng)_第2頁
四章尋址方式與指令系統(tǒng)_第3頁
四章尋址方式與指令系統(tǒng)_第4頁
四章尋址方式與指令系統(tǒng)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第四章尋址方式與指令系統(tǒng)指令系統(tǒng)-CPU所能執(zhí)行的各種指令的集合。M68HC08系列單片機(jī)共有140條基本指令,加上尋址方式可以形成270條具體指令。指令類型:

1)數(shù)據(jù)傳送類指令

2)算術(shù)類指令

3)邏輯類指令

4)位操作類指令

5)移位類指令

6)程序控制類指令

7)其他指令指令是對數(shù)據(jù)的操作。操作數(shù)-指令中所要操作的數(shù)據(jù)。HC08所需的操作數(shù)來自:1)寄存器如:A、HX等2)指令代碼隱含在代碼中3)存儲單元如:RAM區(qū)尋址方式-尋找指令中所需操作數(shù)的各種方法。學(xué)習(xí)重點(diǎn):1)理解尋址方式2)記住保留字Motorola數(shù)據(jù)表示方法:1、數(shù)字前加$-表示16進(jìn)制;2、數(shù)字前加%-表示二進(jìn)制3、數(shù)字無前綴-表示十進(jìn)制第三章尋址方式與指令系統(tǒng)3.1尋址方式3.2數(shù)據(jù)傳送類指令3.3算術(shù)類指令3.4邏輯運(yùn)算類指令3.5位操作類指令3.6移位類指令3.7程序控制類指令3.8其他指令3.1尋址方式(1)內(nèi)在尋址方式-INH(Inherentaddressingmode)指令中已經(jīng)包含了操作數(shù);指令中沒有明顯指出操作數(shù)的指令,即操作數(shù)由指令隱含。單字節(jié)指令。例:INCA或RTI或STOP(2)立即數(shù)尋址方式-IMM(Immediateaddressingmode)-指令中直接給出操作數(shù)。雙字節(jié)指令。第一個字節(jié)是操作碼,第二個字節(jié)是操作數(shù)。例:LDA#$5D;把16進(jìn)制數(shù)據(jù)$5D放入累加器A中(3)直接尋址方式-DIR(Direct)直接尋址的指令字長2字節(jié),它可以對存儲器的首部256個地址進(jìn)行訪問。指令的第一個字節(jié)是操作碼,第二個字節(jié)是操作數(shù)地址。例:LDA$50;把存儲器單元$50中的數(shù)取到累加器A中

BRSET和BRCLR是2條很特別的3字節(jié)指令,它們用直接尋址方式取得操作數(shù),用相對尋址方式指明轉(zhuǎn)移目的地址。BRCLR3,$50,AAA;若存儲器單元$50的第3位=0則轉(zhuǎn)至標(biāo)號AAA處執(zhí)行BRSET3,$50,AAA;若存儲器單元$50的第3位=1則轉(zhuǎn)至標(biāo)號AAA處執(zhí)行

擴(kuò)展尋址方式擴(kuò)展尋址方式-EXT擴(kuò)展尋址的指令是三字節(jié)指令,它可以訪問存儲器中的任何一個地址。在這種指令中,第一個字節(jié)是操作碼,第二個字節(jié)是操作數(shù)的高字節(jié)地址,第三個字節(jié)是低字節(jié)地址。LDA$023D;把存儲器單元$023D中的數(shù)取到累加器A中擴(kuò)展尋址,是指相對于直接尋址方式而言的。特別說明:實(shí)際編程時,程序員不必考慮是直接尋址還是擴(kuò)展尋址,匯編程序會自動識別,它們的主要區(qū)別在于匯編會產(chǎn)生的指令長度不同。(4)變址尋址(i)無偏移量變址尋址-IX單字節(jié)指令變址寄存器HX中的內(nèi)容是操作數(shù)的地址。可以對$0000~$FFFF地址進(jìn)行尋址。LDA,X;從變址寄存器HX指向的存儲器單元中取數(shù)到累加器中。(ii)8位偏移量變址尋址-IX1雙字節(jié)指令CPU把變址寄存器HX的內(nèi)容和指令第二個字節(jié)內(nèi)容相加,其和便是操作數(shù)地址。下列指令屬于IX1尋址方式:STA$80,X;把A中的內(nèi)容存放到以(HX)加上$80為地址的存儲器單元中(4)變址尋址(iii)16位偏移量變址尋址-IX2三字節(jié)指令,它可以在存儲器的任何地址存取數(shù)據(jù)。

CPU把變址寄存器HX的內(nèi)容和指令的第二、三個字節(jié)內(nèi)容相加,得到的和是操作地址。

STA$280,X;把A中的內(nèi)容存放到以(HX)加上$280為地址的存儲器單元中

特別說明:實(shí)際編程時,程序員不必考慮是哪種偏移量變址尋址,匯編程序會自動識別,它們的主要區(qū)別在于匯編會產(chǎn)生的指令長度不同。(5)相對變址尋址方式-REL相對變址只用于轉(zhuǎn)移指令。當(dāng)轉(zhuǎn)移條件滿足時,CPU就把指令中的偏移量和程序計(jì)數(shù)器

PC中的內(nèi)容相加,得出轉(zhuǎn)移的目的地址。如果轉(zhuǎn)移條件不滿足,則CPU執(zhí)行下一條指令。

BRAAAA;無條件轉(zhuǎn)向標(biāo)號AAA處執(zhí)行

BSRLL1;調(diào)用標(biāo)號LL1處的子程序

(6)存儲器a)直接地址-直接地址尋址方式-DD

需傳送的數(shù)據(jù)從源存儲單元直接送向目的存儲單元,中間不需經(jīng)過寄存器中轉(zhuǎn)。源地址與目標(biāo)地址由指令直接給出。

例:MOV$80,$90;把存儲器單元$80的內(nèi)容送入存儲器單元$90中

b)立即數(shù)-直接地址尋址方式-IMDMOV#$86,$123;將立即數(shù)$86放入存儲器$123中

c)直接地址-變址后加1尋址方式-DIX+MOV$80,X+;把存儲器單元$80中的數(shù)送入(HX)中,再把(HX)+1→(HX)

d)變址后加1-直接地址尋址方式-IX+DMOVX+,$123;把(HX)中的數(shù)據(jù)送入存儲器$123中,

再把(HX)+1→(HX)3.1尋址方式(7)無偏移量變址后加1尋址方式-IX+

CBEQX+,S11;若A={HX}指向的存儲器單元的內(nèi)容則轉(zhuǎn)移到標(biāo)號S11處執(zhí)行;再把

(HX)+1→(HX)8位偏移量變址后加1尋址方式-IX1+CBEQ$80,X+,S11;若A={HX+$80}指向的存儲器單元的內(nèi)容則轉(zhuǎn)到S11處執(zhí)行;再把(HX)+1→(HX)(8)8位偏移量堆棧尋址方式-SP1LDA$80,SP;把地址$80+SP中的數(shù)取到A中

16位偏移量堆棧尋址方式-SP2LDA$230,SP;把地址$230+SP中的數(shù)取到A中

3.2數(shù)據(jù)傳送類指令3.2.1取數(shù)指令(1)取存儲器中的數(shù)到累加器A中--LDA這組指令將取出的數(shù)送入累加器,同時將按取出的數(shù)來改變N、Z標(biāo)志,當(dāng)取出的數(shù)為負(fù)(最高位為1)時,則負(fù)標(biāo)志位N=1,當(dāng)取出的數(shù)為0時,則零標(biāo)志位Z=1。對其它標(biāo)志位沒有影響。

12343.2數(shù)據(jù)傳送類指令

指令舉例如下:

LDA#$3E;把十六進(jìn)制數(shù)3E取到累加器A中

LDA$16;把存儲器$16號單元的內(nèi)容取到累加器A中

LDA$023F;把存儲器$023F號單元的內(nèi)容取到累加器A中

LDA$200,X;把以X中的數(shù)加上$200為地址的存儲器單元的內(nèi)容取到累加器A中

LDA$10,X;把以X中數(shù)加上$10為地址的存儲器單元的內(nèi)容取到累加器A中

LDA,X;把以X中的數(shù)為地址的存儲器單元的內(nèi)容取到累加器A中

LDA$10,SP;把以SP加上$10為地址的存儲器單元的內(nèi)容取到累加器A中

LDA$300,SP;把以SP加上$300為地址的存儲器單元的內(nèi)容取到累加器A中1234

3.2數(shù)據(jù)傳送類指令

(2)取存儲器中的數(shù)到寄存器X中--LDX這組指令與上組指令的唯一區(qū)別在于目的寄存器由累加器變?yōu)樽冎芳拇嫫鱔,它將取出的數(shù)送入X中,對標(biāo)志位的影響同LDA指令。

3.2數(shù)據(jù)傳送類指令(3)取存儲器中的數(shù)到寄存器HX中--LDHXLDHX#$36EF;把十六進(jìn)制數(shù)36EF放入H:X中LDHX$0058;把$0058、$0059兩個存儲器單元的內(nèi)容取到H:X中

注意:指令LDHX$0058的功能是一次讀取兩個內(nèi)存單元$0058、$0059中的數(shù)放入HX中,其中內(nèi)存單元$0058中的數(shù)被放入H中,內(nèi)存單元$0059中的數(shù)被放入X中

3.2數(shù)據(jù)傳送類指令

3.2.2存數(shù)指令(1)將累加器A中的數(shù)存儲到存儲器單元中--STA這組指令將寄存器X中的數(shù)存儲到存儲器單元中,對標(biāo)志位的影響同上。

3.2數(shù)據(jù)傳送類指令STA$10;把A的內(nèi)容存儲到存儲器第$10號單元中STA$300;把A的內(nèi)容存儲到存儲器第$300號單元中STA$10,X;把A的內(nèi)容存儲到以(X)加上$10為地址的存儲器單元中STA$300,X;把A的內(nèi)容存儲到以(X)加上$300為地址的存儲器單元中STA,X;把A的內(nèi)容存儲到以(X)為地址的單元中STA$10,SP;把A的內(nèi)容存儲到“SP+存儲器$10中的內(nèi)容”所指的存儲器單元中STA$300,SP;把A的內(nèi)容存儲到“SP+存儲器$300中的內(nèi)容”所指的存儲器單元中

3.2數(shù)據(jù)傳送類指令

(2)將寄存器X中的數(shù)存儲到存儲器單元中--STX(3)將H:X中的數(shù)存儲到存儲器單元中--STHXSTHX$00ED;把H:X的內(nèi)容存儲到存儲器第$00ED、$00EE單元中3.2數(shù)據(jù)傳送類指令3.2.3堆棧操作指令PSHA--A進(jìn)棧;(SP-$01)

SPPULA--A出棧;(SP+$01)

SP3.2數(shù)據(jù)傳送類指令3.2.4寄存器間數(shù)據(jù)傳送指令TSX--(SPH:SPL)H:XTXS--H:X(SPH:SPL)3.2數(shù)據(jù)傳送類指令3.2.5存儲器間數(shù)據(jù)傳送指令MOVaddr源,addr目的MOVaddr,X+MOV#opr8,addr

MOVX+,addr這組指令為存儲器單元之間數(shù)據(jù)的直接傳送,對標(biāo)志位的影響情況是按傳送的數(shù)來改變N、Z標(biāo)志,當(dāng)傳送的數(shù)為負(fù)(最高位為1)時,則負(fù)標(biāo)志位N=1,當(dāng)傳送的數(shù)為0時,則零標(biāo)志位Z=1。對其它標(biāo)志位沒有影響。

3.3算術(shù)類指令算術(shù)類指令有加、減、乘/除、加1/減1、求補(bǔ)/求反、比較及綜合等7種類型。

3.3.1加法指令(1)不帶進(jìn)位加法--ADD(2)帶進(jìn)位加法--ADC3.3算術(shù)類指令這組指令把累加器A中的內(nèi)容加上存儲器單元的內(nèi)容(第一條為立即數(shù))再送到累加器中,根據(jù)運(yùn)算結(jié)果改變V、H、N、Z、C標(biāo)志位:V若溢出,則置位,否則清零。H若有從位3的進(jìn)位,表示有產(chǎn)生半字節(jié)進(jìn)位,則置位,否則清零。N若結(jié)果的最高位為1,表示在有符號運(yùn)算中的結(jié)果為負(fù),則置位,否則清零。Z若結(jié)果為0,則置位,否則清零。C若有最高位的進(jìn)位,則置位,否則清零。

3.3算術(shù)類指令

3.3.2減法指令(1)不帶借位減法–SUB(2)帶借位減法--SBC這組指令把累加器A中的內(nèi)容減去存儲器單元的內(nèi)容(第一條為立即數(shù))再送到累加器中,根據(jù)運(yùn)算結(jié)果改變V、H、Z、C標(biāo)志位。

3.3算術(shù)類指令3.3.3乘/除法指令(1)乘法指令--MULX中的一個字節(jié)的無符號數(shù)與A中的一個字節(jié)的無符號數(shù)相乘,結(jié)果是兩個字節(jié)的無符號數(shù),其高字節(jié)放入X中,低字節(jié)放入A中。將H和C標(biāo)志位清零,不影響其它標(biāo)志位。(2)除法指令--DIV影響Z、C標(biāo)志位H、A中的二字節(jié)的無符號數(shù)除以X中的一個字節(jié)的無符號數(shù),商放入A中,余數(shù)放入H。3.3算術(shù)類指令3.3.4加1/減1指令(1)加1指令--INC對標(biāo)志位V、N、Z產(chǎn)生影響(2)減1指令--DEC對標(biāo)志位V、N、Z產(chǎn)生影響3.3算術(shù)類指令3.3.5求補(bǔ)/求反指令(1)求反指令--COM(2)求補(bǔ)指令--NEG對標(biāo)志位V、N、Z產(chǎn)生影響3.3算術(shù)類指令3.3.6比較指令(1)累加器A與存儲器單元比較--CMP只按運(yùn)算結(jié)果改變V、N、Z、C標(biāo)志位,改變的方式與SUB指令相同。(2)變址寄存器X與存儲器單元比較–CPX運(yùn)算結(jié)果改變V、N、Z、C標(biāo)志位3.3算術(shù)類指令

(3)變址寄存器H:X與存儲器單元比較–CPHX運(yùn)算結(jié)果改變V、N、Z、C標(biāo)志位

3.3算術(shù)類指令

3.3.7其他算術(shù)指令(1)清零指令--CLR這組指令中CLRA、CLRX、CLRH是將寄存器清零,其它指令是把存儲器單元的清零,同時清零V、N標(biāo)志位,置Z標(biāo)志位,不改變H、I、C標(biāo)志位。3.3算術(shù)類指令(2)測試是否為負(fù)或零指令--TSTTSTA、TSTX是將寄存器的內(nèi)容與零比較(實(shí)際是執(zhí)行減0的操作),看它是否小于等于零,其它指令是把存儲器單元的內(nèi)容與零比較,看它是否小于等于零。這個指令執(zhí)行后并不改變操作數(shù)本身,只是根據(jù)結(jié)果改變N、Z標(biāo)志位

3.3算術(shù)類指令(3)堆棧指針增加指令--AIS不影響標(biāo)志位。

(4)變址寄存器H:X增加指令--AIX不影響標(biāo)志位。3.4邏輯運(yùn)算類指令(1)邏輯與指令--AND把累加器A中的內(nèi)容與存儲器單元的內(nèi)容(第一條為立即數(shù))進(jìn)行“與”運(yùn)算后再送到累加器中,同時清零V標(biāo)志位,根據(jù)運(yùn)算結(jié)果改變N、Z標(biāo)志位,不改變H、C標(biāo)志位。

3.4邏輯運(yùn)算類指令(2)邏輯或指令--OR(3)邏輯異或指令--EOR3.5位操作類指令(1)位測試指令--BIT與AND指令的區(qū)別是把累加器A中的內(nèi)容與存儲器單元的內(nèi)容(第一條為立即數(shù))進(jìn)行“與”運(yùn)算后結(jié)果不再送到累加器中,也就是說它不改變參與運(yùn)算的操作數(shù),它清零V標(biāo)志位,根據(jù)運(yùn)算結(jié)果改變N、Z標(biāo)志位,不改變H、C標(biāo)志位??捎糜跍y試A和存儲器單元的位是否一致。

3.5位操作類指令

(2)清位、置位--CLR/SET不影響任何標(biāo)志位(3)清標(biāo)志位C、置標(biāo)志位C--CLC/SEC對標(biāo)志位C進(jìn)行清零或置位

(4)清或置中斷標(biāo)志位I--CLI/SET對中斷屏蔽標(biāo)志位I進(jìn)行清零或置位

3.6移位類指令3.6.1單向移位類指令算術(shù)左移指令相當(dāng)于操作數(shù)乘以2

對標(biāo)志位V、N、Z、C有影響,對標(biāo)志位H、I沒有影響。3.6移位類指令2)算術(shù)右移指令對標(biāo)志位影響與ASL指令相同。

3.6移位類指令3)邏輯左移指令這組指令功能與算術(shù)左移指令A(yù)SL完全相同。

4)邏輯右移指令3.6移位類指令3.6.2循環(huán)移位指令循環(huán)左移指令循環(huán)右移指令對標(biāo)志位V、N、Z、C有影響,對H、I沒有影響。3.7程序控制類指令3.7.1一般轉(zhuǎn)移指令(1)標(biāo)志位測試轉(zhuǎn)移指令相對變址尋址這組指令測試標(biāo)志位,當(dāng)滿

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論