嵌入式系統(tǒng)開發(fā)李宥謀答案(1)講解_第1頁
嵌入式系統(tǒng)開發(fā)李宥謀答案(1)講解_第2頁
嵌入式系統(tǒng)開發(fā)李宥謀答案(1)講解_第3頁
嵌入式系統(tǒng)開發(fā)李宥謀答案(1)講解_第4頁
嵌入式系統(tǒng)開發(fā)李宥謀答案(1)講解_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、嵌入式系統(tǒng)開發(fā)習(xí)題 11.什么是嵌入式系統(tǒng)?有何特點(diǎn)?答:嵌入式系統(tǒng)的概念有很多種,在嵌入式系統(tǒng)領(lǐng)域中比較認(rèn)同的嵌入式系統(tǒng)的概念是:嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)的特點(diǎn): 嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)以及電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合的產(chǎn)物,這一點(diǎn)就決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。 系統(tǒng)內(nèi)核小。由于嵌入式系統(tǒng)一般是應(yīng)用于小型電子裝置中,系統(tǒng)資源相對(duì)有限,所以內(nèi)核較之傳統(tǒng)的操作系統(tǒng)要小得多。 專用性強(qiáng)。 系統(tǒng)精簡。 系統(tǒng)軟

2、件( OS)要求具有高實(shí)時(shí)性。 嵌入式軟件開發(fā)要走向標(biāo)準(zhǔn)化,需要使用多任務(wù)的操作系統(tǒng)。 嵌入式系統(tǒng)本身并不具備在其上進(jìn)行進(jìn)一步開發(fā)的能力。2.嵌入式系統(tǒng)可以分為幾層?每一層各完成哪些功能?答:嵌入式系統(tǒng)由硬件層、中間層、軟件層和功能層組成。硬件層:以嵌入式微處理器為核心,存儲(chǔ)器用以存儲(chǔ)數(shù)據(jù)和執(zhí)行代碼,相關(guān)的設(shè)備接口和 I/O 接口,這些組成了一個(gè)嵌入式系統(tǒng)的基礎(chǔ),實(shí)現(xiàn)邏輯運(yùn)算,算術(shù)運(yùn)算等。中間層: 將系統(tǒng)上層軟件和底層硬件進(jìn)行分離,封裝成標(biāo)準(zhǔn)的接口,在上層軟件開發(fā)人員無需知道底層硬件的具體情況,完成的任務(wù)是底層硬件的初始化、數(shù)據(jù)的輸入/輸出操作、硬件的配置等功能。軟件層:主要由 RTOS、文件

3、系統(tǒng)、圖形用戶接口、網(wǎng)絡(luò)系統(tǒng)和通用的組件模塊組成,是軟件開發(fā)的基礎(chǔ)。功能層:用來完成被控對(duì)象的控制功能。3.嵌入式系統(tǒng)中硬件抽象層有什么特點(diǎn)?答:硬件抽象層是介于硬件層與軟件層之間的中間層,它將系統(tǒng)上層軟件與底層硬件分離開來,具有以下兩個(gè)特點(diǎn): 硬件相關(guān)性:因?yàn)榍度胧綄?shí)時(shí)系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,而作為上層軟件與硬件平臺(tái)之間的接口,硬件抽象層需要為操作系統(tǒng)提供操作和控制具體硬件的方法。 操作系統(tǒng)相關(guān)性:不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),因此,不同的操作系統(tǒng)具有特定的硬件接口形式。4.簡述嵌入式處理器的硬件組成?答:隨著集成電路集成度的不斷提高,嵌入式系統(tǒng)板級(jí)的硬件電路模塊也越來越多的集

