ARM練習(xí)題要點(diǎn)_第1頁(yè)
ARM練習(xí)題要點(diǎn)_第2頁(yè)
ARM練習(xí)題要點(diǎn)_第3頁(yè)
ARM練習(xí)題要點(diǎn)_第4頁(yè)
ARM練習(xí)題要點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、簡(jiǎn)答題什么是嵌入式操作系統(tǒng)?答:嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟/硬件可裁減,功能。可靠性,成本,體積,功耗要求嚴(yán)格的專用計(jì)算機(jī)系統(tǒng)。與通用計(jì)算機(jī)相比,嵌入式系統(tǒng)有哪些特點(diǎn)?答:(1)嵌入式系統(tǒng)通常是面向特定應(yīng)用的;(2)嵌入式系統(tǒng)是將計(jì)算機(jī)技術(shù),半導(dǎo)體技術(shù)和電子技術(shù)與各行各業(yè)的具體應(yīng)用相結(jié)合的后的產(chǎn)物,是一門綜合技術(shù)學(xué)科;(3).嵌入式系統(tǒng)和具體應(yīng)用有機(jī)的結(jié)合在一起,它的升級(jí)換代也是和具體產(chǎn)品同步進(jìn)行的,因此嵌入式產(chǎn)品一旦進(jìn)入市場(chǎng),就有較長(zhǎng)的生命周期;(4).為了提高執(zhí)行速度和可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)本身中,而不是存儲(chǔ)于磁盤(pán)等載體中;(5).嵌

2、入式系統(tǒng)本身不具有自主開(kāi)發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也不能對(duì)其中的程序功能進(jìn)行修改,必須有一套開(kāi)發(fā)工具和環(huán)境才能進(jìn)行開(kāi)發(fā)。ARM處理器有幾種尋址方式,說(shuō)明各種尋址的方式。答:立即尋址:操作數(shù)直接放在指令中。例如:ADDR0,R0,#0x3f;R0-R0+0x3f寄存器尋址:操作數(shù)放在寄存器中。例如:ADDR0,R1,R2;R0-R1+R2寄存器間接尋址:操作數(shù)在內(nèi)存,以寄存器中的值作為操作數(shù)的地址。例如:LDRR0,R1;R0R1基址加偏移量尋址(基址變址尋址):基址寄存器的內(nèi)容與指令中的偏移量相加形成操作數(shù)的有效地址例如:LDRR0,R1,44;R0-R1+4LDRR0,R1,R2;R0

3、-R1+R2多寄存器尋址:一條指令可以完成多個(gè)寄存器值的傳送。例如:LDMIAR0,R1,R2,R3,R4;R1R0;R2-R0+4;R3-R0+8;R4-R0+12堆棧尋址:堆棧是一種數(shù)據(jù)結(jié)構(gòu),按先進(jìn)后出(FirstInLastOut,F(xiàn)ILO)的方式工作,使用一個(gè)稱作堆棧指針的專用寄存器指示當(dāng)前的操作位置,堆棧指針總是指向棧頂。例如:STMFDR13!,R0,R4-R12,LRLDMFDR13!,R0,R4-R12,PC舉例介紹嵌入式處理器有哪幾類?答:1.嵌入式微處理器(EmbeddedMicroprocessorUnit,EMPU);2 .嵌入式微控制器;(EmbeddedMicroc

4、ontrollerUnit,EMCU)3 .嵌入式DSP處理器(EmbeddedDigitalSignalProcessor,EDSP);4 .嵌入式片上系統(tǒng)(EmbeddedSystemonChip,EsoC);什么是立即數(shù)?請(qǐng)簡(jiǎn)要描述立即數(shù)在使用時(shí)有什么注意要點(diǎn)。立即數(shù),主要是指尋址時(shí)直接在指令中出現(xiàn)的數(shù),在使用時(shí)注意(1)立即數(shù)前需要加#(2)ARM指令只有32位長(zhǎng),立即數(shù)在指令中占12位存儲(chǔ)空間,ARM用這12位空間8位表示有效數(shù)字基數(shù)B,4位表示譯為的數(shù)M,按照把B循環(huán)右移M*2位,構(gòu)造成一個(gè)新的32位的數(shù),其它位補(bǔ)0,所以在使用立即數(shù)時(shí),要注意其是否合法。請(qǐng)問(wèn)BL指令跳轉(zhuǎn)時(shí)LR寄存

