一、填空題
1. 常見的ARM處理器內(nèi)核有 ARM 7 、 ARM 9 和 ARM 11 等。
2. ARM處理器有兩種狀態(tài),分別是 ARM 狀態(tài) 和 Thumb 狀態(tài)。
3. 按總線所傳送的信息類型,總線分為 數(shù)據(jù)總線 、 地址總線 和 控制總線 。
4. ADS 是一套用來開發(fā)ARM 處理器應(yīng)用系統(tǒng)的開發(fā)工具包,用戶可以用ADS 編輯、編譯和調(diào)試C、C++以及匯編程序。目前的版本為 ADSv1.2 。
5. 與邏輯運算規(guī)則:0 ? 0= 0 ;0 ? 1= 0 ; 1 ? 0= 0 ; 1 ? 1= 1
6. 或邏輯運算規(guī)則: 0 + 0= 0 ;0 +1= 1 ; 1 + 0= 1 ; 1 + 1= 1
將2進制轉(zhuǎn)換為16進制:(10011100101101001000) B = 。
7.ARM 屬于 RISC 架構(gòu)。
8.ARM 指令集是 32 位寬,Thumb 指令集是 16 位寬。
9.ARM體系結(jié)構(gòu)版本中V___4___版架構(gòu)是目前應(yīng)用最廣的ARM體系架構(gòu),ARM7、___ ARM 9 ___都采用該架構(gòu)。
10.ARM微處理器共有__37_個__32_ 位寄存器,其中_31___個為通用寄存器,____6__個為狀態(tài)寄存器。
11.常用的嵌入式操作系統(tǒng)有 嵌入室Linux 、 VxWorks 等。
12.ARM嵌入式系統(tǒng)主要由 嵌入室硬件 、 嵌入室軟件 和 開發(fā)工具 構(gòu)成。
13.復(fù)位后,ARM處理器處于 SVC 工作模式, ARM 狀態(tài)。
14.S3C2410采用的核心處理器是 ARM920T 。
15.S3C2410 支持兩種引導(dǎo)方式,分別是 Nor-Flash 啟動方式、 Nand-Flash 啟動方式。
16.GPIO的中文全稱是 通用輸入輸出端口 。
17.ARM處理器有兩種狀態(tài),分別是 ARM 和 Thumb 。
18.計算機結(jié)構(gòu)分為 哈佛體系 結(jié)構(gòu)和 馮諾依曼體系 結(jié)構(gòu)。
19.ARM處理器支持的數(shù)據(jù)類型中,字節(jié)為 8 位、半字為 16 位、字為 32 位。
20.將2進制轉(zhuǎn)換為16進制:(11011010101101101110) B = ( ) H
21.ARM狀態(tài)下,SP寄存器指的是 R13 、LR寄存器指的是 R14 、PC寄存器指的是 R15 。
22.一個嵌入式系統(tǒng)由3部分組成,分別是 嵌入式硬件 、 嵌入式軟件 和 開發(fā)工具 。
二、選擇題:
1.相對于ARM指令集,Thumb指令集的特點是___ 。
A、指令執(zhí)行速度快
B、16位指令集,可以得到密度更高的代碼,對于需要嚴(yán)格控制成本的設(shè)計非常有意義
C、Thumb模式有自己獨立的寄存器
D、16位指令集,代碼密度高,加密性能好
2.在ARM寄存器結(jié)構(gòu)中,棧指針使用__B__寄存器。
A、R0 B、R13 C、R14 D、R15
3.在ARM體系結(jié)構(gòu)中,要從主動用戶模式(User)切換到超級用戶模式(Supervisor),應(yīng)采用何種方法?
A、直接修改CPU狀態(tài)寄存器(CPSR)對應(yīng)的模式
B、先修改程序狀態(tài)備份寄存器(SPSR)到對應(yīng)的模式,再更新CPU狀態(tài)
C、使用軟件中斷指令(SWI)
D、讓處理器執(zhí)行未定義指令
4.嵌入式系統(tǒng)加電或復(fù)位后,所有的 CPU 通常都從某個由 CPU 制造商預(yù)先安排的地址上取指令。例如:對于S3C2410來說,Boot Loader會映射到______地址處。
A 0x0c000000 B 0x00000000 C 0x00000018 D 0x40000018
5.32位體系結(jié)構(gòu)的ARM處理器有____種不同的處理器工作模式,和____個主要用來標(biāo)識CPU工作狀態(tài)和程序運行狀態(tài)的狀態(tài)寄存器。
A、7、7 B、7、6 C、6、6 D、6、7
6.CPSR中的低8位稱為控制位,下列不屬于控制位的是____。
A、N B、I C、F D、T
7.ARM7屬于 結(jié)構(gòu),ARM9屬于 結(jié)構(gòu)。
A、 馮.諾依曼 B、 哈佛
8.ARM7是 級流水線,ARM9是 級流水線。
A、1 B、2 C、3 D、5
9.ARM中可以訪問狀態(tài)寄存器的指令是 ,能夠訪問內(nèi)存的指令是 。
A、MOV B、ADD C、LDR D、MRS
10.在下列ARM處理器的各種模式中,只有_____模式不可以自由地改變處理器的工作模式。
A、用戶模式(User)
B、系統(tǒng)模式(System)
C、終止模式(Abort)
D、中斷模式(IRQ)
11.在ARM的匯編程序中,ADR、ADRL、 、 等被稱為偽指令。
A、AREA B、SETA C、LDR D、NOP
12.下列條件碼中表示不相等的是 。
A、EQ B、NE C、CS D、CC
13.CPSR中的低8位稱為控制位,其中I位等于1表示 。
A、禁止IRQ中斷 B、禁止FIQ中斷 C、允許IRQ中斷 D、允許FIQ中斷
14.ARM微處理器支持7種工作模式。其中,除 之外的其余6種稱為特權(quán)模式,在這6種之中,除 之外的其余5種又稱為異常模式。
A、用戶模式 B、管理模式 C、中止模式 D、系統(tǒng)模式
15. ATPCS規(guī)定中,棧是 。
A、滿遞增 B、滿遞減 C、空遞增 D、空遞減
16. 在用ARM匯編編程是,其寄存器有多個別名,通常PC是指R15,LR 是指 ,SP是指
A、R12 B、R13 C、R14 D、R15
17.下列條件碼中表示無符號數(shù)小于的是____。
A、HI B、LS C、CS D、CC
18.下列ARM指令中,可用于滿遞增堆棧操作的是____。
A、STMDA B、STMIA C、STMDB D、STMIB
19.下列32位數(shù)中,不可作為立即數(shù)的是____。
A、0x81000007 B、0x04800000 C、0x00000012 D、0x8000007
20.ATPCS規(guī)定數(shù)據(jù)棧是____類型。
A、滿遞減 B、滿遞增 C、空遞減 D、空遞增
21.ARM偽指令中,可用于大范圍地址讀取的是____。
A、ADR B、ADRL C、LDR D、NOP
22.同CISC相比,下面哪一項不屬于RISC處理器的特征。____
A、采用固定長度的指令格式,指令規(guī)整、簡單、基本尋址方式有2~3種。
B、減少指令數(shù)和尋址方式,使控制部件簡化,加快執(zhí)行速度。
C、數(shù)據(jù)處理指令只對寄存器進行操作,只有加載/存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率,同時簡化處理器的設(shè)計。
D、RISC處理器都采用哈佛結(jié)構(gòu)
23.以下敘述中,不符合RISC指令系統(tǒng)特點的是 。
A、 指令長度固定,指令種類少
B、 尋址方式種類豐富,指令功能盡量增強
C、 設(shè)置大量通用寄存器,訪問存儲器指令簡單
D、 選取使用頻率較高的一些簡單指令
24.下面關(guān)于ARM處理器的體系結(jié)構(gòu)描述哪一個是錯誤的。____
A、三地址指令格式
B、所有的指令都是多周期執(zhí)行
C、指令長度固定
D、Load-Store結(jié)構(gòu)
25.在ARM寄存器結(jié)構(gòu)中,棧指針使用____寄存器,
A、R0 B、R13 C、R14 D、R15
三、問答題:
1.ARM7TDMI采用了幾級流水線工作方式,簡要說明。
答:三級
2.ARM9采用了幾級流水線工作方式,簡要說明。
答:五級流水線工作方式,1.取指2.指令譯碼3.執(zhí)行4.數(shù)據(jù)存儲訪問5.寫寄存器
3.分別畫出采用大端格式及小端格式存放01020304H的存儲器示意圖
答:
4.寫出基于ARM920T核的處理器的異常優(yōu)先級由高到低的排列次序
答:復(fù)位
5.簡述ARM處理器從異常返回的步驟
答:
6.哈佛體系結(jié)構(gòu)和馮諾依曼體系結(jié)構(gòu)有何不同。
答:哈佛體系結(jié)構(gòu)有兩套地址總線和數(shù)據(jù)總線是分開的,馮諾依曼體系結(jié)構(gòu)是復(fù)用的。
7.用ARM匯編指令寫出實現(xiàn)64位加法和64位減法的代碼段,使用的寄存器請自行分配。
假定低32位數(shù)存放在r0和r1里面,高32位數(shù)存放在r2和r3里面。
答:
8.寫出四個s3c2410的中斷異常處理模塊中的主要寄存器,并簡要說明其作用。
答:158頁圖7-8 ,倒數(shù)第一行
9.ARM920T體系結(jié)構(gòu)支持哪兩種方法存儲字?jǐn)?shù)據(jù)?
答:大端模式和小端模式,大端模式高地址存的是數(shù)據(jù)的低位,低地址存存的是數(shù)據(jù)的高位。小端模式高地址存的是數(shù)據(jù)的高位,
四、程序分析題:
1.指出下面各條指令的尋址方式。
SUB R0,R1,R2 ;尋址方式為: 寄存器尋址
SUBS R0,R0,#1 ;尋址方式為: 立即數(shù)尋址
MOV R0,R2,LSL #3 ;尋址方式為: 寄存器移位尋址
SWP R1,R1,[R2] ;尋址方式為:
LDR R2,[R3,#0x0C] ;尋址方式為:
2.分別寫出語句a)與b)中LDR的作用
a) LDR r0,[r1,#6] 真正的ARM指令,取出r1+6為地址里面的存儲內(nèi)容送到r0里。
b) LDR r0,=0x999 偽指令,把0x999這個常數(shù)送到r0里。
3.假設(shè)R0的內(nèi)容為0x104,寄存器R1、R2的內(nèi)容分別為0x01與0x10,存儲器所有單元初始內(nèi)容為0。連續(xù)執(zhí)行下述指令后,說明存儲器及寄存器的內(nèi)容如何變化?
STMIB R0!,{R1,R2} //寄存器R0的內(nèi)容為0x10c, 存儲器0x108的內(nèi)容為0x01, 存儲器0x10 c的內(nèi)容為0x10,寄存器R1、R2的內(nèi)容分別為0x01與0x10。
LDMIA R0!,{R1,R2}
答:寄存器R0的內(nèi)容為0x114,寄存器R1的內(nèi)容為0x10,寄存器R2的內(nèi)容為0,存儲器0x10c的內(nèi)容為0 x10,存儲器0x108的內(nèi)容為0x01,存儲器其余各處的內(nèi)容都為0。
4.分析下面的程序,正確填寫下面的空格。
; 功能: 通過累加可以計算出10的整數(shù)倍
AREA Example1, CODE ,READONLY ; 此語句是聲明 代碼段Example1
ENTRY ;此語句功能是 標(biāo)識程序入口
CODE32 ; 聲明32位ARM指令
START MOV R0,#0 ; R0 = 0
MOV R1,#10 ; R1 = 10
LOOP BL ADD_SUB ; 調(diào)用子程序 ADD_SUB
B LOOP ; 跳轉(zhuǎn)到LOOP
ADD_SUB
ADDS R0,R0,R1 ; 此語句作用是完成 R0+R1再賦給R0,并且會影響CPSR中的C標(biāo)志位
MOV PC, LR ; 子程序返回
END ; 此語句作用是聲明 整個程序結(jié)束
五、編程題
1. 用匯編語言調(diào)用C語言實現(xiàn)n個數(shù)相加,n為C函數(shù)的參數(shù),由匯編語言傳遞,結(jié)果存放在R5寄存器中。
答:C程序:
int allsum(int n)
{
int i;
int nsum = 0;
for(i=1;i<=n;i++)
{
nsum += i;
}
return nsum;
}
匯編程序:
AREA scaller, CODE,READONLY
IMPORT allsum //導(dǎo)入allsum
ENTRY //入口點
MOV R0,#20
BL allsum //“B”子函數(shù)調(diào)用命令“L”返回主函數(shù)
MOV R5,R0
HALT B HALT //死循環(huán)
END
2.利用S3C2410X的GPF4、GPF5、GPF6、GPF7四個I/O管腳控制4個LED發(fā)光二極管,編程使其實現(xiàn)所有LED全亮,間隔一段時間,所有LED全滅。
電路原理圖如下:
答:
void main()
{
rGPFCON = 0x5500; //端口初始化 輸出端口
rGPFUP = 0xff; //不啟用上拉功能
int i;
rGPFDAT=0; //所有LED全亮
for(i=0;i<100000;i++);
rGPFDAT=0xF0; //所有LED全滅
for(i=0;i<100000;i++);
}
3.用匯編語言編寫程序讀取存儲器0x40003100地址上的數(shù)據(jù),將數(shù)據(jù)加1,若結(jié)果小于10則使用STR指令把結(jié)果寫回原地址,若結(jié)果大于等于10,則把0寫回原地址。
答:
COUNT EQU 0x40003100 ; 定義一個變量,地址為0x40003100
AREA Example2,CODE,READONLY ; 聲明代碼段Example2
ENTRY ; 標(biāo)識程序入口
CODE32 ; 聲明32位ARM指令
START LDR R1,=COUNT ; R1 <= COUNT
MOV R0,#0 ; R0 <= 0
STR R0,[R1] ; [R1] <= R0,即設(shè)置COUNT為0
LOOP LDR R1,=COUNT
LDR R0,[R1] ; R0 <= [R1]
ADD R0,R0,#1 ; R0 <= R0 + 1
CMP R0,#10 ; R0與10比較,影響條件碼標(biāo)志
MOVHS R0,#0 ; 若R0大于等于10,則此指令執(zhí)行,R0 <= 0
STR R0,[R1] ; [R1] <= R0,即保存COUNT
B LOOP
END