4、成到芯片內(nèi)部,目前處理器芯片內(nèi)部的電路模塊組成如下: 處理器內(nèi)核,以 CPU 為核心,有的還包含 MMU (存儲(chǔ)器管理單元)、 Cache(高速緩存)、 ICE (在線仿真)等電路模塊。1 DSP/ 協(xié)處理器,對(duì)于多媒體處理的處理器,內(nèi)部一般有DSP(數(shù)字信號(hào)處理)、浮點(diǎn)運(yùn)算、圖像加速等協(xié)處理器。 RAM/ROM ,在單片機(jī)處理器中,處理器芯片內(nèi)部一般集成了ROM (只讀存儲(chǔ)器)和 RAM (可讀可寫存儲(chǔ)器)。 處理器內(nèi)部控制電路,如 PLL(鎖相環(huán))、復(fù)位、 DMA (直接存儲(chǔ)器存?。?、中斷控制器、低功耗控制、看門狗等電路。 芯片內(nèi)部接口電路,如 GPIO (通用輸入、輸出)接口、 I2C(

5、雙向兩線制的串行總線)接口、 IIS(音頻總線) 接口、 SPI(串行外設(shè)接口) 、 USB(通用串行總線) 接口、 LCD(液晶顯示)接口、ADC/DAC (模數(shù) /數(shù)模轉(zhuǎn)換)、 UART (通用異步收發(fā)器)、IrDA (紅外接口)、 CAN (控制器局域網(wǎng)絡(luò))總線接口、以太網(wǎng)接口、Timer/RTC (定時(shí)器 /計(jì)數(shù)器)接口等電路模塊。5.嵌入式處理器分那幾類?它們有何特點(diǎn)?答:嵌入式微處理器。特點(diǎn):處理能力強(qiáng),具有較高的性能,價(jià)格也相應(yīng)較高。 嵌入式微控制器。特點(diǎn):主要用于嵌入式體統(tǒng)工業(yè)的主流,跟嵌入式微處理器相比,微控制器的最大特點(diǎn)是單片化,體積大大減小,從而使功耗和成本下降,可靠性提

6、高。并且價(jià)格低廉,功能優(yōu)良,擁有的品種和數(shù)量最多。 嵌入式 DSP 處理器。特點(diǎn): DSP 處理器是專門用于信號(hào)處理方面的處理器,在系統(tǒng)結(jié)構(gòu)和指令算法方面進(jìn)行了特殊設(shè)計(jì),具有很高的編譯效率和指令的執(zhí)行速度。 SoC 片上系統(tǒng)。特點(diǎn):實(shí)現(xiàn)了軟硬件無縫結(jié)合,直接在處理器片內(nèi)嵌入操作系統(tǒng)的代碼模塊具有極高的綜合性,在一個(gè)硅片內(nèi)部運(yùn)用VHDL 等硬件描述語言,實(shí)現(xiàn)一個(gè)復(fù)雜的系統(tǒng)絕大部分系統(tǒng)構(gòu)件在系統(tǒng)內(nèi)部,系統(tǒng)簡潔,減少了系統(tǒng)的體積和功耗,提高了系統(tǒng)的可靠性跟設(shè)計(jì)生產(chǎn)效率。6.分析目前市場(chǎng)上常用的幾種嵌入式處理器,說明不同嵌入式處理器的各自特點(diǎn)?答:目前市場(chǎng)上常用的嵌入式處理器有 MCS51 單片機(jī),

7、ARM 處理器, MIPS 處理器, PowerPC 處理器, MC68000 處理器, X86 處理器等。MCS51 的特點(diǎn)是, 8 位 CPU ,片內(nèi)振蕩器,4KB ROM ,128KBRAM,21個(gè)特殊功能寄存器, 32 根 I/O 總線,片外可尋找范圍分別為64KB 的外部程序和數(shù)據(jù),兩個(gè)16 位的定時(shí) /計(jì)數(shù)器,一個(gè)全雙工串口接口,中斷結(jié)構(gòu)分為兩級(jí)優(yōu)先級(jí),5 個(gè)中斷源,適于按位邏輯運(yùn)算的處理器。ARM 處理器的特點(diǎn)是,體積小,功耗低,成本低,高性能,支持16/32 位雙指令集,在全球有眾多合作伙伴。MIPS 處理器的特點(diǎn)是,高性能,高檔次的處理器,有32 位和 64 位的處理器,簡化

8、硬件設(shè)計(jì),強(qiáng)調(diào)軟硬件協(xié)同提高性能。PowerPC 處理器特點(diǎn),具有優(yōu)異的性能,低能量消耗,低散熱量。MC68000 處理器,是一個(gè) 16/32 位的 CISC 處理器,采用 32 位總線和寄存器,這個(gè)結(jié)構(gòu)對(duì)之后的 32 為產(chǎn)品保持兼容。X86 處理器的特點(diǎn),可變指令長度的CISC 處理器,允許不對(duì)齊訪問存儲(chǔ)器。7.舉例說明嵌入式處理器的性能指標(biāo)?并分析對(duì)嵌入式系統(tǒng)的影響?答:性能指標(biāo)主要有主頻,處理器字長,數(shù)據(jù)通路速度,運(yùn)算速度,高速緩存和處理器的系統(tǒng)架構(gòu)。 主頻,執(zhí)行每條指令的時(shí)鐘周期數(shù)一定, 主頻越高單位時(shí)間內(nèi)執(zhí)行的指令越多。處理器字長,處理器內(nèi)部數(shù)據(jù)運(yùn)算的基本位數(shù),反映的是計(jì)算精度,以及

9、單次處理數(shù)據(jù)的總長度; 數(shù)據(jù)通路速度,讀取指令數(shù)據(jù)傳輸計(jì)算數(shù)據(jù)的速度越高,處理器性能越好。運(yùn)算2速度,用MIPS (每秒執(zhí)行多少百萬條指令)表示,MIPS 越大,說明運(yùn)算速度越快;高速緩存,突破主存訪問速度的瓶頸,提高處理器的綜合性能。8.簡述你對(duì)嵌入式操作系統(tǒng)的認(rèn)識(shí),分析嵌入式操作系統(tǒng)有哪些特點(diǎn)?答:嵌入式操作系統(tǒng) EOS 是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)(包括軟硬件系統(tǒng)) 極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動(dòng)軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等。EOS 是相對(duì)于一般操作系統(tǒng)而言的,它除具備了一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、

10、同步機(jī)制、中斷處理、文件功能等之外,還有以下特點(diǎn): 可裝卸性,開放性、可伸縮性的體系結(jié)構(gòu)。 強(qiáng)實(shí)時(shí)性, EOS 實(shí)時(shí)性一般較強(qiáng),可用于各種控制系統(tǒng)中。 統(tǒng)一的接口,提供各種設(shè)備驅(qū)動(dòng)接口。 操作方便、簡單,提供友好的圖形GUI ,追求易學(xué)易用。 提供強(qiáng)大的網(wǎng)絡(luò)功能,支持TCP/IP 協(xié)議及其他協(xié)議,提供TCP/UDP/IP/PPP 協(xié)議支持及統(tǒng)一的MAC 訪問層接口,為各種移動(dòng)計(jì)算設(shè)備預(yù)留接口。 強(qiáng)穩(wěn)定性,弱交互性。 固化代碼。 更好地硬件適應(yīng)性,也就是良好的移植性。9.試分析實(shí)時(shí)操作系統(tǒng)中可搶占型和不可搶占型有何區(qū)別?并舉例說明。答:實(shí)時(shí)操作系統(tǒng)可分為可搶占型和不可搶占型兩類。對(duì)于基于優(yōu)先級(jí)的

11、系統(tǒng)而言,可搶占型的實(shí)時(shí)操作系統(tǒng)是指內(nèi)核可以搶占正在運(yùn)行任務(wù)的CPU 使用權(quán)并將使用權(quán)交給進(jìn)入就緒態(tài)的優(yōu)先級(jí)更高的任務(wù),是內(nèi)核搶了CPU 讓別的任務(wù)運(yùn)行。不可搶占型實(shí)時(shí)操作系統(tǒng)使用某種算法以決定讓某個(gè)任務(wù)運(yùn)行后,就把CPU 的控制權(quán)完全交給該任務(wù),直到它主動(dòng)將 CPU 控制權(quán)還回來。比如嵌入式操作系統(tǒng)uC/OS ,可以根據(jù)優(yōu)先級(jí)進(jìn)行搶占使用CPU,優(yōu)先級(jí)高的任務(wù)可以比優(yōu)先級(jí)低的任務(wù)優(yōu)先使用CPU 。10.簡述嵌入式系統(tǒng)的開發(fā)過程?答:嵌入式系統(tǒng)的開發(fā)過程可以分為需求分析、建立開發(fā)環(huán)境、體系結(jié)構(gòu)設(shè)計(jì)、軟件 / 硬件設(shè)計(jì)、系統(tǒng)集成和系統(tǒng)優(yōu)化與測(cè)試 6 個(gè)階段。如果設(shè)計(jì)的流程是從需求分析開始,然后是

