一,、填空題
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進(jìn)制轉(zhuǎn)換為16進(jìn)制:(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.計算機(jī)結(jié)構(gòu)分為 哈佛體系 結(jié)構(gòu)和 馮諾依曼體系 結(jié)構(gòu)。
19.ARM處理器支持的數(shù)據(jù)類型中,,字節(jié)為 8 位,、半字為 16 位、字為 32 位,。
20.將2進(jìn)制轉(zhuǎn)換為16進(jìn)制:(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ù)處理指令只對寄存器進(jìn)行操作,,只有加載/存儲指令可以訪問存儲器,,以提高指令的執(zhí)行效率,同時簡化處理器的設(shè)計,。
D,、RISC處理器都采用哈佛結(jié)構(gòu)
23.以下敘述中,不符合RISC指令系統(tǒng)特點的是 ,。
A,、 指令長度固定,指令種類少
B、 尋址方式種類豐富,,指令功能盡量增強(qiáng)
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