《ARM嵌入式系統(tǒng)結(jié)構(gòu)與編程》第三章課后答案_第1頁
《ARM嵌入式系統(tǒng)結(jié)構(gòu)與編程》第三章課后答案_第2頁
《ARM嵌入式系統(tǒng)結(jié)構(gòu)與編程》第三章課后答案_第3頁
《ARM嵌入式系統(tǒng)結(jié)構(gòu)與編程》第三章課后答案_第4頁
《ARM嵌入式系統(tǒng)結(jié)構(gòu)與編程》第三章課后答案_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章ARM指令集尋址方式1.在指令編碼中,條件碼占幾位,最多有多少個條件,各個條件是如何形成的? 答:條彳碼占4位,最多有15個條件操作碼條件助記符標(biāo)志含義0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1無符號數(shù)大于或等于0011CC/LOC=0無符號數(shù)小于0100MIN=1負(fù)數(shù)0101PLN=0正數(shù)或零0110VSV=1溢出0111VCV=0沒有溢出1000HIC=1,Z=0無符號數(shù)大于1001LSC=0,Z=1無符號數(shù)小于或等于1010GEN=V有符號數(shù)大于或等于1011LTN!=V有符號數(shù)小于1100GTZ=0,N=V有符號數(shù)大于1101LEZ=1,N!=V有符號

2、數(shù)小于或等于1110AL任何無條件執(zhí)行(指令默認(rèn)條件)1111NV任何從不執(zhí)行(不要使用)2.指令條件碼中,V標(biāo)志位在什么情況下才能等于1?答:V溢出標(biāo)志位對于加減法運算指令,當(dāng)操作數(shù)和運算結(jié)果為二進(jìn)制補碼表示的帶符號數(shù)時,V=1表示符號位溢出,其他指令通常不影響V位。3.在ARM指令中,什么是合法的立即數(shù)?判斷下面各立即數(shù)是否合法,如果合法則寫出在指令中的編碼格式(也就是8位常數(shù)和4位移位數(shù))0x5430 0x1080x3040x5010xfb100000x3340000x3FC0000x1FE00000x55800000x7F800 0x39C0000x1FE80000答:立即數(shù)必須由1個

3、8位的常數(shù)通過進(jìn)行 32位循環(huán)右移偶數(shù)位得到,其中循環(huán)右移的位數(shù)由一個4位二進(jìn)制的兩倍表示。即一個8位的常數(shù)通過循環(huán)右移2*a213_4位(即0,2,4,。30)得到0X54300000,0000,0000,0000,0101,0100,0011,0000 非法立即數(shù)0X1080000,0000,0000,0000,0000,00 01,0000,1000 0x42 循環(huán)右移 30 位 (rotate_4=0xF)0X3040000,0000,0000,0000,0000,00 11,0000,01000x5010xC1循環(huán)右移30 位(rotate_4=0xF)0000,0000,0000,

4、0000,0000,0101,0000,0001 0xfb100000000,1111,1011,0001,0000,0000,0000,00000x3340000000,0000,0011,0011,0100,0000,0000,00000x3FC0000000,0000,0011,1111,1100,0000,0000,00000x1FE0000非法立即數(shù)非法立即數(shù)0Xcd循環(huán)右移0XFF循環(huán)右移18 位(rotate_4=0x9)18 位(rotate_4=0x9 )0000,0001,1111,1110,0000,0000,0000,00000x5580000非法立即數(shù)0000,010

5、1,0101,1000,0000,0000,0000,00000x7F8000000,0000,0000,0111,1111,1000,0000,00000x39C0000000,0000,0011,1001,1100,0000,0000,00000x1FE800000001,1111,1110,1000,0000,0000,0000,0000非法立即數(shù)非法立即數(shù)0XE7循環(huán)右移非法立即數(shù)18 位(rotate_4=0x9)4.分析邏輯右移,算術(shù)右移,循環(huán)右移,帶擴(kuò)展的循環(huán)右移它們間的差別。 答:LSL邏輯左移:31LSR邏輯右移310ASR算術(shù)右移ROR循環(huán)右移310RRX帶擴(kuò)展的循環(huán)右移:

6、315.ARM數(shù)據(jù)處理指令具體的尋址方式有哪些,如果程序計數(shù)器 PC作為目標(biāo)寄存器,會產(chǎn)生什么結(jié)果?答:數(shù)據(jù)處理指令尋址方式具體可分為5種類型:1)第二操作數(shù)為立即數(shù) 2)第二操作數(shù)為寄存器 3)第二操作數(shù)為寄存器移位方式且移位的位數(shù)為一個5位立即數(shù)4)第二操作數(shù)為寄存器移位方式且移位數(shù)值放在寄存器中5)第二操作數(shù)位寄存器進(jìn)行 RRX移位得到。如果PC (R15)用作目標(biāo)寄存器, 指令會產(chǎn)生不可預(yù) 知的結(jié)果。6.在Load/Store指令尋址中,字,無符號字節(jié)的Load/Store指令尋址和半字,有符號字節(jié)尋址,試分析它們之間的差別。答:在Load/Store指令尋址中,字,無符號字節(jié)的 Lo