5、器保存的是什么內(nèi)容?并請(qǐng)簡(jiǎn)述原因。BL跳轉(zhuǎn)時(shí),LR中保存的是執(zhí)行BL跳轉(zhuǎn)指令的下一條指令的地址,考慮流水線的情況,即當(dāng)前的PC-4。LR用來(lái)在需要返回程序時(shí)從LR中還原程序執(zhí)行的位置繼續(xù)執(zhí)行。ARM內(nèi)核有多少個(gè)寄存器,請(qǐng)列舉出這些寄存器的名字和數(shù)量。ARM有37個(gè)寄存器,(1)未分組寄存器:R0-R7,共8個(gè);(2)分組寄存器R8-R14,其中FIQ模式下有單才的一組R8-R12共5個(gè),另外6種模式共用一組R8-R12,共5個(gè),USR和SYS模式共用一組R13-R14,共2個(gè),另外5種模式下各有獨(dú)自的一組R13-R14,共10個(gè);(3)程序計(jì)數(shù)器PC即R15寄存器,共1個(gè);(4)狀態(tài)寄存器CP

6、SR,和5個(gè)備份狀態(tài)寄存器SPSR,共6個(gè);ARM總計(jì)37個(gè)寄存器。ARM通用寄存器中,有3個(gè)寄存器有特殊功能和作用,請(qǐng)寫(xiě)出它們的名字和作用。(6分)R13:SP棧指針寄存器,用來(lái)保存程序執(zhí)行時(shí)的棧指針位置;R14:LR返回鏈接寄存器,用來(lái)保存程序執(zhí)行BL指令或模式切換時(shí)的返回原程序繼續(xù)執(zhí)行的地址;R15:PC程序計(jì)數(shù)器,保存程序執(zhí)行的當(dāng)前地址。ARM的CPSR寄存器的位定義如圖所示,試簡(jiǎn)述各位的功能。(8分)3130292827876543210NZCV保留IFTM4-0標(biāo)志位含義NN=1表示運(yùn)算的結(jié)果為負(fù)數(shù);N=0表示運(yùn)算的結(jié)果為正數(shù)或零ZZ=1表示運(yùn)算的結(jié)果為零;Z=0表示運(yùn)算的結(jié)果為非

7、零CC=1表示有進(jìn)位,C=0表示沒(méi)有進(jìn)位VV=1表示符號(hào)位溢出,V=0表示結(jié)果沒(méi)有溢出Q在ARMvTE/J架構(gòu)支持,指示DSP指令是否溢出J僅ARM5TE/J架構(gòu)支持,J=1表示處理器處于Jazelle狀態(tài)I1=1表示禁止IRQFF=1表示禁止FIQT僅ARMxT架構(gòu)支持,T=0表示處理器處于ARM狀態(tài),T=1表示處理器處于Thumb狀態(tài)什么是偽指令和偽操作?在ARM匯編中有哪幾種偽指令?答:在ARM匯編語(yǔ)言程序中有些特殊助記符,這些助記符與一般指令的助記符的不同之處在于沒(méi)有相對(duì)應(yīng)的操作碼或者機(jī)器碼,通常稱這些特殊指令助記符偽指令,他們多完成的操作成為偽操作;在 ARM 匯編中,有如下幾種偽指

8、令:(1)符號(hào)定義偽指令;(2)數(shù)據(jù)定義偽指令;(3)匯編控制偽指令;(4)信息報(bào)告?zhèn)沃噶睿?5)宏指令及其他偽指令。如何定義寄存器列表,試舉一個(gè)使用寄存器列表的例子,要求實(shí)現(xiàn)4 個(gè)字的內(nèi)存復(fù)制。答:AREAEXAMPLE1,CODE,READONL YENTRYLDRR0,=0XFF; 把地址 0XFF 賦給 R0LDRR5,=0X0F;把地址 0X0F 賦給 R5STARTPBLOCKRLIST R1-R4;把 R1-R4 定義為 PBLOCKLDMIAR0,PBLOCK;把 R0 為首地址的內(nèi)存4個(gè)字單元裝載至R1 到 R4 中STMIAR5,PBLOCK;把R1到R4的值依次存至 R5

