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

正文內(nèi)容

嵌入式實(shí)驗(yàn)報(bào)告五(參考版)

2024-10-21 09:36本頁面
  

【正文】 并且培養(yǎng)了我們寫代碼的能力以及對代碼的閱讀能力和修改能力。return(0)。int main(void){ const int n = 100。調(diào)用sum5 ADD SP,SP,4。將r3的值入棧當(dāng)做第五個(gè)參數(shù) ADD R3,R1,R1。r2 = 3 ADD R3,R1,R2。r0 = 1 ADD R1,R0,R0。聲明調(diào)用c函數(shù) CALLSUMS STMFD SP!,{LR}。}。四、實(shí)驗(yàn)內(nèi)容理解下列程序,新建工程,加入下面的程序,并觀察實(shí)驗(yàn)結(jié)果。在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的硬件寄存器的宏,對宏的讀寫,就能操作44B0的硬件。在匯編程序中使用EXPORT偽指令聲明本子程序,使其他程序可以調(diào)用此子程序。在調(diào)用C程序時(shí),要正確設(shè)置入口參數(shù),然后使用BL調(diào)用。匯編程序調(diào)用C程序匯編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時(shí)參數(shù)正確傳遞。具體來說,匯編語言的子程序應(yīng)滿足下面3個(gè)條件:● 在子程序編寫時(shí),必須遵守相應(yīng)的ATPCS規(guī)則; ● 堆棧的使用要遵守相應(yīng)的ATPCS規(guī)則; ● 在匯編編譯器中使用atpcs選項(xiàng)。而使用ADS的C語言編譯器編譯的C語言子程序滿足用戶指定的ATPCS的規(guī)則。如寄存器的使用規(guī)則,堆棧的使用規(guī)則,參數(shù)的傳遞規(guī)則等。當(dāng)匯編代碼較為簡潔,則可使用直接內(nèi)嵌匯編的方法,否則,使用將匯編文件以文件的形式加入項(xiàng)目當(dāng)中,通過ATPCS的規(guī)定與C程序相互調(diào)用與訪問。C語言使用的是標(biāo)準(zhǔn)的C語言,ARM的開發(fā)環(huán)境實(shí)際上就是嵌入了一個(gè)C語言的集成開發(fā)環(huán)境,只不過這個(gè)開發(fā)環(huán)境和ARM的硬件緊密相關(guān)。因此,C語言的在ARM編程中具有重要地位。三、ARM C語言簡介與使用規(guī)則在應(yīng)用系統(tǒng)的程序設(shè)計(jì)中,若所有的編程任務(wù)均由匯編語言來完成,其工作量巨大,并且不宜移植。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é)會使用ARM的C語言編程。將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í)行。將r7執(zhí)行的地址的數(shù)據(jù)讀入r8=r10 LDR R3,=N。將r6的值裝入r0+8執(zhí)行的內(nèi)存中 LDR R7,=src。將r4的值裝入r0執(zhí)行的內(nèi)存中STR R5,[R0,4]。設(shè)置r4 = 1;LDR R0,=dst。設(shè)置r4 = 1; MOV R5,2。END。src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4。不為0跳轉(zhuǎn)到wordcopy處 stop。將r3中的數(shù)據(jù)存入到dst數(shù)據(jù)塊中,r1 = r1+4 SUBS r2,r2,1。LDR r3,[r0],4。7 BEQ stop。ANDS r2,r2,7。結(jié)果不為0跳轉(zhuǎn)到octcopy LDMFD SP!,{R4R11}。將r4r11中的數(shù)據(jù)放入dst數(shù)據(jù)塊中 SUBS r3,r3,1。LDMIA r0!,{r4r11}。結(jié)果為0的話跳轉(zhuǎn)到copywords STMFD SP!,{r4r11}。MOVS r3,r2,LSR 3。設(shè)置r2的值為20 MOV sp,0x400。將src數(shù)據(jù)塊的開始地址存入r0中 LDR r1,=dst。定義常量Num = 20 START。實(shí)驗(yàn)結(jié)果:主要實(shí)現(xiàn)將數(shù)據(jù)29,310,411……916壓入堆棧(初始地址是0x800處開始),最后將R4R11全部清零。R4 9繼續(xù)執(zhí)行循環(huán)LDMFD SP!,{R4R11}。將R4R11的值壓入堆棧CMP R4,9。R10累加1 ADD R11,R11,x。R8累加1 ADD R9,R9,x。R6累加1 ADD R7,R7,x。R4累加1 ADD R5,R5,x。設(shè)置R10 = 7 MOV R11,8。設(shè)置R8 = 5 MOV R9,6。設(shè)置R6 = 3 MOV R7,4。設(shè)置R4 = 1 MOV R5,2。MOV SP,stack_top。定義常量x = 1 stack_top EQU 0X800。B stop。r0 = r0+r1 STR r0,[sp]。將y的值放入r0 LDR r1,[sp]。將x的值放入r0 STR r0,[sp]。程序入口處MOV sp,stack_top。定義常量y=61 stack_top EQU 0X1000。三、實(shí)驗(yàn)內(nèi)容,新建工程,加入下面的程序,并觀察實(shí)驗(yàn)結(jié)果程序代碼:x EQU 15。END 程序執(zhí)行結(jié)果:程序執(zhí)行完在0x90018內(nèi)存入的數(shù)據(jù)是0x13ba即5050實(shí)驗(yàn)二 ARM匯編語言程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模瑢W(xué)會使用ARM的匯編語言編程; ,以及存儲器的裝載指令操作。不相等的話繼續(xù)執(zhí)行循環(huán)STR R3,[R2]。R0 = R01 CMP R0,R1。設(shè)置R3的值為0 LOOP ADD R3,R3,R0。設(shè)置R2寄存器指向地址0x90018 MOV R1,0。+100,求的值,并保存在地址0x90018的地址里面程序代碼:MOV R0,100。R0執(zhí)行結(jié)果如下:+2+3+4+R0 = R0+1 CMP R0,R1。R2 = R2+R9 ADD R8,R8,4。將R5+R8的數(shù)據(jù)讀入R6 MUL R9,R4,R6。將R5寄存器的值設(shè)為數(shù)據(jù)域X的地址 LOOP LDR R4,[R3,R8]。設(shè)置R2的值為0 ADR R3,C。將R2寄存器的值設(shè)為數(shù)據(jù)域N的地址 LDR R1,[R2]。設(shè)置R0寄存器的值為0 MOV R8,0。定義一個(gè)代碼段 ENTRY。c”和“.s”文件。跳轉(zhuǎn)到 C 程序代碼Main()函數(shù)END五、心得體會:通過本次實(shí)驗(yàn),我學(xué)會并掌握使用ADS ,并進(jìn)行調(diào)試。聲明32 位ARM 指令ResetLDRSP,=0x40003F00。聲明代碼段StartENTRY。IMPORT|Image$$RO$$Limit|IMPORT|Image$$RW$$Base|IMPORT|Image$$ZI$$Base|IMPORT|Image$$ZI$$Limit|IMPORTMain。起動(dòng)文件。}while(1)。for(i=0。(N0)void Main(void){ uint32 i。四、程序清單:define uint8unsigned chardefine uint32unsigned intdefine Nuint32 sum。單步運(yùn)行程序,判斷程序是否跳轉(zhuǎn)到C程序中運(yùn)行。“B Main”處設(shè)置斷點(diǎn),然后全速運(yùn)行程序。:選擇Edit—DebugRel Settings,在DebugRel Settings對話框的左邊選擇ARM Linker項(xiàng),然后在Layout頁設(shè)置Object/,Section為Start。 Base為0x40000000,RW Base為0x40003000。三、實(shí)驗(yàn)步驟:,使用ARM Executable Image 工程模板建立一個(gè)工程ProgramC。匯編程序的功能是初始化堆棧指針和初始化C程序的運(yùn)行環(huán)境,然后跳轉(zhuǎn)到C程序運(yùn)行,這就是一個(gè)簡單的啟動(dòng)程序。實(shí)驗(yàn)六C語言程序?qū)嶒?yàn)一、實(shí)驗(yàn)?zāi)康模和ㄟ^實(shí)驗(yàn)了解使用ADS ,并進(jìn)行調(diào)試。未定義模式堆棧END五、心得體會:通過本次實(shí)驗(yàn),我較好的掌握了如何使用MRS/MSR指令實(shí)現(xiàn)ARM微控制器工作模式的切換??焖僦袛嗄J蕉褩?臻gAbtStackSpaceSPACEABT_STACK_LEGTH * 4。管理模式堆??臻gIrqStackSpaceSPACEIRQ_STACK_LEGTH * 4。分配堆棧空間AREAMyStacks, DATA, NOINIT, ALIGN=2UsrStackSpaceSPACEUSR_STACK_LEGTH * 4。case 5:BNECASE_7SUBR0,R2,R1。x = key + yBSWITCH_END。case 2:MPNER2,3。0x0F)CMPR2,0。初始化key 的值A(chǔ)NDR2,R2,0x0F。設(shè)x 為R0,y 為R1,key 為R2(x、y、key 均為無符號整數(shù))MOVR1,3。break。default: x = 168。break。case7: x = key * y。break。使用MOV、MVN、SUB 指令實(shí)現(xiàn):R5 = 0x5FFFFFF8y。即是R3 = X + YMOVR8,R3。R0 MOVR1,Y。聲明32 位ARM 指令START。聲明代碼段Example3ENTRY。定義Y 的值為8BIT23EQU(1。四、程序清單:XEQU。5)打開寄存器窗口(Processor Registers),選擇Current 項(xiàng)監(jiān)視各寄存器的值。設(shè)置調(diào)試入口地址Image entry point 為 0x40000000。2) ,編寫實(shí)驗(yàn)程序,然后添加到工程中。、SUB、AND、ORR、CMP和TST等指令完成數(shù)據(jù)加減運(yùn)算及邏輯運(yùn)算。實(shí)驗(yàn)三數(shù)據(jù)處理指令練習(xí)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模?。本次?shí)驗(yàn)中我遇到了一個(gè)問題,在工程里加載文件的時(shí)候,沒注意文件的后綴應(yīng)為“。[R1] BLOOPEND五、心得體會:通過本次實(shí)驗(yàn),讓我更深一步的了解了ADS 集成開發(fā)環(huán)境及ARMulator軟件仿真。R0 與 10 比較,影響條件碼標(biāo)志MOVHSR0,0。R0 ADDR0,R0,1。R0 STRR0,[R1]。聲明32 位ARM 指令STARTLDRR1,=COUNT。聲明代碼段Example2ENTRY。四、程序清單:COUNTEQU0x40003100。(Processor Registers),選擇Current 項(xiàng)監(jiān)視R0和R1的值。設(shè)置調(diào)試入口地址Image entry point 為 0x40000000。編寫實(shí)驗(yàn)程序,然后添加到工程中。 ,單步、全速運(yùn)行程序,設(shè)置斷點(diǎn),打開寄存器窗口(Processor Registers)監(jiān)視R0和R1的值,打開存儲器觀察窗口(Memory)監(jiān)視0x40003100上的值。,并能編寫簡單的匯編程序。我感觸最深的是每次軟件的開始使用是最關(guān)鍵的,想要掌握一個(gè)軟件的使用必須進(jìn)行多次的練習(xí),多練幾遍自然而然的會熟練的操作。設(shè)置參數(shù)MOVR1,8ADDSR0,R0,R1。標(biāo)識程序入口CODE32。四、程序清單:AREAExample1,CODE,READONLY。—Make,將編譯鏈接整個(gè)工程。建議在Tab Inserts Spaces前打勾,使Tab鍵插入的是多個(gè)空格。 New,對于中文支持不完善,因此建議修改字體。三、實(shí)驗(yàn)步驟:
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1