文稿案例講稿_第1頁
文稿案例講稿_第2頁
文稿案例講稿_第3頁
文稿案例講稿_第4頁
文稿案例講稿_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)傳送(MOV算術(shù)運算(ADDADCSUBSBCRSBRSC)位運算(ANDORREORBIC)比較測試(CMPCMNTST器IA(先操作(,加載),后增加地^:寄存器列表有PC,CPSR寄存器列表中沒有PC,模式使用用 LDM{cond}{addressing_mode}Rb{!},<Reglist>{^} R0,{R0-R0(基址)R0R1,多寄存器指令STM{cond}{addressing_mode}Rb{!},<Reglist>{^}當寄存器列表包含PC時,CPSR=SPSR R0!, 當寄存器列表中不包含PC時,則模LDMIA/ IncrementLDMIB/ IncrementLDMDA/ DecrementLDMDB/ DecrementSTMIAR10,{R0,R1,R4}STMIBR10,{R0,R1,R4}STMDAR10,{R0,R1,R4}STMDBR10,{R0,R1, R1=2R0!,{R1,R2=R3=R4=R0=R0!,{R1,Descendingstacks(減棧)Ascendingstacks Fullstacks(滿棧)Emptystacks(空棧綜合以上兩種特點,有以下4種棧 ED(EmptyDescending) EA(EmptyAscending) FullDescendingstack[多寄存器 -STMDB] FullDescendingstack[多寄存器加載-LDMIA] 根據(jù)滿減棧原則,先減地址,棧,高 cond條件碼Rd目標寄存器(不能是Psr程序狀態(tài)寄存器MRS{<cond>}<Rd>,CPSRMRS{<cond>}<Rd>, R0,CPSR ;CPSR狀態(tài)寄存器讀取,保存到R0中 R1,SPSR ;SPSR狀態(tài)寄存器讀取,保存到R1中MSR程序狀態(tài)寄存器寫指令MSR{<cond>}CPSR_<fields>,MSR{<cond>}CPSR_<fields>,MSR{<cond>}SPSR_<fields>,MSR{<cond>}SPSR_<fields>,c控制域字節(jié)x擴展域字節(jié)s狀態(tài)域字節(jié)f標志域字節(jié)(psr[31..24])immediate_8:8位圖立即數(shù) R0, Readthe R0,R0,@CleartheN,Z,CandV CPSR_f, Updatetheflagbitsinthe@N,Z,CandVflagsnowall R0, the R0,R0,#0x80 @Settheinterruptdisablebit CPSR_c, Updatethecontrolbitsinthe@interrupts(IRQ)now R0, the R0,R0,#0x1F @Clearthemodebits R0,R0, @themodebitstoFIQUpdatethecontrolbitsintheCPSR_c,@inFIQ CPSR_c,

@FIQ,TARM狀態(tài),中斷都只有確定當前IFTMode需要改成一個確ARM匯編程序設(shè)計變ARMARM指令一樣使 ADR{cond}register,exprexpr:地址表達式(pc或寄存器)+/-1020bytes(255×4) R1 偽指令將MOV R0,0x20ADD R1,PC,#0x3c0x64 R0,偽指令 registerexprexpr:地址表達式(pc或寄存器)-256K~256K地址非字對齊時:-64K~64K register,=[expr| 取.word數(shù)據(jù)的地址R1=&(0x R0,[R1].word .wordNOP偽指令在匯編時將會被代替成ARM中的空操作,比如可能是“MOVR0,R0”指令等。NOP可用于延時操作。 MOV MOVR0,R0 movr1,r0 test.s示例 到.text段.global r0,r0,r1 movpc, @子程序返偽操作作用,匯編結(jié)束,偽操作作用。GNUARM環(huán)境下主要的偽操作 symbol, TEST_NUM,全局常量偽操作.global或.globl.global symbol為要的全局變量名稱 symbol為要的外部變量名稱 exprexpr… 半字定義.hword或.short expr{,expr.shortexprexpr…expr字定義.word或.int或.long.wordexpr{,expr expr{,expr exprexpr… .word字符串定義.ascii和.asciz或.string exprexpr exprexpr .stringexpr{,expr}… .asciz固定填充字節(jié)內(nèi)存單元定義.space或.skip.spacesize{, size{, yy1024.code.codeGNUARM預(yù)定義的段.code.globalmystrcmpldrbr2,[r1],#1ldrbr3,[r0],#1cmpr2,#0beqmystrcmpbxlr voidmystrcmp(char *d,constchar*s);int{charbuf[256];mystrcmp(buf,“l(fā)edon”); }C程序要調(diào)用這個匯編函數(shù),這個函 voidmystrcmp(char *d,constchar*s);.globalyy.word C add(inta,intb,intc,int{return} movr0,#1 movr1, movr2, movr3,#4 r0, r0,=a r1,清除bss段start.s文件BSS.code.global.extern

stmfdsp!,ldrr0,= ldrr1,= movr2,#0strr2,[r0],#4cmpr0,r1bccclear_bssblldmfdsp!, makeclean管理模式SVC: PC=0x4軟中斷異常:執(zhí)行SWI指令,SVC管理 PC=0x8 PC=0xC PC=0x10PC=0x18 PC=0x1CSPSR_mode=CPSRCPSRT的異常模式,改CPSR的mode[4:0]保存返回地址到 PC為相應(yīng)的異常向量的地址subr1,r1,swi1 addr0,r0,#0x1 r0,r0, ,執(zhí)行,在swi指令的執(zhí)行階Tmodelr=PC–4(PC= 6.PC=add r1,r1,#0x5abc#3 addr0,r0,#0x1 r0,r0, ,執(zhí)行,當在執(zhí)行abc指令階PC=lr=PC-4= pc, CPSR=FIQ r1,r1,#0x5addr0,r0,#0x1 r0,r0,#0xF0cmpr0,r1Sub執(zhí)行時,來了中斷,雖然來了中斷,先將sub指令執(zhí)行完 lr, CPSR= r1,r1,#0x5addr0,r0,#0x1 r0,r0,#0xF0cmpr0,r11.sub取指,根本沒有取到,直到執(zhí)行2.PC=3.lr

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論