9、為首地址的內(nèi)存字單元STOP; 死循環(huán)STOPEND如何定義一個(gè)宏,宏與子程序的區(qū)別是什么?答:宏的格式為:MARCO和MEND$標(biāo)號(hào)宏名$參數(shù)1,$參數(shù)2.指令序列MENDMARCO表示一個(gè)宏定義的開(kāi)始,MEND表示一個(gè)宏的結(jié)束,MARCO和MEND前呼后應(yīng)可以將一段代碼定義為一個(gè)整體,又稱宏,然后在程序中就可以在程序中通過(guò)宏的名稱及參數(shù)調(diào)用該段代碼。宏指令可以重復(fù)使用,這一點(diǎn)的使用方式與子程序有些相似,子程序可以節(jié)省存儲(chǔ)空間,提供模塊化的程序設(shè)計(jì)。但使用子程序機(jī)構(gòu)時(shí)需要保存/恢復(fù)現(xiàn)場(chǎng),從而增加了系統(tǒng)的開(kāi)銷,因此,在代碼傳遞的參數(shù)較多并且比較短時(shí),可以使用宏代替子程序,宏在被調(diào)用的地方展開(kāi)。

10、ARM匯編中如何定義一個(gè)段,段有幾種屬性?答:AREA用于定義一個(gè)代碼段,數(shù)據(jù)段,或者特定屬性的段。段的幾種屬性如下:READONLY表示只讀屬性;READWRITE表示本段可讀寫(xiě);CODE定義代碼段;DATA定義數(shù)據(jù)段;ALIGN=表達(dá)式的對(duì)齊方式為2的表達(dá)式次方;COMMON:定義一個(gè)通用段,這個(gè)段不包含用戶代碼和數(shù)據(jù)。在一個(gè)匯編源文件中如何包含另一個(gè)文件中的內(nèi)容?答:通??梢允褂肎ET/INCLUDE指令,在某源文件中定義一些宏指令,用MAP和FIELD定義結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)類型,用EQU定義常量的符號(hào)名稱,然后用GET/INCLUDE將這個(gè)源文件包含到其他源文件中。1 .ARM7TDMI采

11、用了幾級(jí)流水線工作方式,簡(jiǎn)要說(shuō)明。答:三級(jí)2 、取指令2、譯碼3、執(zhí)行3 .ARM9采用了幾級(jí)流水線工作方式,簡(jiǎn)要說(shuō)明。答:五級(jí)流水線工作方式,1.取指2.指令譯碼3.執(zhí)行4.數(shù)據(jù)存儲(chǔ)訪問(wèn)5.寫(xiě)寄存器4 .哈佛體系結(jié)構(gòu)和馮諾依曼體系結(jié)構(gòu)有何不同。答:哈佛體系結(jié)構(gòu)的兩套地址總線和數(shù)據(jù)總線是分開(kāi)的,馮諾依曼體系結(jié)構(gòu)是復(fù)用的。1. 簡(jiǎn)述ARM發(fā)生異常時(shí),ARM核心會(huì)自動(dòng)做哪些事情?從異常返回時(shí),我們要做哪些事情?當(dāng)異常產(chǎn)生時(shí),ARMcore:拷貝CPSR到SPSR_<mode>設(shè)置適當(dāng)?shù)腃PSR位:改變處理器狀態(tài)進(jìn)入ARM狀態(tài)改變處理器模式進(jìn)入相應(yīng)的異常模式設(shè)置中斷禁止位禁止相應(yīng)中斷(如

12、果需要)保存返回地址到LR_<mode>設(shè)置PC為相應(yīng)的異常向量返回時(shí),異常處理需要:從SPSR_<mode>恢復(fù)CPSR從LR_<mode>恢復(fù)PCNote:這些操作只能在ARM態(tài)執(zhí)行.2 .用ARM匯編指令寫(xiě)出實(shí)現(xiàn)64位加法和64位減法的代碼段,使用的寄存器請(qǐng)自行分配。假定低32位數(shù)存放在r0和門里面,高32位數(shù)存放在r2和r3里面。加法:ADDSr0,r0,ri加S是因?yàn)橐屵@個(gè)操作影響標(biāo)志位ADCr2,r2,r3/ADC是帶進(jìn)位的加法,如果上一條指令產(chǎn)生進(jìn)位則一起加進(jìn)來(lái)減法:SUBSr0,r0,ri加S是因?yàn)橐屵@個(gè)操作影響標(biāo)志位SBCr2,r2,r