12、建立開發(fā)環(huán)境,依次進(jìn)行,最后是系統(tǒng)優(yōu)化與測(cè)試,那么就叫做自上而下的設(shè)計(jì)流程;反之就叫做自下而上的設(shè)計(jì)流程。所有的嵌入式系統(tǒng)設(shè)計(jì)不可避免的設(shè)計(jì)這六個(gè)階段,更重要的是找到一個(gè)好的設(shè)計(jì)方法,目前一種比較好的設(shè)計(jì)方法是采用計(jì)算機(jī)輔助設(shè)計(jì)工具。11. 簡述在線仿真器 ICE 和在線調(diào)試器 ICD 有何區(qū)別?答:在線仿真器ICE 是一種模擬CPU 的設(shè)備,能執(zhí)行CPU 的全部動(dòng)作。采用該方式調(diào)試時(shí),利用仿真頭代替目標(biāo)板上的CPU,可以完全仿真CPU 的行為。在線調(diào)試器 ICD 是將 CPU 的調(diào)試功能的引腳引出來,讓外部的硬件直接連接到這些引腳上去監(jiān)控整個(gè) CPU 的動(dòng)作。12. 試分析嵌入式系統(tǒng)測(cè)試中的

13、純軟件測(cè)試過程,舉例說明實(shí)現(xiàn)方法。答:純軟件測(cè)試過程是指用工具采用軟件打點(diǎn)技術(shù),在被測(cè)試代碼中加入一些函數(shù),這些函數(shù)用來完成數(shù)據(jù)的生成, 并將數(shù)據(jù)送往目標(biāo)機(jī)系統(tǒng)的共享內(nèi)存中, 同時(shí),在目標(biāo)機(jī)系統(tǒng)中運(yùn)行一個(gè)與處理任務(wù), 用于完成這些數(shù)據(jù)的預(yù)處理, 然后將處理過的數(shù)據(jù)通過目標(biāo)機(jī)的串口,網(wǎng)口或者 USB 口送往宿主機(jī)測(cè)試平臺(tái)。舉例,可以在程序中間插入函數(shù),讀出當(dāng)前所有寄存器內(nèi)容,發(fā)送至目標(biāo)機(jī)系統(tǒng),測(cè)試者可以根據(jù)這些數(shù)據(jù)了解系統(tǒng)執(zhí)行情況。3習(xí)題 21.按照 ARM 處理器的命名規(guī)則,說明ARM7TDMI中 T 、 D、 M 、 I 的含義。答: T:支持 16 位的 Thumb 指令集; D :支持

14、JTAG 片上調(diào)試; M :支持長乘法操作 ( 64位結(jié)果)的 ARM 指令,包含快速乘法器;I :帶有嵌入式追蹤宏單元ETM(Embedded TraceMacro ),用來設(shè)置斷點(diǎn)和觀察點(diǎn)。2. 什么是哈佛結(jié)構(gòu)?與普林斯頓結(jié)構(gòu)有何區(qū)別?答:哈佛結(jié)構(gòu)是一種將程序中指令和數(shù)據(jù)分開存儲(chǔ)的存儲(chǔ)器結(jié)構(gòu)。即哈佛結(jié)構(gòu)中程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是兩個(gè)獨(dú)立的存儲(chǔ)器,每個(gè)存儲(chǔ)器獨(dú)立編址、獨(dú)立訪問。普林斯頓結(jié)構(gòu) (馮 諾伊曼結(jié)構(gòu)) 是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置。這便是。這便是兩種結(jié)構(gòu)的區(qū)別。3. 什么是 RSIC ?什么是

15、CSIC ?簡述他們的特點(diǎn)與差別。答: RSIC 是精簡指令集計(jì)算機(jī), CISC 是復(fù)雜指令集計(jì)算機(jī)。兩者的區(qū)別在于不同的 CPU 設(shè)計(jì)理念和方法。對(duì)于 CISC : 在 CSIC 結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻率相差懸殊。有 80% 的指令只在 20%的運(yùn)行時(shí)間內(nèi)才會(huì)用到。 CISC 結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來了計(jì)算機(jī)體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時(shí)間和成本,而且還容易造成設(shè)計(jì)錯(cuò)誤。 在 CISC 結(jié)構(gòu)指令系統(tǒng)中,由于各條指令的功能不均衡性,不利于采用先進(jìn)的計(jì)算機(jī)體系結(jié)構(gòu)技術(shù)來提高系統(tǒng)的性能。對(duì)于 RISC :簡化指令集,只保留常用的基本指令; 設(shè)計(jì)大量的通用存儲(chǔ)器,減少訪存的次數(shù);

16、采用裝載 /保存結(jié)構(gòu),支持流水線技術(shù),使每個(gè)周期時(shí)間相等; 采用簡單的指令格式、規(guī)整的指令字長和簡單的尋址方式; 單機(jī)器周期指令,即大多數(shù)的指令都可以在一個(gè)機(jī)器周期內(nèi)完成,并且允許處理器在同一時(shí)間內(nèi)執(zhí)行一系列的指令。4. ARM7 處理器是幾級(jí)流水線?在 ARM7 處理器中, “ PC指向的是下一條要執(zhí)行的指令 ”,這句話對(duì)嗎?為什么?答: ARM7 處理器采用三級(jí)流水線。“ PC指向的是下一條要執(zhí)行的指令”,這句話不對(duì)。在ARM 處理器中將PC 程序計(jì)數(shù)器定義到 R15 寄存器,無論處理器處于何種狀態(tài),PC 總是指向 “正在取值 ”指令的地址,一般來說,人們習(xí)慣性的約定將“正在執(zhí)行的指令作為

