ARM 汇编复习题
一、選擇題
1. ARM屬于(A)
[A] RISC架構(gòu) [B] CISC架構(gòu)
?
2. ARM指令集是(C )位寬,Thumb指令集是(B )位寬的。
[A] 8位 [B] 16位?????? [C] 32位??????? [D] 64位
3. ARM指令集是(D)字節(jié)對齊,Thumb指令集是(B)字節(jié)對齊的
[A] 1 [B] 2????? ?[C] 3????????? [D] 4
4.復(fù)位后,ARM處理器處于(B)模式,(D) 狀態(tài)
[A] User [B] SVC??????? ?[C] System??????? ?[D] ARM???????? [E] Thumb
5. ARM處理器總共(E)個寄存器,System模式下使用(A)個寄存器,SVC模式下使用(B)個寄存器。
[A] 17個 [B] 18個???? [C] 32個?????? [D] 36個????????[E] 37個
6. ARM處理器中優(yōu)先級別最高的異常為(E),( AC)異常可以用來相應(yīng)中斷
[A] FIQ [B] SWI??????? [C] IRQ??????? [D] SVC?????? [E] RESET
7. ARM數(shù)據(jù)處理指令中有效的立即數(shù)是(ACEGH)
[A] 0X00AB0000 [B] 0X0000FFFF???? ? ?[C ] 0XF000000F????? ?[D ] 0X08000012
[E] 0X00001F80?????? ?[F] 0XFFFFFFFF???? ? ?[G] 0 [H] 0XFF000000
8. ATPCS規(guī)定中,推薦子函數(shù)參數(shù)最大為(D) 個
[A] 1 [B] 2?????? [C ] 3??????? [D ] 4
9. ATPCS規(guī)定中,棧是(B)
[A] 滿加 [B] 滿減?????? [C] 空加?????? [D] 空減
10.在用ARM匯編編程是,其寄存器有多個別名,通常PC是指(D),LR是指(C ),SP是指(B)
[A] R12 [B] R13??????? [C] R14???????? ?[D] R15
11. CPSR寄存器中反映處理器狀態(tài)的位是(D)
[A] J位 [B] I位??????? [C] F位????????? [D] T位
12.下面屬于ARM子程序調(diào)用指令的是(C)
[A] B [B] BX??????? [C ] BL?????? ?[D ] MOV
13. ARM7屬于(A)結(jié)構(gòu),ARM9屬于(B)結(jié)構(gòu)。
[A] 馮.諾依曼????????? [B] 哈佛
14. ARM7是(B)級流水線,ARM9是(C)級流水線。
[A] 1 [B] 3???????[C] 5???????? [D] 7
15. ARM中可以訪問狀態(tài)寄存器的指令是(D),能夠訪問內(nèi)存的指令是(B)
[A] MOV [B] LDR?????? [C] MCR???????? [D] MRS
16.異步串口中數(shù)據(jù)位可以是(ABCD)
[A] 5 ? [B] 6????? [C] 7????? ?[D] 8
17. I2C協(xié)議中有幾根線(B)
[A] 1 [B] 2???????? [C] 3???????? [D] 4
18. I2C協(xié)議中設(shè)備地址模式有(AC)
[A] 7位地址模式 [B] 8位地址模式????????? [C] 10位地址模式???????? [D] 4地址模式
19. S3C2410采用的是(D)核心
[A] ARM7TDMI [B] ARM9TDMI??????? [C] ARM926EJ-S?????????? [D] ARM920T
20.在串行異步通訊中,發(fā)送端串口的TxD要和接收端串口的(B)相連接
[A] TxD [B] RxD?????? ?[C] nCTS?????? ?[D] nRTS
21.在嵌入式系統(tǒng)設(shè)計(jì)中可以通過(B)來測量電池電壓,可以用(C)來驅(qū)動喇叭發(fā)聲
[A] DAC [B] ADC???????? [C] PWM????????? [D] Timer???????? [E] RTC
22. MMU的作用有(AB)
[A] 內(nèi)存保護(hù) [B] 地址轉(zhuǎn)換????? [C] 加快存取速度???????? [D] 安全保密?????????? [E] 內(nèi)存分配
23.以下屬于DMA特點(diǎn)的有(BC)
[A]占用CPU [B]占用總線??????? [C]不占用CPU????? ?[D]不占用總線
24.下面的設(shè)備中屬于閃存的設(shè)備有(AD)
[A] K9F1208U0M??????? [B] MAX3232??????? ?[C] HY57V561620?????? ?[D] Am29LV160D
25. I2C傳輸是(B)方式傳輸
[A] 單工 [B] 半雙工???? [C] 全雙工?
?
二、簡答題
1.簡述ARM發(fā)生異常時,ARM核心會自動做哪些事情?從異常返回時,我們要做哪些事情?
1)-- 當(dāng)異常產(chǎn)生時, ARM core:
拷貝CPSR到SPSR_<mode>
設(shè)置適當(dāng)?shù)腃PSR位:?
改變處理器狀態(tài)進(jìn)入ARM狀態(tài)?
改變處理器模式進(jìn)入相應(yīng)的異常模式?
設(shè)置中斷禁止位禁止相應(yīng)中斷(如果需要)
保存返回地址到LR_<mode>
設(shè)置PC為相應(yīng)的異常向量
2)-- 返回時,異常處理需要:
從SPSR_<mode>恢復(fù)CPSR
從LR_<mode>恢復(fù)PC
Note:這些操作只能在ARM態(tài)執(zhí)行.
2.用ARM匯編指令寫出實(shí)現(xiàn)64位加法和64位減法的代碼段,使用的寄存器請自行分配。
假定低32位數(shù)存放在r0和r1里面,高32位數(shù)存放在r2和r3里面。?
加法:?
ADDS r0, r0, r1 //加S是因?yàn)橐屵@個操作影響標(biāo)志位?
ADC r2, r2, r3 //ADC是帶進(jìn)位的加法,如果上一條指令產(chǎn)生進(jìn)位則一起加進(jìn)來?
減法:?
SUBS r0, r0, r1 //加S是因?yàn)橐屵@個操作影響標(biāo)志位?
SBC r2, r2, r3 // SBC是帶進(jìn)位的減法指令
3.請列舉ARM處理器的模式和異常,并說明各個發(fā)生異常時ARM處理器所處的模式
異常:?
Reset?
Data Abort
FIQ
IRQ
Prefetch Abort
SWI
Undefined instruction
處理器模式
User :非特權(quán)模式,大部分任務(wù)執(zhí)行在這種模式}?
FIQ : 當(dāng)一個高優(yōu)先級(fast)}中斷產(chǎn)生時將會進(jìn)入這種模式?
IRQ : 當(dāng)一個低優(yōu)先級(normal)中斷產(chǎn)生時將會進(jìn)入這種模式}?
Supervisor}:當(dāng)復(fù)位或軟中斷指令執(zhí)行時將會進(jìn)入這種模式?
Abort :當(dāng)存取異常時將會進(jìn)入這種模式}?
Undef :}當(dāng)執(zhí)行未定義指令時會進(jìn)入這種模式?
System :使用和User模式相同寄存器集的特權(quán)模式}
4. FIQ的什么特點(diǎn)使得它處理的速度比IRQ快?
1)FIQ優(yōu)先級比IRQ高,不會被中斷?
2)FIQ有自己的專屬寄存器:r8~r12,不用對通用寄存器入棧保護(hù),可以加快速度?
3)FIQ位于異常向量表的末尾0x1c,故無需跳轉(zhuǎn),可以在這里直接放置異常處理函數(shù)
5.什么指令可以放在中斷向量表?
跳轉(zhuǎn)指令,給PC賦值的指令?
B,LDR,MOV
6. ARM處理器 中斷向量表位于存儲器的什么位置?
默認(rèn):0x0
也可以配置成:0Xffff0000
7.下列ARM指令將做什么?
a) LDRH r0,[r1,#6]
b) LDR r0, =0x999
a:將r1寄存器的值加上6,然后把以這個值為地址的內(nèi)存單元里的值取半字(低16位)賦給r0
b:將立即數(shù)0x999賦給r0,注意這是一個偽指令
8. SWP指令的優(yōu)勢是什么?用來實(shí)現(xiàn)什么功能?
功能:在寄存器和存儲器之間,由一次存儲器讀和一次存儲器寫組成的原子操作。完成一個字節(jié)或字的交換。?
可以用來實(shí)現(xiàn)信號量
9. S3C2410支持幾種引導(dǎo)方式(或者說是內(nèi)存映射方式)?簡述Nand引導(dǎo)方式S3C2410硬件做的事情。
1)nor flash啟動方式。?
2)nand flash啟動方式。?
從Nand flash啟動時,S3C2410首先會執(zhí)行固化在片上ROM中的一段小程序,這段程序負(fù)責(zé)將nand flash前2K的代碼搬移到片上RAM,然后將PC指針指向0x0地址(注意這個時候片上RAM被映射到0x0的起始地址)
10.簡述static和volatile關(guān)鍵字的含義和作用。
C語言中static關(guān)鍵字有兩個作用,一是文件作用域,二是函數(shù)作用域。?
文件作用域關(guān)鍵字static的作用是,以static申明的全局變量、函數(shù)不得被其他文件所引用?
static另外一個用途是函數(shù)內(nèi)部靜態(tài)變量,只會被初始化一次,而且變量存儲在全局?jǐn)?shù)據(jù)段中而不是函數(shù)棧中,所以其生命期會一直持續(xù)到程序退出?
一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設(shè)這個變量的值了。精確地說就是,優(yōu)化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份
總結(jié)
- 上一篇: MSP430F5529 DriverLi
- 下一篇: Php与mssql数据交互