7、ad/Store指令尋址中共有以下3種內(nèi)存地址構(gòu)成格式:1) Addressing_mode中的偏移量為立即數(shù)2) Addressing_mode中的偏移量為寄存器的值3) Addressing_mode中的偏移量通過寄存器移位得到半字,有符號字節(jié)的Load/Store指令尋址中共有以下2種內(nèi)存地址構(gòu)成格式:1) Addressing_mode中的偏移量為立即數(shù)2) Addressing_mode中的偏移量為寄存器的值7 .塊拷貝Load/Store指令在實現(xiàn)寄存器組合連續(xù)的內(nèi)存單元中數(shù)據(jù)傳遞時,地址的變化方式有哪幾種類型,并分析它們的地址變化情況。答:批量Load/Store指令在實現(xiàn)寄存器

8、組合連續(xù)的內(nèi)存單元中數(shù)據(jù)傳遞時,地址的變化方式有以下4種類型:后增IA (Increment After):每次數(shù)據(jù)傳送后地址加4;先增 舊(Increment Before):每次數(shù)據(jù)傳送前地址加4 ;后減DA (Decrement After):每次數(shù)據(jù)傳送后地址減4 ;先減DB (Decrement Before):每次數(shù)據(jù)傳送前地址減4 ;8 .棧操作指令地址的變化方式有哪幾種類型,并分析它們的地址變化情況,從而得出棧操作指令尋址和塊拷貝 Load/Store指令之間的對應(yīng)關(guān)系。答:根據(jù)堆棧指針的指向位置不同和堆棧的生長方向不同,共有4種類型的堆棧工作方式:滿遞增堆棧FA:堆棧指針指向

9、最后壓入的數(shù)據(jù),且由低地址向高地址生成。滿遞減堆棧FD:堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成。空遞增堆棧EA:堆棧指針指向下一個要放入數(shù)據(jù)的空位置,且由低地址向高地址生成??者f減堆棧ED:堆棧指針指向下一個要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。9 .分析協(xié)處理器加載/存儲指令的尋址方式種的內(nèi)存地址索引格式中不同的匯編語法格式下內(nèi)存地址的計算方法。答: 協(xié)處理器加載/存儲指令的尋址方式種的內(nèi)存地址索引格式中,索引格式類似于LDR/STR指令尋址中的立即數(shù)作為地址偏移量的形式。 Addressing_mode 中的偏移量為 8 位立即數(shù)的匯編語法格式有以下3 種:? 前變址不回

10、寫形式: <Rn> , #+/-<imm_offset8>*4 第一個內(nèi)存地址編號為基地址寄存器Rn 值加上/減去imm_offset8 的 4 倍,后續(xù)的每一個地址是前一個內(nèi)存地址加4 ,直到協(xié)處理器發(fā)出信號,結(jié)束本次數(shù)據(jù)傳輸為止。? 前變址回寫形式: <Rn> , #+/-<imm_offset8>*4 !第一個內(nèi)存地址編號為基地址寄存器Rn 值加上/減去imm_offset8 的 4 倍,后續(xù)的每一個地址是前一個內(nèi)存地址加 4 ,直到協(xié)處理器發(fā)出信號,結(jié)束本次數(shù)據(jù)傳輸為止。當(dāng)指令執(zhí)行時,生成的地址值將寫入基址寄存器。? 后變址回寫形式: &

11、lt;Rn> , #+/-<imm_offset8>*4內(nèi)存地址為基址寄存器Rn 的值,當(dāng)存儲器操作完成后,將基地址寄存器Rn 值加上 /減去 imm_offset8 的 4 倍,后續(xù)的每一個地址是前一個內(nèi)存地址加4,直到協(xié)處理器發(fā)出信號,結(jié)束本次數(shù)據(jù)傳輸為止。最后將Rn 值加上/減去imm_offset8 的 4 倍寫回到基址寄存器Rn (更新基地址寄存器)。1. 寫出下列指令的機(jī)器碼,并分析指令操作功能。MOVR0, R1MOVR1, ,0X198ADDEQS R1 , R2, ,0xABCMPR2,#0XabLDRR0,R1,#4STRR0,R1,R1,LSL #2!L

12、DRHR0,R1,#4LDRSBR0,R2,#-2!STRBR1,R2,#0Xa0LDMIAR0,R1,R2,R8STMDB R0!,R1-R5,R10,R11STMEDSP!R0-R3,LR答:機(jī)器碼部分略。MOVR0, R1; R0 R1MOVR1, ,0X198; R0 0X198ADDEQS R1 , R2, ,0xAB;當(dāng) Z=1 時, R1 -R2+0xAB 并影響標(biāo)志位CMPR2,#0Xab; R2-0xAB ,并影響標(biāo)志位LDRR0,R1,#4; R0- 【R1+4】STRR0,R1,R1,LSL #2!; 【R1+R1*4 】 -R0, R1=R1+R1*4LDRHR0,R1,#4;R0 «-【R1+4】半字,R0的高16位清零LDRSB2R0,R2,#-2!; R0 - 【 R2-2 】字節(jié), R0 有符號擴(kuò)展為 32 位, R2=R2-STRBLDMIAR1,R2,#0Xa0R0,R1

溫馨提示

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

評論

0/150

提交評論