17、參考點(diǎn)”,成為當(dāng)前第一條指令,那么PC總是指向隨后的第三條指令,或者說PC 總是指向當(dāng)前正在執(zhí)行的指令地址再加上2 條指令的地址,即指向正在執(zhí)行指令的下下一條指令,而不是指向下一條要執(zhí)行的指令。5. 簡述 ARM 處理器中在線仿真器模塊 EmbeddedICE-RT 的作用。答: ARM處理器中的在線仿真器模塊EmbeddedICE-RT ,一般還帶有嵌入式宏跟蹤單元模塊ETM ,實(shí)現(xiàn)ARM處理器的在線調(diào)試和運(yùn)行過程的跟蹤功能;并且具有諸多ICE 功能,例如實(shí)時(shí)尋址、斷點(diǎn)、單步、對(duì)ARMCPU 的完全控制、對(duì)ASIC 系統(tǒng)其余部分的訪問,以及對(duì)主機(jī)顯示器外設(shè)訪問、鍵盤輸入和磁盤存儲(chǔ)。6. AR

18、M 處理器的工作狀態(tài)分為哪二種? ARM 處理器又是怎么定義和標(biāo)志的?答: ARM 處理器的工作狀態(tài)分為 ARM 狀態(tài)和 Thumb 狀態(tài),這兩種狀態(tài)有程序狀態(tài)字 CPSR 中 T 標(biāo)志位確定,為 0 時(shí)處理器工作在 ARM 狀態(tài),為 1 時(shí)處理器工作在 Thumb 狀4態(tài)。7. ARM7TDMI 支持哪幾種指令集,各有什么特點(diǎn)?答: ARM7TDMI 處理器內(nèi)核包含 2 套指令系統(tǒng),分別為 ARM 指令集和 Thumb 指令集,兩種指令集的特點(diǎn)是:ARM 指令集:處理器執(zhí)行 32 位字對(duì)齊方式的 ARM 指令,每條 ARM 指令長度為 32 位,指令的功能強(qiáng)大。Thumb 指令集:處理器執(zhí)行

19、 16 位字對(duì)齊方式的 Thumb 指令,每條 Thumb 指令長度為 16 位,是 ARM 指令功能的子集。8. ARM7 處理器有哪些工作模式?如何實(shí)現(xiàn)不同模式之間的切換?舉例說明。答: ARM 處理器供支持7 種工作模式,分別為:用戶模式( usr);快速中斷模式 ( fiq );外部中斷模式(irq );管理模式(svc);數(shù)據(jù)訪問終止模式(abt);系統(tǒng)模式(sys);未定義指令中止模式 ( und)。在 7 中模式中,除用戶模式外,其他的6 種模式稱為特權(quán)模式,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。特權(quán)模式下通過修改當(dāng)前程序狀態(tài)寄存器CPSR 中控制位

20、 M4:0 的值,來改變處理器的運(yùn)行模式。例如MSRCPSR_c, #( NoInt |SVC32Mode ) /從系統(tǒng)模式切換到管理模式MSRCPSR_c, #( NoInt |SYS32Mode ) / 從管理模式切換到系統(tǒng)模式9.描述 ARM7 處理器的內(nèi)部寄存器結(jié)構(gòu),并分別說明快速中斷FIQ 有何特點(diǎn)?答: ARM7 微處理器共有 37 個(gè) 32 位寄存器,其中 31 個(gè)為通用寄存器, 6 個(gè)為狀態(tài)寄存器。 37 個(gè)寄存器定義如下: 31 個(gè)通用寄存器: R0R15 、 R8_fiq 、 R9_fiq 、 R10_fiq 、 R11_fiq 、 R12_fiq 、R13_fiq 、R1

21、4_fiq 、 R13_svc 、 R14_svc 、 R13_abt 、 R14_abt 、 R13_und 、 R14_und 、R13_irq 、 R14_irq 。 6 個(gè) 狀 態(tài) 寄 存 器 : CPSR 、 SPSR_abt 、 SPSR_svc 、 SPSR_irq 、 SPSR_fiq 、SPSR_und。快速中斷 FIQ ,適用于對(duì)一個(gè)突發(fā)事件的快速響應(yīng),在ARM 狀態(tài)中,快中斷有8 個(gè)專用的寄存器, 可以縮短狀態(tài)切換時(shí)需要的時(shí)間。 當(dāng) CPSR 中相應(yīng)的 F 位清零, 快速中斷被使能。10. 什么是中斷延時(shí)?在實(shí)時(shí)系統(tǒng)中如何計(jì)算中斷延時(shí)時(shí)間?答:中斷延時(shí)是系統(tǒng)響應(yīng)一個(gè)中斷所

22、需要的時(shí)間,即從外部中斷請(qǐng)求信號(hào)發(fā)出到執(zhí)行對(duì)應(yīng)的中斷服務(wù)程序 ISR 的第 1 條指令所需要的時(shí)間。FIQ 的中斷延時(shí)計(jì)算,當(dāng)FIQ 使能時(shí),最壞的延時(shí)包括:a) Tsyncmax:請(qǐng)求通過同步器的最長時(shí)間,為兩個(gè)處理器周期。b)Tldm :最長執(zhí)行時(shí)間,最長為20 個(gè)周期。c) Texc:數(shù)據(jù)中止異常進(jìn)入時(shí)間,為三個(gè)周期。d) Tfiq : FIQ 進(jìn)入時(shí)間,為兩個(gè)周期總的延時(shí)可為 27 個(gè)周期。11.在內(nèi)存的數(shù)據(jù)存儲(chǔ)過程中,什么是“字對(duì)齊 ”和 “半字對(duì)齊 ”?答:在內(nèi)存數(shù)據(jù)存儲(chǔ)過程中,一般分為小端存儲(chǔ)格式和大端存儲(chǔ)格式。下面以小端存儲(chǔ)格式為例來說明字對(duì)齊和半字對(duì)齊:在小端存儲(chǔ)格式中,對(duì)于

23、地址為 A 的字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序?yàn)?A ,A+1 ,A+2 , A+3 ;對(duì)于地址為 A 的半字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序?yàn)?A ,A+1 。12.簡述程序計(jì)數(shù)器(PC)在處理器工作中的作用。5答:在 ARM 處理器中將PC 程序計(jì)數(shù)器定義到R15 寄存器,無論處理器處于何種狀態(tài),PC 總是指向 “正在取值 ”指令的地址。13.簡述 ARM 處理器中的返回鏈接寄存器(LR )在處理器工作中的作用。答:鏈接寄存器LR 用于保存子程序返回地址或者異常處理程序的返回地址,LR 寄存器一共有 6 個(gè),其中子程序的返回地址使用一個(gè)R14,每種異常模式各自有一個(gè)專