13、3/SBC是帶進(jìn)位的減法指令3 .請(qǐng)列舉ARM處理器的模式和異常,并說(shuō)明各個(gè)發(fā)生異常時(shí)ARM處理器所處的模式異常:ResetDataAbortFIQIRQPrefetchAbortSWIUndefinedinstruction處理器模式User:非特權(quán)模式,大部分任務(wù)執(zhí)行在這種模式FIQ:當(dāng)一個(gè)高優(yōu)先級(jí)(fast)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式IRQ:當(dāng)一個(gè)低優(yōu)先級(jí)(normal)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式Supervisor:當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會(huì)進(jìn)入這種模式Abort:當(dāng)存取異常時(shí)將會(huì)進(jìn)入這種模式Undef:當(dāng)執(zhí)行未定義指令時(shí)會(huì)進(jìn)入這種模式System:使用和User模式相同寄存器集的特

14、權(quán)模式4 .FIQ的什么特點(diǎn)使得它處理的速度比IRQ快?1) FIQ優(yōu)先級(jí)比IRQ高,不會(huì)被中斷2) FIQ有自己的專屬寄存器:r8r12,不用對(duì)通用寄存器入棧保護(hù),可以加快速度3) FIQ位于異常向量表的末尾0x1c,故無(wú)需跳轉(zhuǎn),可以在這里直接放置異常處理函數(shù)5. 什么指令可以放在中斷向量表?跳轉(zhuǎn)指令,給PC賦值的指令B,LDR,MOV6. ARM處理器中斷向量表位于存儲(chǔ)器的什么位置?默認(rèn):0x0也可以配置成:0Xffff00007. 下列ARM指令將做什么?a) LDRHr0,r1,#6b) LDRr0,=0x999a:將ri寄存器的值加上6,然后把以這個(gè)值為地址的內(nèi)存單元里的值取半字(低

15、16位)賦給r0b:將立即數(shù)0x999賦給r0,注意這是一個(gè)偽指令8. SWP指令的優(yōu)勢(shì)是什么?用來(lái)實(shí)現(xiàn)什么功能?功能:在寄存器和存儲(chǔ)器之間,由一次存儲(chǔ)器讀和一次存儲(chǔ)器寫(xiě)組成的原子操作。完成一個(gè)字節(jié)或字的交換??梢杂脕?lái)實(shí)現(xiàn)信號(hào)量9. 專業(yè)名詞解釋RISC(ReduceInstructSetComputer);IP(IntellectualProperty);ISR(InterruptServersRoutine)JTAG(JoinTestActiveGroup)IDE(IntegrateDevelopmentEnvironment)RTOS(實(shí)時(shí)操作系統(tǒng));CISC(復(fù)雜指令集);Kernel

16、(內(nèi)核)Scheduler(調(diào)度)non-preemptive(非搶先式)初始化代碼直接對(duì)ARM微處理器內(nèi)核及硬件控制器編程,多采用匯編語(yǔ)言編程,初始化代碼一般應(yīng)包含如下典型任務(wù):(1)定義程序入口點(diǎn)(2)設(shè)置異常向量;(3)初始化存儲(chǔ)器系統(tǒng);(4)初始化堆棧指針寄存器;(5)初始化臨界I/O設(shè)備;(6)初始化C代碼的運(yùn)行環(huán)境;(7)改變處理器的運(yùn)行模式和狀態(tài);(8)使能中斷;(9)進(jìn)入C代碼運(yùn)行選擇題1. ARM屬于RISC架構(gòu)2. ARM指令集是32位寬,Thumb指令集是16位寬的。3. ARM指令集是4字節(jié)對(duì)齊,Thumb指令集是2字節(jié)對(duì)齊的4. 復(fù)位后,ARM處理器處于SVC模式,A

