

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三章 微控制器尋址方式與指令系統(tǒng),§3.1 尋址方式§3.2 SPCE061A指令分類,符號約定,,,,指令的格式,指令由操作碼字段和操作數(shù)字段組成。操作碼字段指示出CPU所要執(zhí)行的操作,操作數(shù)字段則指出指令執(zhí)行操作過程中所需要的操作數(shù)。如加法指令中的加數(shù)和被加數(shù)。,§3.1 尋址方式,為什么要設(shè)置不同的尋址方式?,例、將1-100存儲單元的內(nèi)容求和,結(jié)果放在102單元中。R1=0R2=0
2、Sum_Loop:R2+=[++ R1] // (R1)+1 =>R1 , // (R2)+((R1))=>R2CMP R1,100JNA Sum_Loop // 不大于轉(zhuǎn)移[102]=R2,例、將1-100存儲單元的內(nèi)容求和,結(jié)果放在102單元中。R1=0R1+=[0]R1+=[1]R1+=[2]R1+=[3]R
3、1+=[4]……[102]=R1,尋址方式,一、立即數(shù)尋址二、寄存器尋址三、直接尋址 1、6位地址直接尋址 2、16位地址直接尋址 3、22位地址直接尋址四、寄存器間接尋址 1、寄存器間接尋址 2、寄存器前置增量間接尋址 3、寄存器后置增量間接尋址 4、寄存器后置減量間接尋址 5、寄存器自動增減量
4、間接尋址五、變址尋址六、PC相對尋址,R1=0X25 //6位立即數(shù)R1=R1+0X2400 // 16位立即數(shù),,,R1=0X25R2=R1+0X2400,,,1、R1+=[0X30] //零頁6位直接地址2、R2=R1+[0X2400] // 16位直接地址 3、22位直接地址主要用于子程序調(diào)用。,1、R1+=[R5] 2、R2=D:[++R3] //(R3)+1=>R3,
5、 //((R3))=>R2。3、R2=D:[R3 ++] //((R3))=>R2, //(R3)+1=>R3。4、R2=D:[R3 - -] //((R3))=>R2, //(R3)-1=>R3。5、主要用于堆棧操作,R1=[B
6、P+IM6] //((BP)+IM6)=>R1,用于轉(zhuǎn)移指令,(PC)±IM6;IM6<=63,,,§3.2指令分類,數(shù)據(jù)傳送類算術(shù)運算類邏輯操作類控制轉(zhuǎn)移類及設(shè)置類,1、裝載數(shù)據(jù) Rd=源操作2、存儲數(shù)據(jù)[RAM地址]=Rs3、堆棧操作,1、加法運算2、減法運算 Rd=Rx±源操作數(shù) [,Carry]3、乘法運算4、求補 Rd= -源操作數(shù)
7、5、比較 CMP Rx,源操作數(shù),,,邏輯與邏輯或邏輯異或測試移位循環(huán),軟中斷程序轉(zhuǎn)移子調(diào)用功能設(shè)置,,,一、 數(shù)據(jù)傳送類指令,數(shù)據(jù)裝載類 Rd=源操作 //影響N、Z標(biāo)志。存儲數(shù)據(jù)類 [RAM地址]=Rs //不影響任何標(biāo)志。堆棧操作類,1、壓棧指令:,,PUSH Rx,Ry to [SP]將Rx~Ry中的數(shù)據(jù)壓入以Rs的內(nèi)容為起始地址的一組存儲器中。高序號寄存器內(nèi)容先壓入。壓
8、入單個寄存器PUSH Rx,Rx to [SP]壓入某兩個或多個寄存器PUSH Rx,Ry to [SP]先壓棧,SP內(nèi)容自動減1。不影響標(biāo)志位。,例1、執(zhí)行指令 PUSH R3,PC to [SP],SP,,,SP,,高地址,低地址,2、出棧指令,POP Rx,Ry from [SP] 將以Rs的內(nèi)容為起始地址的一組存儲器中的內(nèi)容送到Rx~Ry中。先傳送低序號寄存器。 彈出到單個寄存器P
9、OP Rx,Rx from [SP]SP內(nèi)容先自動增量,再彈出。影響標(biāo)志位N、Z。,例2、執(zhí)行指令 POP R3,PC from [SP],SP,,,SP,,PC,SR,R5,R4,R3,,,,,當(dāng)執(zhí)行完出棧后,內(nèi)存是什么狀態(tài)?,,高地址,低地址,堆棧應(yīng)用要注意的問題,空間沖突-堆??臻g與其它用戶空間相交引起的沖突。這是用戶空間估計不足引起的。堆棧溢出-堆棧使用超出其分配范圍,這是堆棧空間分配太少或子程序嵌套太深引起
10、的。,由于單片機內(nèi)存空間狹小,內(nèi)存空間的使用要特別小心,要精打細算,以避免出現(xiàn)下述問題。,二、 算術(shù)運算類指令,加法運算減法運算乘法運算求補指令比較指令,Rd=Rx±源操作數(shù)[,Carry],,Rd= - 源操作數(shù),CMP Rx,源操作數(shù),MR=Rd*Rs,MR=[Rd]*[Rs],內(nèi)積指令:,符號數(shù)內(nèi)積 MR=[Rd]* [Rs] {,ss} {,n}MR=((Rd))χ((Rs))+ ((Rd
11、+1))χ((Rs+1))+ ((Rd+2))χ((Rs+2))+……選項{,ss} ,系統(tǒng)默認值,表示為符號數(shù)運算。選項{,n},n=1~16,默認為1。MR為R4R32.無符號數(shù)內(nèi)積 MR=[Rd]* [Rs] ,us {,n}us必須注明。其它同符號數(shù)內(nèi)積。,Rd,Rs,,,Rd,Rs,,,(R4R3)=X1*C1+X2*C2+X
12、3*C3+X4*C4,例 、MR=[Rd]*[Rs] ,4,當(dāng)自動功能開放FIR_MOV ON時,允許運算過程中數(shù)據(jù)自由移動,[例3.25]首先在IRAM中定義8個變量。在程序的第一循環(huán)階段,計算的值為2*5+3*6,即結(jié)果為1C;第一循環(huán)結(jié)束后,由于移位作用,NO_3的值被NO_2代替,變?yōu)?x0002,而NO_2的值不變,再次循環(huán)后的值為2*5+2*6,即結(jié)果為0x0016。,.IRAM.VARNO_1=0x0001, NO_2
13、=0x0002, NO_3=0x0003, NO_4=0x0004.VARNO_5=0x0005, NO_6=0x0006, NO_7, NO_8.CODE.PUBLIC _main_main:FIR_MOV ON//允許移位R1= NO_2//指向起始位R2= NO_5MR=[R1]*[R2], us, 2 //第1次,2*5+3*6。 [NO_7]=R3[NO_8]=R4NOPJMP _ma
14、inRETF,第2次:2*5+2*6,求補指令與比較指令,求補指令是一種將正數(shù)變負數(shù),負數(shù)變正數(shù)的補碼運算。比較指令作減法,僅影響N、Z、S、C標(biāo)志。目標(biāo)單元不變。,例:R1=-0x28 R2=-0xFFFF R4=-R1,例:R1=-0x28 R2=-0xFFFF CMP R1,R2 條件轉(zhuǎn)移指令,三、 邏輯操作類指令,邏輯與邏輯或邏輯異
15、或測試指令移位指令循環(huán)指令,,在開關(guān)量控制中,可用這些指令來進行位操作:將控制字中的某些位置0,其余位不變。將控制字中的某些位置1,其余位不變。將控制字中的某些位取反,其余位不變。以實現(xiàn)對這些位的控制與測試。,,“與”操作,僅影響N、Z標(biāo)志。結(jié)合條件轉(zhuǎn)移指令使用。 在開關(guān)量控制中,可用于測試目標(biāo)字的某些位是否為0或1。,例4、分別用指令表示,將R1中的D2、D6、D13置1,清0,取反,其余
16、位不變的操作。,置1將置1的位“或”1,不變的位“或”0。所以有,R1|=0x2044 //0010000001000100清0將清0的位“與”0,不變的位“與”1。所以有,R1&=0xDFBB //1101 1111 1011 1011取反將取反的位“異或”1,不變的位 “異或”0。 所以有,R1^=0x2044 //0010000001000100,例5、假設(shè)R2中的內(nèi)容是交換機的用
17、戶摘掛機狀態(tài)字,每一位對應(yīng)一個用戶摘掛機狀態(tài),0掛機,1摘機。用TEST指令測試用戶摘掛機狀態(tài)。摘機時作H處理,否則繼續(xù)測試下一個用戶狀態(tài)。,TEST R2,0x0001 //測試R2與0x0001相與的結(jié)果 JZ d1 //相與的結(jié)果為0則跳轉(zhuǎn) CALL H0 //否則執(zhí)行H0d
18、1: TEST R2,0x0002 JZ d2 CALL H1d2 : TEST R2,0x0004 JZ d3 CALL H2d3:……,邏輯/算術(shù)左移 LSL邏輯右移 LSR算術(shù)右移 ASR,,,,四、移位指令,Rd=RS LSL 3 //nn=1~4,Rd=RS LSR 3 //nn=1~4,Rd=RS ASR 3 //nn=1~4,
19、多功能移位指令: ——先移位后運算R1+=R2 LSL 2, Carry //(R1)+(R2)左移2位+C? R1R1= -R2 LSR 2, // (R2)右移2位后求補? R1例:R1=0xFF00R2=0x0001R2+=R1 ASR 1 //執(zhí)行這條指令后,(R2)=FF81H,循環(huán)指令,左循環(huán) ROL右循環(huán) ROR,五、 控制轉(zhuǎn)移
20、 及設(shè)置類指令,軟中斷程序轉(zhuǎn)移子程序調(diào)用功能設(shè)置,—— 中斷向量 = 00FFF5H,——條件轉(zhuǎn)移和無條件轉(zhuǎn)移,指令周期:(滿足條件)轉(zhuǎn)移為5,否則為3。,應(yīng)用舉例1,例1、軟件延時子程序設(shè)計。Delay_x:R1=0Delay_Loop:R1=R1+1CMP R1,0x03E8JNAE Delay_Loop Exit_Loop:RETF,// 3個指令周期// 8個指令周期,3E8:1000
21、//順序為3,轉(zhuǎn)移為5個指令周期// 12個指令周期,程序延時多長時間?修改延時,修改程序的什么地方?本子程序最多延時時間是多少?,應(yīng)用舉例2,例10、編寫計算1~100所有整數(shù)和,且結(jié)果存于R1中的函數(shù)。F_Calculate_Sum:R1=0R2=1L_SumLoop:R1+=R2R2+=1CMP R2,0x65JB L_SumLoop//小于轉(zhuǎn)移RET,計算1~100單元中所有整數(shù)和,如何修
22、改?,處理器的尋址方式處理器的指令分類指令表的信息指令周期指令對標(biāo)志位的影響指令長度,小結(jié),§3.3 偽指令,偽指令分類,段切換偽指令,數(shù)據(jù)定義偽指令,宏匯編與條件匯編,宏匯編:匯編具有宏處理功能的高級匯編技術(shù)條件匯編:源程序在匯編過程中,當(dāng)特定條件為真時,才對源程序的一組語句進行匯編,在源程序中用一個宏名取代一系列源語句行,從而簡化程序,增加程序的可讀性。在編譯的時候,編譯器會將其展開在目標(biāo)代碼中。,宏指令的定
23、義與調(diào)用,,宏定義:macro_name : MACRO [形參表] CPU 指令 //宏定義體 [.MACEXIT] …… .ENDM 宏指令: macro_name [實
24、參表],宏定義舉例1:M_instruction : MACRO arg,val arg Lab#: .DW val .ENDM 宏調(diào)用: M_instruction nop, 87宏展開: nop .DW 87,宏定
25、義舉例2:雇員信息 employee : MACRO arg1, arg2, arg3 name : .DW arg1 department : .DW arg2 date_hired : .DW arg3 .ENDM //調(diào)用前面定義的宏: employee
26、‘john doe’, personnel, 022098//匯編器將宏展開成下面的命令: name: .DW ‘john doe’ department: .DW personnel date_hired: .DW 022098,段切換偽指令與SPCE061A存儲器空間,RAM:存放無初值的變量。,
27、IRAM:存放具有初值的變量。并分配ROM及RAM空間。,ORAM:存放無初值的變量。一個項目的不同文件中與RAM段同名同屬性的各段會被重疊在一起。這適合于不同文件需要使用相同的變量空間。,SRAM:與RAM同,但只能連接到0~63單元。,ISRAM:與IRAM同,但只能連接到0~63單元。,OSRAM:與ORAM同,但只能連接到0~63單元。,CODE:所有程序和數(shù)據(jù)都可以存放在該段。,DATA:程序中的數(shù)據(jù)(常數(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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 11 尋址方式和指令系統(tǒng)
- 第3章-尋址方式指令系統(tǒng)
- 8位精簡指令系統(tǒng)微控制器的分析與設(shè)計.pdf
- 80x86的指令系統(tǒng)和尋址方式
- (第3章_arm尋址方式與指令系統(tǒng))_9_10節(jié)-
- 第三章 80x86尋址方式與指令系統(tǒng)
- 基于網(wǎng)絡(luò)微控制器的IP可尋址音頻播放系統(tǒng).pdf
- asm03 80 x86的指令系統(tǒng)和尋址方式1
- 基于ARM指令架構(gòu)的微控制器系統(tǒng)設(shè)計與功能驗證.pdf
- 指令系統(tǒng)
- 基于精簡指令集的微控制器設(shè)計.pdf
- 考點指令系統(tǒng)
- 指令系統(tǒng)74755
- 安全微控制器總線接口模塊的設(shè)計與指令集測試.pdf
- 基于精簡指令8位微控制器全定制設(shè)計.pdf
- 微控制器外文翻譯
- 微控制器作業(yè)答案
- 數(shù)據(jù)表示與指令系統(tǒng)
- 外文翻譯--基于微控制器的光控制器
- 單片機外文翻譯---at89c2051微控制器的指令
評論
0/150
提交評論