24、用的LR 寄存器用于保存異常處理程序的返回地址,它們分別為R14_fiq 、 R14_svc 、 R14_abt 、R14_und、 R14_irq 。14. 分別簡述 ARM 處理器中的 CPSR 、 SPSR 在處理器工作中的作用。答: ARM 內(nèi)核包含1 個(gè) CPSR 和 5 個(gè)僅供異常處理模式使用的SPSR。由于所有模式全部共享一個(gè)程序狀態(tài)寄存器CPSR,因此處理器所有的狀態(tài)全部都保存在 CPSR 中,也就是 ARM 內(nèi)核是通過 CPSR 來監(jiān)視和控制內(nèi)部操作的。每種異常模式都有一個(gè)對(duì)應(yīng)的程序狀態(tài)保存寄存器SPSR,用于保存任務(wù)在異常發(fā)生之前的 CPSR 狀態(tài)的當(dāng)前值。15. 結(jié)合 C

25、PSR 的結(jié)構(gòu),說明程序狀態(tài)字中各個(gè)bit 位的作用。3130292827876543210NZCV-IFTM4M3M2M1M0答:條件代碼標(biāo)志(共計(jì)4bit )含義如下:N :運(yùn)算結(jié)果的最高位反映在該標(biāo)志位。對(duì)于有符號(hào)二進(jìn)制補(bǔ)碼,結(jié)果為負(fù)數(shù)時(shí)N=1 ,結(jié)果為正數(shù)或零時(shí)N=0 ;Z :指令結(jié)果為0 時(shí) Z=1 (通常表示比較結(jié)果“相等 ”),否則 Z=0 ;C:當(dāng)進(jìn)行加法運(yùn)算,最高位產(chǎn)生進(jìn)位時(shí)C=1,否則C=0。當(dāng)進(jìn)行減法運(yùn)算(包括 CMP指令 ),最高位產(chǎn)生借位時(shí)C=0,否則 C=1。V :當(dāng)進(jìn)行加法/減法運(yùn)算,并且發(fā)生有符號(hào)溢出時(shí)V=1 ,否則V=0 ,其它指令V 不變。 CPSR 的最低

26、 8 位為控制位,控制了處理器的工作方式。當(dāng)發(fā)生異常時(shí),這些位被硬件改變。當(dāng)處理器處于一個(gè)特權(quán)模式時(shí),可用軟件操作這些位。它們分別是:中斷禁止位包括I 和 F 位:當(dāng) I 位置位時(shí), IRQ 中斷被禁止;當(dāng) F 位置位時(shí), FIQ 中斷被禁止。T 位反映了處理器的當(dāng)前狀態(tài):當(dāng)位 T=1 時(shí),處理器正在Thumb 狀態(tài)下運(yùn)行;當(dāng)位 T=0 時(shí),處理器正在ARM 狀態(tài)下運(yùn)行。模式位包括M4:0 共計(jì) 5bit ,這些位決定處理器的操作模式16. 簡述 ARM7TDMI 內(nèi)部有哪些寄存器及特點(diǎn)。答: ARM7 微處理器共有 37 個(gè) 32 位寄存器,其中 31 個(gè)為通用寄存器, 6 個(gè)為狀態(tài)寄存器。

27、 37 個(gè)寄存器定義如下: 31 個(gè)通用寄存器: R0R15 、 R8_fiq 、 R9_fiq 、 R10_fiq 、 R11_fiq 、 R12_fiq 、R13_fiq 、 R14_fiq 、 R13_svc 、 R14_svc 、 R13_abt 、 R14_abt 、 R13_und 、 R14_und 、R13_irq 、 R14_irq 。 6 個(gè) 狀 態(tài) 寄 存 器 : CPSR 、 SPSR_abt 、 SPSR_svc 、 SPSR_irq 、 SPSR_fiq 、SPSR_und。特點(diǎn):在 ARM 狀態(tài)中, R0R7 是通用寄存器,是不分組寄存器;R8R14 ,SPSR

28、根據(jù)6模式進(jìn)行分組的寄存器; R15 是程序計(jì)數(shù)器,不進(jìn)行分組; CPSR 是狀態(tài)寄存器,不進(jìn)行分組。17. 什么是 ARM 處理器的異常? ARM 處理器中有哪幾種異常?答:在 ARM 中,異常是一些事件,這些事件能導(dǎo)致正常的程序執(zhí)行流程被暫時(shí)地停止,而進(jìn)入到該事件對(duì)應(yīng)的處理器異常模式并對(duì)該事件進(jìn)行處理。ARM 中定義了復(fù)位、未定義指令、SWI(軟中斷)、預(yù)取指終止、預(yù)取數(shù)終止、irq 以及 fiq 等種異常,與之對(duì)應(yīng)地ARM7 處理器有5 種異常模式。18. 分別簡述 ARM7 的 IRQ 、 FIQ 異常處理過程,說明其異常向量地址。答: IRQ 異常的處理流程如下: 進(jìn)入 IRQ 異常

29、模式。程序運(yùn)行在用戶模式下,當(dāng)一個(gè)IRQ 異常中斷發(fā)生時(shí),內(nèi)核切換到 “中斷模式 ”,并自動(dòng)的做如下處理。將異常處理程序的返回地址保存到異常模式下的R14(R14_irq) 中。用戶模式的CPSR 將被保存到中斷異常模式SPSR_irq 中。修改 CPSR,將 I 置 1,禁止新的IRQ 中斷產(chǎn)生,但不改變F 值,不限制FIQ 中斷發(fā)生,清零 T 標(biāo)志位,進(jìn)入ARM 狀態(tài),修改模式位,設(shè)置為IRQ 模式。將 IRQ 異常中斷入口向量地址0x00000018 送入 PC。在 IRQ 模式下,用戶模式的R13 和 R14 將不能操作,而R13_irq 和 R14_irq 可以操作,即 R13_ir