17、RM狀態(tài)5. ARM處理器總共37個(gè)寄存器,System模式下使用17個(gè)寄存器,SVC模式下使用18個(gè)寄存器。6. ARM處理器中優(yōu)先級(jí)別最高的異常為RESET,F(xiàn)IQ,IRQ異??梢杂脕?lái)相應(yīng)中斷7. ARM數(shù)據(jù)處理指令中有效的立即數(shù)是(ACEGH)A0X00AB0000B0X0000FFFFC0XF000000FD0X08000012E0X00001F80F0XFFFFFFFFG0H0XFF0000008. ATPCS規(guī)定中,推薦子函數(shù)參數(shù)最大為4個(gè)9. ATPCS規(guī)定中,棧是滿減10. 在ARM匯編編程,寄存器有多個(gè)別名,通常PC是指R15,LR是指R14,SP是指R1311. CPSR寄

18、存器中反映處理器狀態(tài)的位是T位12. 下面屬于ARM子程序調(diào)用指令的是BL13. ARM7屬于馮.諾依曼結(jié)構(gòu),ARM9屬于哈佛結(jié)構(gòu)。14. ARM7是3級(jí)流水線,ARM9是5級(jí)流水線。15. ARM中可以訪問(wèn)狀態(tài)寄存器的指令是MRS,能夠訪問(wèn)內(nèi)存的指令是LDR16. 下面哪種操作系統(tǒng)最方便移植到嵌入式設(shè)備中(D)ADOSBUNIXCWINDOWSXPDLINUX17. 以下哪項(xiàng)關(guān)于SRAM和DRAM的區(qū)別是不對(duì)(A)(A)SRAM比DRAM慢(B)SRAM比DRAM耗電多(C)DRAM存儲(chǔ)密度比SRAM高得多(D)DRM需要周期性刷新18. 下面哪種嵌入式操作系統(tǒng)很少用于手機(jī)終端設(shè)備上(CE)

19、(A)Symbian(B)WinCE(C)uc/os(D)linux(E)VxWorks19. S3C2410采用的是ARM920T核心20. 下面哪點(diǎn)不是嵌入式操作系統(tǒng)的特點(diǎn)(C)A.內(nèi)核精簡(jiǎn)B.專用性強(qiáng)C.功能強(qiáng)大D.高實(shí)時(shí)性21. NANDFLASH和NORFLASH的敘述正確的是(D)A.NOR的讀速度比NAND稍慢一些B.NAND的寫(xiě)入速度比NOR慢很多C.NAND的擦除速度遠(yuǎn)比NOR的慢D.大多數(shù)寫(xiě)入操作需要先進(jìn)行擦除操作22. MMU的作用有(AB)A內(nèi)存保護(hù)B地址轉(zhuǎn)換C加快存取速度D安全保密E內(nèi)存分配23. 以下屬于DMA特點(diǎn)的有(BC)A占用CPUB占用總線C不占用CPUD不

20、占用總線24. 以下哪種方式不屬于文件系統(tǒng)的格式(B)(A)FAT(B)DOS(C)NTFS(D)Ext1 .在ARM體系結(jié)構(gòu)中,要從主動(dòng)用戶模式(User)切換到超級(jí)用戶模式(Supervisor),采用何種方法?先修改程序態(tài)備份寄存器(SPSR)到對(duì)應(yīng)的模式,再更新CPU狀態(tài)2 .嵌入式系統(tǒng)加電或復(fù)位后,所有的CPU通常都從某個(gè)由CPU制造商預(yù)先安排的地址上取指令。例如:對(duì)于S3C2410來(lái)說(shuō),BootLoader會(huì)映射到0x00000000地址處。3 .CPSR中的低8位稱為控制位,下列不屬于控制位的是【A】。A、NB、IC、FD、T4 .ARM中可以訪問(wèn)狀態(tài)寄存器的指令是MRS,能夠訪

