ARM練習題要點_第1頁
ARM練習題要點_第2頁
ARM練習題要點_第3頁
ARM練習題要點_第4頁
ARM練習題要點_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、入式系統(tǒng)本身不具有自主開發(fā)能力,即使設計完成以后用戶通常也不能對其中的程序功能進行修改,必須有一套開發(fā)工具和環(huán)境才能進行開發(fā)。ARM處理器有幾種尋址方式,說明各種尋址的方式。答:立即尋址:操作數(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多寄存器尋址:一條指令可以完成多個寄存器值的傳送。例如:LDMIAR0,R1,R2,R3,R4;R1R0;R2-R0+4;R3-R0+8;R4-R0+12堆棧尋址:堆棧是一種數(shù)據(jù)結(jié)構(gòu),按先進后出(FirstInLastOut,F(xiàn)ILO)的方式工作,使用一個稱作堆棧指針的專用寄存器指示當前的操作位置,堆棧指針總是指向棧頂。例如: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ù)?請簡要描述立即數(shù)在使用時有什么注意要點。立即數(shù),主要是指尋址時直接在指令中出現(xiàn)的數(shù),在使用時注意(1)立即數(shù)前需要加#(2)ARM指令只有32位長,立即數(shù)在指令中占12位存儲空間,ARM用這12位空間8位表示有效數(shù)字基數(shù)B,4位表示譯為的數(shù)M,按照把B循環(huán)右移M*2位,構(gòu)造成一個新的32位的數(shù),其它位補0,所以在使用立即數(shù)時,要注意其是否合法。請問BL指令跳轉(zhuǎn)時LR寄存

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

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

7、零CC=1表示有進位,C=0表示沒有進位VV=1表示符號位溢出,V=0表示結(jié)果沒有溢出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匯編語言程序中有些特殊助記符,這些助記符與一般指令的助記符的不同之處在于沒有相對應的操作碼或者機器碼,通常稱這些特殊指令助記符偽指令,他們多完成的操作成為偽操作;在 ARM 匯編中,有如下幾種偽指

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

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

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

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

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

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

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

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

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

17、RM狀態(tài)5. ARM處理器總共37個寄存器,System模式下使用17個寄存器,SVC模式下使用18個寄存器。6. ARM處理器中優(yōu)先級別最高的異常為RESET,F(xiàn)IQ,IRQ異??梢杂脕硐鄳袛?. ARM數(shù)據(jù)處理指令中有效的立即數(shù)是(ACEGH)A0X00AB0000B0X0000FFFFC0XF000000FD0X08000012E0X00001F80F0XFFFFFFFFG0H0XFF0000008. ATPCS規(guī)定中,推薦子函數(shù)參數(shù)最大為4個9. ATPCS規(guī)定中,棧是滿減10. 在ARM匯編編程,寄存器有多個別名,通常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級流水線,ARM9是5級流水線。15. ARM中可以訪問狀態(tài)寄存器的指令是MRS,能夠訪問內(nèi)存的指令是LDR16. 下面哪種操作系統(tǒng)最方便移植到嵌入式設備中(D)ADOSBUNIXCWINDOWSXPDLINUX17. 以下哪項關(guān)于SRAM和DRAM的區(qū)別是不對(A)(A)SRAM比DRAM慢(B)SRAM比DRAM耗電多(C)DRAM存儲密度比SRAM高得多(D)DRM需要周期性刷新18. 下面哪種嵌入式操作系統(tǒng)很少用于手機終端設備上(CE)

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

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

21、問內(nèi)存的指令是LDR。5 .下列條件碼中表示不相等的是NE。EQ相等NE不相等CS/HS無符號數(shù)大于或等于CC/LO無符號數(shù)小于MI負數(shù)PL正數(shù)或零VS溢出VC沒有溢出HI無符號數(shù)大于LS無符號數(shù)小于或等于GE有符號數(shù)大于或等于LT有符號數(shù)小于GT有符號數(shù)大于LE有符號數(shù)小于或等于AL任何無條件執(zhí)行(指令默認條件)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相比,下面哪一項不屬于RISC處理器的特征?!綝】A、采用固定長度的指令格式,指令規(guī)整、簡單、基本尋址方式有23種。B、減少指令數(shù)和尋址方式,使控制部件簡化,加快執(zhí)行速度。C、數(shù)據(jù)處理指令只對寄存器進行操作,只有加載/存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率,同時簡化處理器的設計。D、RISC處理器都采用哈佛結(jié)構(gòu)11 .以下敘述中,不符合RISC指令系統(tǒng)特點的是【B】。A、指令長度固定,指令種類少B、尋址方式種類豐富,指令功能盡量增強C、設置大量通用寄存器,訪問存儲器指令簡單D、選取使用頻率較高的一些簡單指令

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

24、模式不可以自由地改變處理器的工作模式。5 .在ARM的匯編程序中,ADR、ADRL、LDR、NOP等被稱為偽指令。填空題1 .常見的ARM處理器內(nèi)核有ARM7、ARM9和1ARM11等。2 .按總線所傳送的信息類型,總線分為【地址總線】、【數(shù)據(jù)總線】和【控制總線】。3 .GPIO的中文全稱是【通用輸入而出口】。4 .ARM處理器有兩種狀態(tài),分別是ARM和【Thumb】。5 .計算機結(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)是目前應用最廣的ARM體系架構(gòu),ARM7、【ARM

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

26、)6、嵌入式開發(fā)需要專門的軟件和硬件設備。(T)編程題;例三:ADR偽指令AREAadrlabel1,CODE,READONLYENTRYstartBLfuncB.LTORGfuncADRR0,startADRR1,DataArea;ADRR2,DataArea+4300ADRLR3,DataArea+4300MOVPC,LRDataAreaSPACE8000END;例五:利用跳轉(zhuǎn)表實現(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、存儲器從0x400000開始的100個單元中存放著ASCII碼,編寫程序,將其所有的小寫字母轉(zhuǎn)換成大寫字母,對其它的ASCII碼不做變換。MOVR0,#0x400000MOVR1,#0LPLDRBR2,R0,R1CMPR2,#0x61BLONEXTCMPR2,#0x7B;0x61-0x7A為小寫字母的SUBLOR2,R2#0x20STRBLOR2,R0,R1NEXTAD

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論