30、q 保存 IRQ 模式下的地址指針, R14_irq 保存了 “IRQ中斷返回地址 +4”。 退出 IRQ 異常模式。中斷服務(wù)程序執(zhí)行完畢后,使用一條指令將返回地址送入PC,即可實(shí)現(xiàn)IRQ 中斷返回,在返回過程中處理器會(huì)自動(dòng)將SPSR_irq 中的內(nèi)容復(fù)制到CPSR,恢復(fù)中斷前的處理器狀態(tài)。FIQ 異常進(jìn)入與退出的流程與IRQ 類似,其異常入口地址是0x0000001C 。19. ARM7 處理器對(duì)哪些異??梢赃M(jìn)行屏蔽?如何屏蔽或允許?答: FIQ 和 IRQ 可以被屏蔽。 將 CPSR 的標(biāo)志位 I 和 F 分別置位對(duì)應(yīng)著IRQ 和 FIQ 中斷被禁止,清零這些位又可以將其使能。20. 說明

31、 CPSR 中 T 位的作用, ARM7 處理器如何切換狀態(tài)?答: CPSR 中 T 標(biāo)志位為0 時(shí)處理器工作在 ARM 狀態(tài),為 1 時(shí)處理器工作在 Thumb 狀態(tài)。由于 ARM 采用字對(duì)齊或者半字對(duì)齊的存儲(chǔ)模式,這意味著地址的最低一個(gè)比特位就不會(huì)在尋址過程中使用到。 故,使用地址的最低位進(jìn)行區(qū)分,以何種模式取值和執(zhí)行指令,當(dāng)?shù)刂返匚粸?1 時(shí),置 CPSR 的 T 位為 1,反之,置位為0。21. 大端存儲(chǔ)模式和小端存儲(chǔ)模式的含義是什么?畫出在0x2000 單元中存儲(chǔ) 0x87654321數(shù)據(jù)的大端存儲(chǔ)模式和小端存儲(chǔ)模式。答:大端存儲(chǔ)模式:在大端存儲(chǔ)格式中,對(duì)于地址為A 的字單元,其中字

32、節(jié)的低位字節(jié)到高位字節(jié)地址順序?yàn)锳+3 , A+2 , A+1 , A;對(duì)于地址為 A 的半字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序?yàn)锳+1 , A 。即數(shù)據(jù)的低字節(jié)存放在高地址中的順序進(jìn)行存儲(chǔ)。小端存儲(chǔ)模式:在小端存儲(chǔ)格式中,對(duì)于地址為A 的字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序?yàn)锳 , A+1 , A+2 , A+3 ;對(duì)于地址為 A 的半字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序?yàn)锳 , A+1 。即數(shù)據(jù)的高字節(jié)存放在高地址中的順序進(jìn)行存儲(chǔ)。0x20030x210x20000x210x430x430x650x650x20000x870x20030x877上圖中,左側(cè)為大端存儲(chǔ)

33、模式,右側(cè)為小端存儲(chǔ)模式。習(xí)題 31、 ARM7TDMI支持哪幾種指令集,各有什么特點(diǎn)?答:支持 ARM 指令集和 Thumb 指令集,各自特點(diǎn)是 ARM 指令集的指令是32 位,執(zhí)行效率高、功能全,每條指令可以根據(jù)條件執(zhí)行,但是代碼密度低。Thumb 指令集指令是 16 位,在功能上是ARM 指令集的子集,功能并沒有降低。2、 ARM 指令的尋址方式有幾種?并指出下列指令中的尋址方式。答: ARM 指令的尋址方式有 8 種,分別為立即尋址、寄存器尋址、寄存器移位尋址、寄存器間接尋址、基址變址尋址、相對(duì)尋址、多寄存器尋址、堆棧尋址。 SUBR0, R1, R2寄存器尋址 LDRR0, R2寄存

34、器間接尋址 MVNR0, #0x0F2立即尋址 LDMIAR0, R1-R5多寄存器尋址 STRR2, R4, #0x02 ! 基址變址尋址 LDRR1, R2, R3基址變址尋址 MOVR1, R1, ROR #2寄存器移位尋址 LDRR1, R3, #0x04基址變址尋址3、 簡述 ARM 指令集中第2 個(gè)操作數(shù)( operand2)的三種形式。答: 常數(shù)表達(dá)方式。該常數(shù)必須對(duì)應(yīng)8 位位圖,即常數(shù)是由一個(gè)8 位的常數(shù)循環(huán)右移偶數(shù)位得到。例如:MOVR2, #100; 寄存器方式。 Operand2 是 Rm 寄存器方式,在寄存器方式下操作數(shù)即位寄存器中的數(shù)值。例如: SUB R0 , R1

35、, R2; 寄存器移位方式。Rm ,shift表示將寄存器的移位結(jié)果作為操作數(shù),但Rm 值保持不變。例如: MOV R0 ,R1, RRX ;將 R1 帶擴(kuò)展的循環(huán)右移 1 位,存入 R0 中。4、 指出下列指令是否正確,若不正確請(qǐng)說明原因。 MOVSR1, 101不正確,立即尋址方式應(yīng)該是#101 MVNR1, #0x10F正確 STMDAR11, R2-R8!不正確,不能同時(shí)存儲(chǔ)在R2 和 R8 中 ADDR0!, R2, #4正確 LDRR4, R5!不正確, LDR 是存儲(chǔ)到單個(gè)寄存器的加載指令,而這個(gè)是兩個(gè)存儲(chǔ)器都進(jìn)行存儲(chǔ),應(yīng)該為LDRR4, R5 MRSPC, CPSR不正確 MR

36、S 是將 CPSR 傳送到通用寄存器中,但這里的通用寄存器不包括R15,即 PC LDMFDSR0!, R5-R8, R2正確 ADDR3, R3, R7不正確, ADD 指令不能訪問存儲(chǔ)器(9)LDRR11, R15, R8 !正確(10) BXS R0 正確5、 何謂 ARM 指令的條件碼?默認(rèn)的條件碼是什么?舉例說明ARM 指令的條件碼對(duì)指令執(zhí)行的影響。答:所謂的ARM指令的 “條件執(zhí)行 ”是指在指令碼中含有本條指令的執(zhí)行條件,當(dāng) CPSR 中的條件碼標(biāo)志滿足時(shí),處理器執(zhí)行本條指令,否則本條指令不執(zhí)行。默認(rèn)是無條件執(zhí)行。比如執(zhí)行指令 “ ANDEQ R2 ,R1,R3”時(shí),如果 CPSR