21、問(wèn)內(nèi)存的指令是LDR。5 .下列條件碼中表示不相等的是NE。EQ相等NE不相等CS/HS無(wú)符號(hào)數(shù)大于或等于CC/LO無(wú)符號(hào)數(shù)小于MI負(fù)數(shù)PL正數(shù)或零VS溢出VC沒(méi)有溢出HI無(wú)符號(hào)數(shù)大于LS無(wú)符號(hào)數(shù)小于或等于GE有符號(hào)數(shù)大于或等于LT有符號(hào)數(shù)小于GT有符號(hào)數(shù)大于LE有符號(hào)數(shù)小于或等于AL任何無(wú)條件執(zhí)行(指令默認(rèn)條件)NV任何從不執(zhí)行(不要使用)6 .CPSR中的低8位稱為控制位,其中I位等于1表示禁止IRQ中斷。7 .ARM微處理器支持7種工作模式。其中,除用戶模式之外的其余6種稱為特權(quán)模式,在這6種之中,除系統(tǒng)模式之外的其余5種又稱為異常模式。8 .下列ARM指令中,可用于滿遞增堆棧操作的是S

22、TMIB。9 .ARM偽指令中,可用于大范圍地址讀取的是LDR。10 .同CISC相比,下面哪一項(xiàng)不屬于RISC處理器的特征。【D】A、采用固定長(zhǎng)度的指令格式,指令規(guī)整、簡(jiǎn)單、基本尋址方式有23種。B、減少指令數(shù)和尋址方式,使控制部件簡(jiǎn)化,加快執(zhí)行速度。C、數(shù)據(jù)處理指令只對(duì)寄存器進(jìn)行操作,只有加載/存儲(chǔ)指令可以訪問(wèn)存儲(chǔ)器,以提高指令的執(zhí)行效率,同時(shí)簡(jiǎn)化處理器的設(shè)計(jì)。D、RISC處理器都采用哈佛結(jié)構(gòu)11 .以下敘述中,不符合RISC指令系統(tǒng)特點(diǎn)的是【B】。A、指令長(zhǎng)度固定,指令種類少B、尋址方式種類豐富,指令功能盡量增強(qiáng)C、設(shè)置大量通用寄存器,訪問(wèn)存儲(chǔ)器指令簡(jiǎn)單D、選取使用頻率較高的一些簡(jiǎn)單指令

23、12.下面關(guān)于ARM處理器的體系結(jié)構(gòu)描述哪一個(gè)是錯(cuò)誤的?!綛】A、三地址指令格式B、所有的指令都是多周期執(zhí)行C、指令長(zhǎng)度固定D、Load-Store結(jié)構(gòu)1 .相對(duì)于ARM指令集,Thumb指令集的特點(diǎn)是【D】。A、指令執(zhí)行速度快B、16位指令集,可以得到密度更高的代碼,對(duì)于需要嚴(yán)格控制成本的設(shè)計(jì)非常有意義C、Thumb模式有自己獨(dú)立的寄存器D、16位指令集,代碼密度高,加密性能好2 .在ARM寄存器結(jié)構(gòu)中,棧指針使用R13寄存器。3.32位體系結(jié)構(gòu)的ARM處理器有7種不同的處理器工作模式,和6個(gè)主要用來(lái)標(biāo)識(shí)CPU工作狀態(tài)和程序運(yùn)行狀態(tài)的狀態(tài)寄存器。4 .在下列ARM處理器的各種模式中,只有用戶

24、模式不可以自由地改變處理器的工作模式。5 .在ARM的匯編程序中,ADR、ADRL、LDR、NOP等被稱為偽指令。填空題1 .常見(jiàn)的ARM處理器內(nèi)核有ARM7、ARM9和1ARM11等。2 .按總線所傳送的信息類型,總線分為【地址總線】、【數(shù)據(jù)總線】和【控制總線】。3 .GPIO的中文全稱是【通用輸入而出口】。4 .ARM處理器有兩種狀態(tài),分別是ARM和【Thumb】。5 .計(jì)算機(jī)結(jié)構(gòu)分為【馮諾依曼】結(jié)構(gòu)和【哈佛】結(jié)構(gòu)。6 .ARM處理器支持的數(shù)據(jù)類型中,字節(jié)為【8】位、半字為【16】位、字為【32】位。7 .ARM體系結(jié)構(gòu)版本中V【4】版架構(gòu)是目前應(yīng)用最廣的ARM體系架構(gòu),ARM7、【ARM

