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

正文內(nèi)容

嵌入式實(shí)驗(yàn)報(bào)告推薦五篇-資料下載頁

2024-10-21 09:52本頁面
  

【正文】 存器的值設(shè)為數(shù)據(jù)域X的地址 LOOP LDR R4,[R3,R8]。將R3+R8的數(shù)據(jù)讀入R4 LDR R6,[R5,R8]。將R5+R8的數(shù)據(jù)讀入R6 MUL R9,R4,R6。R9 = R4*R6 ADD R2,R2,R9。R2 = R2+R9 ADD R8,R8,4。R8 = R8+4 ADD R0,R0,1。R0 = R0+1 CMP R0,R1。比較R0和R1的值 BLT LOOP。R0執(zhí)行結(jié)果如下:+2+3+4++100,求的值,并保存在地址0x90018的地址里面程序代碼:MOV R0,100。設(shè)置R0寄存器的值為100 LDR R2,=0X90018。設(shè)置R2寄存器指向地址0x90018 MOV R1,0。設(shè)置R1的值為0 MOV R3,0。設(shè)置R3的值為0 LOOP ADD R3,R3,R0。R3 = R3+R0 SUB R0,R0,1。R0 = R01 CMP R0,R1。將R0和R1的值比較BNE LOOP。不相等的話繼續(xù)執(zhí)行循環(huán)STR R3,[R2]。將R3的值裝入到R2指向的地址塊中。END 程序執(zhí)行結(jié)果:程序執(zhí)行完在0x90018內(nèi)存入的數(shù)據(jù)是0x13ba即5050實(shí)驗(yàn)二 ARM匯編語言程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?,學(xué)會(huì)使用ARM的匯編語言編程; ,以及存儲(chǔ)器的裝載指令操作。二、實(shí)驗(yàn)設(shè)備 ,仿真器驅(qū)動(dòng)程序。三、實(shí)驗(yàn)內(nèi)容,新建工程,加入下面的程序,并觀察實(shí)驗(yàn)結(jié)果程序代碼:x EQU 15。定義常量x=15 y EQU 61。定義常量y=61 stack_top EQU 0X1000。定義堆棧棧頂?shù)刂窞?x1000 ENTRY。程序入口處MOV sp,stack_top。將堆棧指針指向棧頂 MOV r0,x。將x的值放入r0 STR r0,[sp]。將r0的值壓入堆棧 MOV r0,y。將y的值放入r0 LDR r1,[sp]。將x的值放入r1 ADD r0,r0,r1。r0 = r0+r1 STR r0,[sp]。將r0的值裝入堆棧 Stop。B stop。程序結(jié)果為:r1 = x+y = 0x6D~R11進(jìn)行累加8次賦值,R4~R11初始值是1~8,每次操作后把R4~R11的內(nèi)容放到SP棧中,SP初始設(shè)置為0x800,最后把R4~R11用LDMFD指令清空為0程序代碼如下: X EQU 1。定義常量x = 1 stack_top EQU 0X800。定義棧頂?shù)刂?ENTRY。MOV SP,stack_top。將棧頂?shù)刂分赶?x800 MOV R4,1。設(shè)置R4 = 1 MOV R5,2。設(shè)置R5 = 2 MOV R6,3。設(shè)置R6 = 3 MOV R7,4。設(shè)置R7 = 4 MOV R8,5。設(shè)置R8 = 5 MOV R9,6。設(shè)置R9 = 6 MOV R10,7。設(shè)置R10 = 7 MOV R11,8。設(shè)置R11 = 8 LOOP ADD R4,R4,x。R4累加1 ADD R5,R5,x。R5累加1 ADD R6,R6,x。R6累加1 ADD R7,R7,x。R7累加1 ADD R8,R8,x。R8累加1 ADD R9,R9,x。R9累加1 ADD R10,R10,x。R10累加1 ADD R11,R11,x。R11累加1 STMIA SP!,{R4R11}。將R4R11的值壓入堆棧CMP R4,9。比較R4和9的大小BLT LOOP。R4 9繼續(xù)執(zhí)行循環(huán)LDMFD SP!,{R4R11}。將R4R11清零 END。實(shí)驗(yàn)結(jié)果:主要實(shí)現(xiàn)將數(shù)據(jù)29,310,411……916壓入堆棧(初始地址是0x800處開始),最后將R4R11全部清零。,Y的值,觀察期結(jié)果 程序代碼:x EQU 20 y EQU 120 stack_top EQU 0X1000 ENTRY MOV sp,stack_top MOV r0,x STR r0,[sp] MOV r0,y LDR r1,[sp] ADD r0,r0,r1 STR r0,[sp] Stop B Stop END 程序結(jié)果為:r0 = x+y = 140 = 0X8C實(shí)驗(yàn)三 ARM匯編語言程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?,學(xué)會(huì)使用ARM的匯編語言編程,及if條件、循環(huán)、循環(huán)及循環(huán)的匯編實(shí)現(xiàn)二、實(shí)驗(yàn)設(shè)備,仿真器驅(qū)動(dòng)程序三、實(shí)驗(yàn)內(nèi)容,新建工程,加入下面的程序,并觀察實(shí)驗(yàn)結(jié)果 程序代碼:Num EQU 20。定義常量Num = 20 START。LDR r0,=src。將src數(shù)據(jù)塊的開始地址存入r0中 LDR r1,=dst。將dst數(shù)據(jù)塊的開始地址存入r1中 MOV r2,Num。設(shè)置r2的值為20 MOV sp,0x400。堆棧指針sp指向0x400 blockcopy。MOVS r3,r2,LSR 3。將r2左移3位移入r3并且影響標(biāo)志位 BEQ copywords。結(jié)果為0的話跳轉(zhuǎn)到copywords STMFD SP!,{r4r11}。將r4r11的值入棧 octcopy。LDMIA r0!,{r4r11}。將src的前8個(gè)字?jǐn)?shù)據(jù)存入讓r4r11 STMIA r1!,{r4r11}。將r4r11中的數(shù)據(jù)放入dst數(shù)據(jù)塊中 SUBS r3,r3,1。r3 = r31 BNE octcopy。結(jié)果不為0跳轉(zhuǎn)到octcopy LDMFD SP!,{R4R11}?;謴?fù)原來的r4r11 copywords。ANDS r2,r2,7。r2 = r2amp。7 BEQ stop。結(jié)果為0跳轉(zhuǎn)到stop wordcopy。LDR r3,[r0],4。將r0指向的字?jǐn)?shù)據(jù)放入r3中,r0 = r0+4 STR r3,[r1],4。將r3中的數(shù)據(jù)存入到dst數(shù)據(jù)塊中,r1 = r1+4 SUBS r2,r2,1。r2 = r21 BNE wordcopy。不為0跳轉(zhuǎn)到wordcopy處 stop。B stop。src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4。dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0。END。程序結(jié)果:將src的數(shù)據(jù)全部存入到dst中,并自行編寫程序,分別使用LDR,STR,LDMIA,STMIA操作,實(shí)現(xiàn)對(duì)某段連續(xù)存儲(chǔ)單元寫入數(shù)據(jù),并觀察結(jié)果 程序代碼:MOV R4,1。設(shè)置r4 = 1; MOV R5,2。設(shè)置r5 = 1; MOV R6,3。設(shè)置r4 = 1;LDR R0,=dst。R0保存dst的首地址STR R4,[R0]。將r4的值裝入r0執(zhí)行的內(nèi)存中STR R5,[R0,4]。將r5的值裝入r0+4執(zhí)行的內(nèi)存中 STR R6,[R0,8]。將r6的值裝入r0+8執(zhí)行的內(nèi)存中 LDR R7,=src。R0保存src的首地址LDMIA R7,{R8R10}。將r7執(zhí)行的地址的數(shù)據(jù)讀入r8=r10 LDR R3,=N。r3保存N的首地址STMIA R3!,{R8R10}。將r8r10裝入r3指向的內(nèi)存 N DCD 0,0,0 src DCD 1,2,3 dst DCD 0,0,0 END 程序結(jié)果:熟悉使用LDMIA,STMIA和LDR,STR指令,使用ARM匯編指令實(shí)現(xiàn)for條件執(zhí)行,使用ARM匯編指令實(shí)現(xiàn)while條件執(zhí)行,使用ARM匯編指令實(shí)現(xiàn)do…while條件執(zhí)行。程序代碼:實(shí)現(xiàn)if條件: MOV R0,1 MOV R1,2 CMP R0,R1 BGT LOOP1 BLT LOOP2 LOOP1 MOV R3,R0 LOOP2 MOV R3,R1 END 程序結(jié)果:實(shí)現(xiàn)for和while條件:MOV R1,1 MOV R3,0 MOV R2,101。LOOP ADD R3,R1,R3 ADD R1,R1,1 CMP R1,R2 BLT LOOP END 程序結(jié)果:實(shí)現(xiàn)do…while條件:MOV R0,1 MOV R1,100 MOV R3,0 LOOP CMP R0,R1 BGT STOP ADD R3,R0,R3 ADD R0,R0,1 B LOOP STOP END 程序結(jié)果:實(shí)驗(yàn)四 基于ARM的C語言程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?C語言的基本框架,學(xué)會(huì)使用ARM的C語言編程。二、實(shí)驗(yàn)設(shè)備,PentiumII以上的PC機(jī),仿真器電纜。三、ARM C語言簡介與使用規(guī)則在應(yīng)用系統(tǒng)的程序設(shè)計(jì)中,若所有的編程任務(wù)均由匯編語言來完成,其工作量巨大,并且不宜移植。由于ARM的程序執(zhí)行速度較高,存儲(chǔ)器的存儲(chǔ)速度和存儲(chǔ)量也很高,因此,C語言的特點(diǎn)充分發(fā)揮,使得應(yīng)用程序的開發(fā)時(shí)間大為縮短,代碼的移植十分方便,程序的重復(fù)使用率提高,程序架構(gòu)清晰易懂,管理較為容易等等。因此,C語言的在ARM編程中具有重要地位。 C語言程序的基本規(guī)則在ARM程序的開發(fā)中,需要大量讀寫硬件寄存器,并且盡量縮短程序的執(zhí)行時(shí)間的代碼一般使用匯編語言來編寫,比如ARM的啟動(dòng)代碼,ARM的操作系統(tǒng)的移植代碼等,除此之外,絕大多數(shù)代碼可以使用C語言來完成。C語言使用的是標(biāo)準(zhǔn)的C語言,ARM的開發(fā)環(huán)境實(shí)際上就是嵌入了一個(gè)C語言的集成開發(fā)環(huán)境,只不過這個(gè)開發(fā)環(huán)境和ARM的硬件緊密相關(guān)。在使用C語言時(shí),要用到和匯編語言的混合編程。當(dāng)匯編代碼較為簡潔,則可使用直接內(nèi)嵌匯編的方法,否則,使用將匯編文件以文件的形式加入項(xiàng)目當(dāng)中,通過ATPCS的規(guī)定與C程序相互調(diào)用與訪問。ATPCS,就是ARM、Thumb的過程調(diào)用標(biāo)準(zhǔn)(ARM/Thumb Procedure Call Standard),它規(guī)定了一些子程序間調(diào)用的基本規(guī)則。如寄存器的使用規(guī)則,堆棧的使用規(guī)則,參數(shù)的傳遞規(guī)則等。在C程序和ARM的匯編程序之間相互調(diào)用必須遵守ATPCS。而使用ADS的C語言編譯器編譯的C語言子程序滿足用戶指定的ATPCS的規(guī)則。但是,對(duì)于匯編語言來說,完全要依賴用戶保證各個(gè)子程序遵循ATPCS的規(guī)則。具體來說,匯編語言的子程序應(yīng)滿足下面3個(gè)條件:● 在子程序編寫時(shí),必須遵守相應(yīng)的ATPCS規(guī)則; ● 堆棧的使用要遵守相應(yīng)的ATPCS規(guī)則; ● 在匯編編譯器中使用atpcs選項(xiàng)?;镜腁TPCS規(guī)定,請(qǐng)?jiān)斠娤嚓P(guān)技術(shù)文檔。匯編程序調(diào)用C程序匯編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時(shí)參數(shù)正確傳遞。在匯編程序中使用IMPORT偽指令聲明將要調(diào)用的C程序函數(shù)。在調(diào)用C程序時(shí),要正確設(shè)置入口參數(shù),然后使用BL調(diào)用。C程序調(diào)用匯編程序匯編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時(shí)參數(shù)正確傳遞。在匯編程序中使用EXPORT偽指令聲明本子程序,使其他程序可以調(diào)用此子程序。在C語言中使用extern關(guān)鍵字聲明外部函數(shù)(聲明要調(diào)用的匯編子程序)。在C語言的環(huán)境內(nèi)開發(fā)應(yīng)用程序,一般需要一個(gè)匯編的啟動(dòng)程序,從匯編的啟動(dòng)程序,跳到C語言下的主程序,然后,執(zhí)行C程序,在C環(huán)境下讀寫硬件的寄存器,一般是通過宏調(diào)用,在每個(gè)項(xiàng)目文件的Startup44b0/,那里面定義了所有關(guān)于44B0的硬件寄存器的宏,對(duì)宏的讀寫,就能操作44B0的硬件。具體的編程規(guī)則同標(biāo)準(zhǔn)C語言。四、實(shí)驗(yàn)內(nèi)容理解下列程序,新建工程,加入下面的程序,并觀察實(shí)驗(yàn)結(jié)果。程序代碼:/*實(shí)現(xiàn)5個(gè)數(shù)的相加*/ int sum5(int a,int b,int c,int d,int e){ return(a+b+c+d+e)。}。匯編語言IMPORT sum5。聲明調(diào)用c函數(shù) CALLSUMS STMFD SP!,{LR}。將LR寄存器入棧 MOV R0,1。r0 = 1 ADD R1,R0,R0。r1 = 2 ADD R2,R1,R0。r2 = 3 ADD R3,R1,R2。r3 = 5 STR R3,[SP,4]!。將r3的值入棧當(dāng)做第五個(gè)參數(shù) ADD R3,R1,R1。R3 = R3+R1=4 BL sum5。調(diào)用sum5 ADD SP,SP,4。sp = sp+4 LDMFD SP,{PC} 程序結(jié)果:實(shí)現(xiàn)了i+2i+3i+4i+5i的匯編語言調(diào)用c語言用匯編語言實(shí)現(xiàn)1到100累加的函數(shù),用C言語編寫主程序,在主程序中調(diào)用所編寫的匯編函數(shù) 程序代碼:NAME asmfile PUBLIC sum5 : CODE(2)CODE32 sum5 ENTRY MOV R1,1 MOV R2,0 sum6 ADD R2,R1,R2 ADD R1,R1,1 CMP R1,R0 BLE sum6 MOV PC,LR ENDinclude extern void sum5(int x)。int main(void){ const int n = 100。sum5(n)。return(0)。} 程序結(jié)果:總結(jié)本次實(shí)驗(yàn)主要是通過對(duì)ARM的各種指令進(jìn)行操作,通過對(duì)這些指令的應(yīng)用,讓我們學(xué)會(huì)了如何使用匯編來進(jìn)行編程,掌握匯編編程和C語言編程的技巧,并且能夠熟練的使用匯編語言,深刻理解ARM的工作。并且培養(yǎng)了我們寫代碼的能力以及對(duì)代碼的閱讀能力和修改能力。為我們?cè)谝院蟮膶W(xué)習(xí)和生活中更實(shí)用ARM,利用匯編進(jìn)行編程奠定了一定的基礎(chǔ)!
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1