37、 中的 Z=1 時(shí),執(zhí)行 R2=R1&R3 ,8否則不執(zhí)行該指令。6、 解釋 “滿堆棧 ”、 “空堆棧 ”、 “遞增堆棧 ”和 “遞減堆棧 ” ?ARM指令系統(tǒng)中是如何支持的?答:滿堆棧:堆棧指針SP 指向最后壓入的堆棧有效數(shù)據(jù)項(xiàng)??斩褩#憾褩V羔楽P 指向下一個(gè)待壓入數(shù)據(jù)的空位置。遞增堆棧:向高地址方向生長。遞減堆棧:向低地址方向生長。滿遞增:堆棧向上增長,SP 指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最高棧單元。指令如LDMFA 、STMFA 等;空遞增:堆棧向上增長,SP 指向堆棧上的第一個(gè)空位置。指令如LDMEA 、 STMEA等;滿遞減:堆棧向下增長,SP 指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最低棧單元。指令如LDMF

38、D 、STMFD等;空遞減:堆棧向下增長,SP 指向堆棧下的第一個(gè)空位置。指令如LDMED 、 STMED等。7、 試說明 MOV指令、 LDR 加載指令和LDR 偽指令三者的區(qū)別。答: MOV 指令是在寄存器間進(jìn)行數(shù)據(jù)傳送,影響標(biāo)志位。LDR 指令是將存儲(chǔ)器中的數(shù)據(jù)按給定地址加載到寄存器中,不影響標(biāo)志位。LDR 偽指令是可以在一個(gè)立即數(shù)前面加等號(hào),把一個(gè)地址寫入某寄存器。8、 解釋 B 指令、 BL 指令與 BX 指令的功能差別,并舉例說明其使用方法。答: B 指令是分支指令, BL 指令是帶鏈接的分支指令,BX 是帶狀態(tài)切換的分支指令。對(duì)于 B 指令“ B WAITA ”指跳轉(zhuǎn)至標(biāo)號(hào)WAI

39、TA 處開始執(zhí)行, B 指令的跳轉(zhuǎn)范圍為32M ,對(duì)于 BL 指令,實(shí)現(xiàn)程序跳轉(zhuǎn), 并保持 PC 到鏈寄存器 LR 中,跳轉(zhuǎn)范圍32M ,舉例“ BL DELAY ”完成的跳轉(zhuǎn)至標(biāo)號(hào)DELAY處執(zhí)行, 并把 PC-4 存入 LR 。BX 指令,帶狀態(tài)切換的跳轉(zhuǎn),比如“BX R0 ”表示跳轉(zhuǎn) R0 指定的地址開始執(zhí)行,并查看R00位的值,如果是1,對(duì) CPSR 的 T 位置位,解釋目標(biāo)程序?yàn)門humb 指令,如果是0,對(duì) CPSR 的 T 位清零,解釋目標(biāo)程序?yàn)锳RM 指令。9、 分析下列兩段程序片斷的功能,試用類C 語言寫出其等價(jià)功能。程序片斷 1:程序片斷 2:CMPR0 , #10CMP

40、R0, R1ADDHIR0 , R0 , #1CMPNER1 , #20ADDLS R1 , R1 , #1ADDNER0 , R0 , R1答:( 1) if(R0 R1)( 2) if(R0 != 10)&(R1 != 20)R0+;RO = R0+R1;elseR1+;10、 使用 ARM 匯編指令的條件執(zhí)行功能,試用匯編語言實(shí)現(xiàn)下列兩條C 代碼語句。 if(x = = y) if(x = = y) & ( a = = b)a = b + c;c = c * 2+b;elsea = b c;答:( 1) LDR R0,xLDRR1,yLDRR2,bLDRR3,cCMPR0,R1ADDEQ

41、R4,R2,R3SUBNER4,R2,R3( 2) LDR R0,x LDR R1,yLDRR2, aLDRR3, bLDRR4, cCMPR0 , R19 CMPEQ R2,R3, MULEQ R4, R4, #2 ADD R4 , R4, R311、 下列代碼段是實(shí)現(xiàn)開IRQ 中斷和關(guān)IRQ 中斷功能,試補(bǔ)齊空白處內(nèi)容。 MRSR0, CPSR MRSR1 ,CPSRBICR1,R0 , 0x80ORRR1, R1,#0x80MSRCPSR_c, R1MSRCPSR_c, R112、 如果 ARM 處理器中各寄存器及存儲(chǔ)單元參數(shù)如下圖所示,試寫出執(zhí)行下列指令后,各寄存器及存儲(chǔ)單元中內(nèi)容變化

42、情況。 STMIAR13!,R0-R3 LDMDBR13, R0-R3答:R13 R0(2), R0 R13,R1 R1+4;(1),R13+4 R1R1 R13,R1 R1+4;R13+8 R2R2 R13,R1 R1+4;R13+12 R3R3 R13,R1 R1+4;習(xí)題 41. 什么是計(jì)算機(jī)語言?一般可以分為哪幾種?各自的優(yōu)缺點(diǎn)?答:計(jì)算機(jī)語言是計(jì)算機(jī)可以識(shí)別、理解的語言。計(jì)算機(jī)語言分為三類:機(jī)器語言,匯編語言和高級(jí)語言。機(jī)器語言( Machine Language)是由 0 和 1 二進(jìn)制代碼表示和存儲(chǔ)的指令與數(shù)據(jù)。它的特點(diǎn)是能被機(jī)器直接識(shí)別與執(zhí)行;程序所占內(nèi)存空間較少。其缺點(diǎn)是難認(rèn)