25、9】都采用該架構(gòu)。8 .常用的嵌入式操作系統(tǒng)有【嵌入式Linux】、【VxWords】等。9 .ARM嵌入式系統(tǒng)主要由【嵌入式硬件】、【嵌入式軟件】和【開(kāi)發(fā)工具】構(gòu)成。10.S3C2410支持兩種引導(dǎo)方式,分別是【Nor-Flash】啟動(dòng)方式、【Nand-Flash】啟動(dòng)方式。11.一個(gè)嵌入式系統(tǒng)由3部分組成,分別是【嵌入式硬件】、【嵌入式軟件】和【開(kāi)發(fā)工具】。判斷題:1、所有的電子設(shè)備都屬于嵌入式設(shè)備。(F)2、馮諾依曼體系將被哈佛總線所取代。(F)3、嵌入式開(kāi)發(fā)不需要硬件支持。(F)4、移植操作系統(tǒng)時(shí)需要修改操作系統(tǒng)中與處理器直接相關(guān)的程序。F5、USB2.0的最大通信速率為12MB。(F

26、)6、嵌入式開(kāi)發(fā)需要專門的軟件和硬件設(shè)備。(T)編程題;例三:ADR偽指令A(yù)REAadrlabel1,CODE,READONLYENTRYstartBLfuncB.LTORGfuncADRR0,startADRR1,DataArea;ADRR2,DataArea+4300ADRLR3,DataArea+4300MOVPC,LRDataAreaSPACE8000END;例五:利用跳轉(zhuǎn)表實(shí)現(xiàn)程序跳轉(zhuǎn)AREAJump,CODE,READONLYnumEQU2ENTRYstartMOVR0,#0MOVR1,#3MOVR2,#2BLarithfuncB.arithfuncCMPR0,#numMOVHSP

27、C,LRADRR3,JumpTableLDRPC,R3,R0,LSL#2JumpTableDCDDoAddDCDDoSubDoAddADDR0,R1,R2MOVPC,LRDoSubSUBR0,R1,R2MOVPC,LREND3、存儲(chǔ)器從0x400000開(kāi)始的100個(gè)單元中存放著ASCII碼,編寫(xiě)程序,將其所有的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母,對(duì)其它的ASCII碼不做變換。MOVR0,#0x400000MOVR1,#0LPLDRBR2,R0,R1CMPR2,#0x61BLONEXTCMPR2,#0x7B;0x61-0x7A為小寫(xiě)字母的SUBLOR2,R2#0x20STRBLOR2,R0,R1NEXTAD

28、DR1,R1,#1CMPR1,#100BNELP8、編寫(xiě)一簡(jiǎn)單一簡(jiǎn)單ARM匯編程序段,實(shí)現(xiàn)1+2+100的運(yùn)算。MOVR2,#100MOVR1,#0LOOPADDR1,R1,R2;R1中為累加和SUBSR2,R2,#1;R2控制循環(huán)BNELOOPASC4、編寫(xiě)程序,比較存儲(chǔ)器中0x400000和0x400004兩無(wú)符號(hào)字?jǐn)?shù)據(jù)的大小,并且將比較結(jié)果存于0x400008的字中,若兩數(shù)相等其結(jié)果記為0,若前者大于后者其結(jié)果記為1,若前者小于后者其結(jié)果記為-1。MOVR0,#0x400000LDRR1,R0;取第1個(gè)數(shù)LDRR2,R0,#4;取第2個(gè)數(shù)CMPR1,R2;兩個(gè)數(shù)相比較MOVHIR1,#1

29、;R1大MOVLOR1,#-1;R1小MOVEQR1,#0;兩個(gè)數(shù)相等STRR1,R0,#87、編寫(xiě)一程序,存儲(chǔ)器中從0x400200開(kāi)始有一個(gè)64位數(shù)。(1)將取反,再存回原處;(2)求其補(bǔ)碼,存放到0x400208處。LDRR0,=0x400200LDRR2,=0xFFFFFFFFLDRR1,R0;取低32位數(shù)EORR1,R1,R2;取反STRR1,R0;存低32位反碼ADDSR1,R1,#1;又加1為求補(bǔ)STRR1,R0,#8;存低32位補(bǔ)碼LDRR1,R0,#4;取高32位數(shù)EORR1,R1,R2;取反STRR1,R0,#4;存高32位反碼ADCR1,R1,#0;高32位求補(bǔ)STRR1

