freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]arm教材第5章arm匯編程序設(shè)計(jì)-資料下載頁

2025-01-16 06:09本頁面
  

【正文】 …MOV PC,BL…END 宏定義及其作用使用宏定義可以提高程序的可讀性,簡化程序代碼和同步修改。ARM宏定義與標(biāo)準(zhǔn)C語言的define相似,只在源程序中進(jìn)行字符的簡單替代。宏定義從MACRO偽指令開始,到MEND結(jié)束,并可以使用參數(shù)。宏首先要定義,然后才能使用。使用時(shí)直接書寫宏名,并根據(jù)對應(yīng)的宏定義格式設(shè)置輸入?yún)?shù)或書寫桔等。當(dāng)源程序被匯編時(shí),匯編器將展開每一個(gè)宏調(diào)用,用宏定義代替程序中的宏調(diào)用,并使用實(shí)際的參數(shù)值取代宏定義時(shí)的形參。下面的例子是一個(gè)宏調(diào)用,程序中定義了一個(gè)宏CALL,用于調(diào)用子程序,調(diào)用時(shí)設(shè)置所需要調(diào)用的子程序名$Function及兩個(gè)入口參數(shù)$dat1和$dat2。由于宏[定義體中使用的是MOV指令,所以$dat1參數(shù)只能為8位的立即數(shù)或通用寄存器。…MACRO ;宏定義CALLSubfunction $Function,$dat1,$dat2 ;宏名為CALLSubfunction,帶3個(gè)參數(shù)LMPORT $Function ;聲明外子程序名MOV R0,$dat1 ;設(shè)置子程序參數(shù)R0=$dat1MOV R1,$dat2BL Function ;調(diào)用子程序MEND…CALL FADD1,3,2 ;宏調(diào)用…匯編處理后,宏調(diào)用將被展開,程序如下:…IMPORT FADD1MOV R0,3MOV R1,2BL FADD1… 數(shù)據(jù)比較跳轉(zhuǎn)匯編程序可以使用CMP指令進(jìn)行兩個(gè)數(shù)的比較,然后根據(jù)比較結(jié)果實(shí)現(xiàn)程序的跳轉(zhuǎn),代碼如下:CMP R5,10 BEQ BRANCH1 ;如果R5為10,則跳轉(zhuǎn)到BRANCH1…CMP R1,R2ADDHI R1,R1,1 ;如果R1R2,則R1=R1+1ADDLS R1,R1,2 ;如果R1=R2,則R1=R1+2…ANDS R1,R1,0x80 ;R1=R1amp。0x80,并設(shè)置相應(yīng)的標(biāo)志位BNE WAIT ;如果R1的第7位0,則跳轉(zhuǎn)到WAIT 循環(huán)下面的程序代碼為匯編循環(huán)程序的例子,指定了循環(huán)的次數(shù),每循環(huán)一次進(jìn)行減1操作,并判斷結(jié)果是否為0,如果為0則退出循環(huán)。MOV R0,10LOOP…SUBS R0,R0,1BEN LOOP…. 6 數(shù)據(jù)塊復(fù)制可以使用存儲(chǔ)器訪問指令LDM/STM進(jìn)行讀取和存儲(chǔ),進(jìn)行數(shù)據(jù)塊的復(fù)制,示例代碼如下: LDR R0,=DATA_DST ;指向數(shù)據(jù)的目標(biāo)地址 LDR R1,=DATA_SRC ;指向數(shù)據(jù)源地址 MOV R1,10 ;復(fù)制數(shù)據(jù)塊的大小為10*N個(gè)字節(jié)LOOP LDMIA R1!,{R2R9} STMIA R0!,{R2R9} SUBS R10,R10,1 BNE LOOP …. 7 堆棧操作可以使用存儲(chǔ)器訪問指令LDM/STM實(shí)現(xiàn)堆棧操作,用于子程序的寄存器保護(hù)。在使用堆棧前,首先需要分配好堆??臻g,設(shè)置好寄存器R13(即堆棧指針SP),否則操作會(huì)失敗。OUTDAT STMFD SP!{R0R7} ;寄存器入棧 … BL DELAY … LDMFD SP!{R0R7,PC} ;寄存器出棧. 8 查表操作查表操作是匯編程序經(jīng)常使用的一種功能,代碼如下:…LDR R3,=DISP_TAB ;字模表的首地址LDR R2,[R3,R5,LSL,2] ;根據(jù)R5的值查表,取出相應(yīng)的值。每個(gè)字模 地 ;占2個(gè)字節(jié),故偏移量為2…下面的表為0—F的字模DISP_TAB DCD 0xF9,0xA4,0x99,0x92 DCD 0x82,0xF8,0x80,0x90,0x88,0x83 DCD 0xC6,0xA1,0x86,0x8E,0xFF. 9 長跳轉(zhuǎn)ARM的B指令和BL指令無法進(jìn)行整個(gè)內(nèi)存空間范圍內(nèi)的跳轉(zhuǎn),但可以通過對PC寄存器賦值實(shí)現(xiàn)32位地址的跳轉(zhuǎn)和調(diào)用,代碼如下:ADD LR,PC,4 ;保存跳轉(zhuǎn)后的返回地址,即RET_FUNCLDR PC,=JUMP_FUNC ;跳轉(zhuǎn)到JUMP_FUNCDCD RET_FUNC ;返回后的地址…DCD JUMP_FUNC ;跳轉(zhuǎn)到這里…. 10 對信號量的支持ARM提供了一條使內(nèi)存與寄存器交換的指令SWP,用于支持信號量的操作,實(shí)現(xiàn)系統(tǒng)任務(wù)之間的同步與互斥,代碼如下:DISP_SEMEQU 0 x40002A00…DISP_WAIT MOV R1,0 ;0作為信號量的值 LDR R0,=DISP_SEM SWP R1,R1,[R0] ;取出信號量,設(shè)置為0 CMP R1,0 BEQ DISP_WAIT ;如果信號量沒到,則等待. 11 片上特殊寄存器定義及應(yīng)用對ARM芯片的片上外設(shè)的寄存器進(jìn)行訪問時(shí),可以使用下面的代碼對其寄存器進(jìn)行定義并應(yīng)用:WDTC EQU 0xE000000 ;看門狗計(jì)數(shù)器寄存器定義…LDR R0,=WDTC ;寄存器地址傳給R0MOV R1,12STR R1,[R0] ;用十六進(jìn)制數(shù)12設(shè)置看門狗計(jì)數(shù)器寄存器. 12 片外部件控制在ARM芯片的外圍部件的控制器中,一般會(huì)設(shè)置“置位/復(fù)位”寄存器,這樣可以方便地實(shí)現(xiàn)對控制位的操作,而不影響其地位,比如IOSET=,而其他I/O位的狀態(tài)保持不變。另外,ARM存儲(chǔ)/保存指令具有偏移功能,所以對外圍部件的控制寄存器進(jìn)行操作時(shí)可以使用此功能,避免了每次都加載寄存器地址的操作,代碼如下:LDR R0,=GPIO_BASEMOV R1,0X00STR R1,[R0,0x04] ;基地址+0x04=IOSET,將IOSET設(shè)置為0MOV R1,0x10STR R1,[R0,0x0C] ;基地址+0x0C=IOCLR,將IOCLR設(shè)置為0x10
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1