43、、難記、難編、易錯(cuò)。匯編語言是一種面向物理層操作的計(jì)算機(jī)語言。不同的處理器類型,具有不同的匯編語言。使用匯編語言編寫程序能夠直接利用硬件系統(tǒng)的特性(如寄存器、標(biāo)志、中斷系統(tǒng)等),可直接對(duì)位、字節(jié)、字寄存器或存儲(chǔ)單元、I/O 端口進(jìn)行處理,同時(shí)也能直接使用 CPU 指令系統(tǒng)提供的各種尋址方式,編制出高質(zhì)量的程序,這樣的程序不但占用內(nèi)存空間少,而且執(zhí)行速度快。缺點(diǎn):由于匯編語言不直接支持復(fù)雜的抽象數(shù)據(jù)類型,在描述目標(biāo)系統(tǒng)模型時(shí),需要程序員自己組織各種抽象數(shù)據(jù)類型的存儲(chǔ)方式,使得匯編語言程序設(shè)計(jì)較高級(jí)語言困難的多,需要較多的軟件開發(fā)時(shí)間,也增加了程序設(shè)計(jì)過程中出錯(cuò)的可能性,程序維護(hù)也麻煩。高級(jí)語言(

44、 High Level Language )是脫離具體機(jī)器(即獨(dú)立于機(jī)器)的通用語言,不依賴于特定計(jì)算機(jī)的結(jié)構(gòu)與指令系統(tǒng)。與目標(biāo)系統(tǒng)的數(shù)學(xué)模型之間有著良好的對(duì)應(yīng)關(guān)系,可在各種機(jī)器上通用,具有很好的通用性和可移植性。缺點(diǎn):處理器是不能直接執(zhí)行這種用高級(jí)語言編寫的源程序,需要先將它翻譯成對(duì)應(yīng)的目標(biāo)程序(即機(jī)器語言程序),才能運(yùn)行。2.簡述 ARM 匯編語言上機(jī)操作過程。答:設(shè)計(jì)、編輯匯編語言源程序;匯編、連接、下載到目標(biāo)系統(tǒng);調(diào)試運(yùn)行;3.簡述編寫一個(gè)匯編語言源程序的基本步驟。答: 分析目標(biāo)系統(tǒng),建立數(shù)學(xué)模型,確定算法10 根據(jù)算法設(shè)計(jì)流程圖 合理分配寄存器,存儲(chǔ)空間和外設(shè)資源 根據(jù)流程圖編寫源程

45、序 上機(jī)調(diào)試程序 形成文檔4. 循環(huán)程序設(shè)計(jì)中,循環(huán)的基本結(jié)構(gòu)有幾種?其循環(huán)控制方法有幾種?各自的應(yīng)用特點(diǎn)?答:循環(huán)程序的基本結(jié)構(gòu): 初始化部分:建立循環(huán)初始值。 循環(huán)體:是循環(huán)程序的主體部分。 修改部分:為執(zhí)行下一次循環(huán)而修改某些參數(shù)。 控制部分:通過判斷循環(huán)結(jié)束條件是否成立,決定是否繼續(xù)執(zhí)行循環(huán)。 結(jié)束處理部分:對(duì)循環(huán)結(jié)束進(jìn)行適當(dāng)處理,如存儲(chǔ)結(jié)果和打印輸出等。循環(huán)程序設(shè)計(jì)中一個(gè)重要環(huán)節(jié)就是如何控制循環(huán)次數(shù)。循環(huán)控制方法: 用計(jì)數(shù)控制循環(huán)。特點(diǎn):循環(huán)比較次數(shù)是已知的,因此可以用計(jì)數(shù)器控制循環(huán)。 用條件控制循環(huán)。有些情況無法確定循環(huán)次數(shù),但循環(huán)結(jié)束的條件是已知的,這時(shí)可通過循環(huán)測(cè)試結(jié)束條件是否

46、滿足的方法,條件滿足結(jié)束循環(huán),否則繼續(xù)循環(huán)。5. 匯編子程序傳遞參數(shù)有哪幾種方式?答: 寄存器傳遞參數(shù)方式 存儲(chǔ)區(qū)域傳遞參數(shù)方式 堆棧傳遞參數(shù)方式6. C 語言和 ARM 匯編語言進(jìn)行程序編制時(shí)常用的開發(fā)方法有哪些?答:使用 C 語言和 ARM7 匯編語言進(jìn)行程序編制時(shí)常用的開發(fā)方法:混合編程和交叉編程。7. 簡述 APCS 規(guī)則。答: 寄存器使用規(guī)則。 ARM 處理器寄存器組中的 R0-R11 用來保存局部變量;R12-R15 用于系統(tǒng)專用:R12 用于子程序內(nèi)部調(diào)用的片段寄存器;R13 當(dāng)前模式的堆棧指針; R14 鏈接寄存器,保存子程序的返回地址;R15 用作程序計(jì)數(shù)器。其中,由于R4-

47、R11用來保存局部變量,對(duì)于遵守APCS 規(guī)則的函數(shù),在進(jìn)入該函數(shù)的時(shí)候,程序員必須注意保存 R4-R11 中會(huì)被函數(shù)使用的寄存器,當(dāng)返回時(shí),再返回它們的值。 堆棧使用規(guī)則。APCS規(guī)則中的堆棧為FD 類型,也就是滿遞減堆棧,并且堆棧的操作是 8 字節(jié)對(duì)齊的,所以需要在匯編程序中用偽指令PRESERVE8來告訴連接器,本程序使用的堆棧是字節(jié)對(duì)齊的。 參數(shù)傳遞規(guī)則。ARM7 處理器寄存器組中R0-R3 用于程序間的參數(shù)傳遞,其中R0傳遞第一個(gè)參數(shù),R1 傳遞第二個(gè)參數(shù),以此類推;如果參數(shù)數(shù)目超過4 個(gè),那么必須使用堆棧進(jìn)行傳遞。8.實(shí)現(xiàn)將某個(gè)寄存器中的字?jǐn)?shù)據(jù)拆分成4 組字節(jié)數(shù)據(jù)的功能。答:不妨設(shè)

48、數(shù)據(jù)在R0 中,拆成的數(shù)據(jù)存放在R1R4 中,程序代碼如下。MOVANDMOVANDMOVANDMOVANDR1,R0R1,R1,#0xFF ;R2,R0,LSR 0x08R2,R2,#0xFFR3,R0,LSR #0x08R3,R3,#0xFFR4,R0,LSR 0x08R4,R4,#0xFF程序執(zhí)行完之后,四組字節(jié)的數(shù)據(jù)存放11在R1R4 的低八位,高24 為清零9. 實(shí)現(xiàn)統(tǒng)計(jì)任意字符串包含的字符個(gè)數(shù)的功能。(約定:字符串以0 為結(jié)束標(biāo)志)答:R0,string;將一個(gè)字符串的地址放到R0 中。LDRMOVR1,0;將字符串結(jié)束符放R1中MOVR3,0;將統(tǒng)計(jì)長度的放入R3中LDRR2,R0;將字符串的第一個(gè)字符放入R2count:CMPR2,R1;將 R2 中內(nèi)容與結(jié)束符0 進(jìn)行比較BEQnext;如果相

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論