30、,R0,#12;存高32位補(bǔ)碼例七:匯編語(yǔ)言與C/C+的混和編程項(xiàng)目名:Example7.mcp文件名:Example7_asm.s文件名:Example7_c.cAREAAsm_C,CODE,READONLYENTRYLDRSP,=0x4000IMPORT_mainBL_mainB.END#include<stdio.h>intmain()printf("Helloworldn");return0;1、寫(xiě)一條ARM指令,分別完成下列操作:a)r0=16MOVR0,#16b)r0=r1/16(帶符號(hào)的數(shù)字)MOVR0,R1,ASR,#4c)r1=r2*3MULR

31、1,R2,#3d)r0=-r0RSBR0,R0,#02、寫(xiě)幾條ARM指令,使能IRQ中斷MRSR0,CPSRBICR0,R0,#0x80MSRSPSR,R03、編寫(xiě)程序,將存儲(chǔ)器從0x400000開(kāi)始的200個(gè)字節(jié)的數(shù)據(jù),傳送到0x400800開(kāi)始的區(qū)域。AREAcopy,CODE,READONLYENTRYSTARTMOVR0,#0x400000LDRR1,=0x400800MOVR7,#200LOOPLDRBR2,R0,#1STRBR2,R1,#1SUBSR7,R7,#1BNELOOPSTOPBSTOPEND4、編寫(xiě)一程序,查找存儲(chǔ)器從0x400000開(kāi)始的100個(gè)字中為0的數(shù)目,將其結(jié)果

32、存到0x400190中。AREAzero,CODE,READONLYENTRYSTARTMOVR0,#0x400000MOVR1,#0MOVR7,#100LOOPLDRR2,R0,#4CMPR2,#0BNENEXTADDR1,R1,#1NEXTSUBSR7,R7,#1BNELOOPSTRR1,R0ENDAREAExample2,CODE,READONLY;聲明代碼段Example2ENTRY;標(biāo)識(shí)程序入口CODE32;聲明32位ARM指令STARTLDRR1,=COUNT;R1<=COUNTMOVR0,#0;R0<=0STRR0,R1;R1<=R0,即設(shè)置COUNT為0LOO

33、PLDRR1,=COUNTLDRR0,R1;R0<=R1ADDR0,R0,#1;R0<=R0+1CMPR0,#10;R0與10比較,影響條件碼標(biāo)志MOVHSR0,#0;若R0大于等于10,則此指令執(zhí)行,STRR0,R1;R1<=R0,即保存COUNTBLOOP5、用匯編語(yǔ)言編寫(xiě)程序讀取存儲(chǔ)器0x40003100地址上的數(shù)據(jù),將數(shù)據(jù)加1,若結(jié)果小于10則使用STR指令把結(jié)果寫(xiě)回原地址,若結(jié)果大于等于10,則把0寫(xiě)回原地址。答:COUNTEQU0x40003100定義一個(gè)變量,地址為0x40003100ENDR0<=07、如何實(shí)現(xiàn)128位數(shù)的減法,請(qǐng)舉例說(shuō)明。AREAEXA

34、MPLE2,CODE,READONLYENTRYSTARTSUBSR5,R5,R9SBCSR4,R4,R8SBCSR3,R3,R7SBCSR2,R2,R6STOPBSTOPEND8、將存儲(chǔ)器中起始地址地址0X10處的4個(gè)字?jǐn)?shù)據(jù)移動(dòng)到地址0X20處。AREAEXAMPLE2,CODE,READONLYENTRYLDRR0,=0X10LDRR5,=0X20STARTLDMIAR0,R1-R4STMIAR5,R1-R4R5每次自動(dòng)加1STOPBSTOP;把地址0X10賦給R0;把地址0X20賦給R5;把R0為首地址的內(nèi)存單元中的值依次賦給,;R1到R4,每次賦完一次值,R0自動(dòng)加1;把R1到R4的值依次賦給以R5為首地址的內(nèi)存單元中,;死循環(huán)END參考CPSR寄存器中各標(biāo)志位的含義,使處理器處于系統(tǒng)模式。AREAEXAMPLE2,CODE,READONLYENTRYSTARTMOVR0,#0X1FMSRCPSR_c,R0STOPBSTOP;給R0賦值,2進(jìn)制為11111;把CPSR的條件位置1;死循環(huán)用跳轉(zhuǎn)指

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論