freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

arm組合語言程式設(shè)計-全文預(yù)覽

2025-09-27 15:00 上一頁面

下一頁面
  

【正文】 條件 }B 來源暫存器, 記憶體位址 ? STRB指令用於從來源暫存器中將一個 8位元的位元組資料般移到記憶體中。 68 ARM指令集 載入 /存儲指令 STR指令 ? STR指令的語法為: ? STR{條件 } 來源暫存器, 記憶體位址 ? STR指令用於從來源暫存器中將一個 32位元的字資料般移到記憶體中。當(dāng)程式計數(shù)器 PC作為目的暫存器時,指令從記憶體中讀取的字資料被當(dāng)作目的地址,從而可以實現(xiàn)程式流程的跳移。 ? 指令範(fàn)例: LDRB R0, [R1] ;將記憶體位址為 R1的位元組資料讀入暫存器 R0,並將 R0的高 24位清零。 LDR R0, [R1], R2, LSL# 2 ;將記憶體位址為 R1的字資料讀入暫存器 R0,並將新位址 R1+ R24寫入 R1。 LDR R0, [R1, R2] ! ;將記憶體位址為 R1+R2的字資料讀入暫存器 R0,並將新位址 R1+ R2寫入 R1。該指令在程式設(shè)計中比較常用,且定址方式靈活多樣,請讀者認(rèn)真掌握。 ? 指令範(fàn)例: MSR CPSR, R0 ;般移 R0的內(nèi)容到 CPSR MSR SPSR, R0 ;般移 R0的內(nèi)容到 SPSR MSR CPSR_c, R0 ;般移 R0的內(nèi)容到 SPSR,但僅僅修改 CPSR中的控制位域 64 ARM指令集 載入 /存儲指令 ? ARM微處理器支援載入 /存儲指令用於在暫存器和記憶體之間般移資料,載入指令用於將記憶體中的資料般移到暫存器,存儲指令則完成相反的操作。 ? 當(dāng)在例外處理或進(jìn)程切換時,需要保存程式狀態(tài)暫存器的值,可先用該指令讀出程式狀態(tài)暫存器的值,然後保存。 ? 指令範(fàn)例: UMLAL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 + R0 ; R1 = ( R2 R3)的高 32位 + R1 61 ARM指令集 程式狀態(tài)暫存器存取指令 ? ARM微處理器支援程式狀態(tài)暫存器存取指令,用於在程式狀態(tài)暫存器和通用暫存器之間般移資料,程式狀態(tài)暫存器存取指令包括以下兩條: ? MRS 程式狀態(tài)暫存器到通用暫存器的資料般移指令。 ? 指令範(fàn)例: UMULL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 ; R1 = ( R2 R3)的高 32位 60 ARM指令集 乘法指令與乘加指令 UMLAL指令 ? UMLAL指令的語法為: ? UMLAL{條件 }{S} 目的暫存器 Low,目的暫存器低 High,運(yùn)算元 1,運(yùn)算元 2 ? UMLAL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果的低 32位元同目的暫存器 Low中的值相加後又放置到目的暫存器Low中,結(jié)果的高 32位元同目的暫存器 High中的值相加後又放置到目的暫存器 High中,同時可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 對於目的暫存器 Low,在指令執(zhí)行前存放 64位元加數(shù)的低 32位元,指令執(zhí)行後存放結(jié)果的低 32位。 ? 指令範(fàn)例: MLA R0, R1, R2, R3 ; R0 = R1 R2 + R3 MLAS R0, R1, R2, R3 ; R0 = R1 R2 + R3,同時設(shè)定 CPSR中的相關(guān)條件旗標(biāo)位元 57 ARM指令集 乘法指令與乘加指令 SMULL指令 ? SMULL指令的語法為: ? SMULL{條件 }{S} 目的暫存器 Low,目的暫存器低High,運(yùn)算元 1,運(yùn)算元 2 ? SMULL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果的低 32位元放置到目的暫存器 Low中,結(jié)果的高 32位元放置到目的暫存器 High中,同時可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 乘法指令與乘加指令共有以下 6條: ? MUL 32位元乘法指令 ? MLA 32位元乘加指令 ? SMULL 64位元有符號數(shù)乘法指令 ? SMLAL 64位元有符號數(shù)乘加指令 ? UMULL 64位元無符號數(shù)乘法指令 ? UMLAL 64位元無符號數(shù)乘加指令 55 ARM指令集 乘法指令與乘加指令 MUL指令 ? MUL指令的語法為: ? MUL{條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? MUL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果放置到目的暫存器中,同時可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。運(yùn)算元 2為 32位的遮罩,如果在遮罩中設(shè)定了某一位,則清除這一位。該指令常用於反轉(zhuǎn)運(yùn)算元 1的某些位。該指令常用於設(shè)定運(yùn)算元 1的某些位。該指令常用於遮罩運(yùn)算元 1的某些位。該指令使用進(jìn)位元旗標(biāo)來表示借位,這樣就可以做大於 32位的減法,注意不要忘記設(shè)定 S尾碼來更改進(jìn)位元旗標(biāo)。運(yùn)算元 1應(yīng)是一個暫存器,運(yùn)算元 2可以是一個暫存器,被移位的暫存器,或一個立即數(shù)。運(yùn)算元 1應(yīng)是一個暫存器,運(yùn)算元 2可以是一個暫存器,被移位的暫存器,或一個立即數(shù)。 ? 以下指令序列完成兩個 128位數(shù)的加法,第一個數(shù)由高到低存放在暫存器 R7~ R4,第二個數(shù)由高到低存放在暫存器 R11~ R8,運(yùn)算結(jié)果由高到低存放在暫存器 R3~ R0: ADDS R0, R4, R8 ; 加低端的字 ADCS R1, R5, R9 ; 加第二個字,帶進(jìn)位 ADCS R2, R6, R10 ; 加第三個字,帶進(jìn)位 ADC R3, R7, R11 ; 加第四個字,帶進(jìn)位 46 ARM指令集 資料處理指令 SUB指令 ? SUB指令的語法為: ? SUB {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? SUB指令用於把運(yùn)算元 1減去運(yùn)算元 2,並將結(jié)果存放到目的暫存器中。運(yùn)算元 1應(yīng)是一個暫存器,運(yùn)算元 2可以是一個暫存器,被移位的暫存器,或一個立即數(shù)。 ? 運(yùn)算元 1是要測試的資料,而運(yùn)算元 2是一個位遮罩,該指令一般用來測試是否設(shè)定了特定的位。 ? 旗標(biāo)位元表示的是運(yùn)算元 1與運(yùn)算元 2的關(guān)係 (大、小、相等 ),例如,當(dāng)運(yùn)算元 1大於操作運(yùn)算元 2,則此後的有 GT 尾碼的指令將可以執(zhí)行。與 MOV指令不同之處是在般移之前按位被取反了,即把一個被取反的值般移到目的暫存器中。 ? 比較指令 ? 比較指令不保存運(yùn)算結(jié)果,只更新 CPSR中相應(yīng)的條件旗標(biāo)位元。同時,副程式的返回可以通過將暫存器 R14值複製到 PC中來完成。以下指令: B Label ;程式無條件跳移到標(biāo)號 Label處執(zhí)行 CMP R1,# 0 ;當(dāng) CPSR暫存器中的 Z條件碼置位元時,程式跳移到標(biāo)號 Label處執(zhí)行 BEQ Label 33 ARM指令集 跳移指令 BL指令 ? BL指令的語法為: ? BL{條件 } 目標(biāo)位址 ? BL 是另一個跳移指令,但跳移之前,會在暫存器 R14中保存 PC的當(dāng)前內(nèi)容,因此,可以通過將 R14 的內(nèi)容重新載入到 PC中,來返回到跳移指令之後的那個指令處執(zhí)行。 32 ARM指令集 跳移指令 B指令 ? B指令的語法為: ? B{條件 } 目標(biāo)位址 ? B指令是最簡單的跳移指令。 ? ARM指令集中的跳移指令可以完成從當(dāng)前指令向前或向後的 32MB的位址空間的跳移,包括以下 4條指令: ? B 跳移指令。 31 ARM指令集 跳移指令 ? 跳移指令用於實現(xiàn)程式流程的跳移,在 ARM程式中有兩種方法可以實現(xiàn)程式流程的跳移: ? 使用專門的跳移指令。 30 ARM支援四種堆疊工作方式 ? 滿遞增堆疊 ? 堆疊指標(biāo)指向最後壓入的資料,且由低位址向高位址生成。 LDMIA R0, {R1, R2, R3, R4} ; R1←[R0] ; R2←[R0 + 4] ; R3←[R0 + 8] ; R4←[R0 + 12] 28 ARM指令的定址方式 相對定址 ? 與基址變址定址方式相類似,相對定址以程式計數(shù)器 PC的當(dāng)前值為基底位址,指令中的位址標(biāo)號作為偏移量,將兩者相加之後得到運(yùn)算元的有效位址。 ? 在第四條指令中,將暫存器 R1的內(nèi)容加上暫存器 R2的內(nèi)容形成運(yùn)算元的有效位址,從而取得運(yùn)算元存入暫存器 R0中。變址定址方式常用於存取某基底位址附近的位址單元。 ADD R0, R1, R2 ; R0←R1 + R2 25 ARM指令的定址方式 暫存器間接定址 ? 暫存器間接定址就是以暫存器中的值作為運(yùn)算元的位址,而運(yùn)算元本身存放在記憶體中。例如以下指令: ? 在以上兩條指令中,第二個源運(yùn)算元即為立即數(shù),要求以 “ # ” 為首碼,對於以十六進(jìn)位表示的立即數(shù),還要求在 “ # ” 後加上 “ 0x” 或 “ amp。 ? Thumb狀態(tài)的 LR映射到 ARM狀態(tài)的 R14。每一種特權(quán)模式都有一組 SP,LR和 SPSR。 ? Thumb指令與 ARM指令的時間效率和空間效率關(guān)係為: ? Thumb程式碼所需的存儲空間約為 ARM程式碼的 60%~ 70% ? Thumb程式碼使用的指令數(shù)比 ARM程式碼多約 30%~ 40% ? 若使用 32位的記憶體, ARM程式碼比 Thumb程式碼快約 40% ? 若使用 16位的記憶體, Thumb程式碼比 ARM程式碼快約 40%~ 50% ? 與 ARM程式碼相比較,使用 Thumb程式碼,記憶體的功耗會降低約 30% ? 若對系統(tǒng)的性能有較高要求,應(yīng)使用 32位元的存儲系統(tǒng)和 ARM指令集。 13 Thumb指令及應(yīng)用 ? Thumb指令集是 ARM指令集的一個子集,允許指令編碼為 16位元的長度。當(dāng)運(yùn)算元暫存器的狀態(tài)位元 0為 1時,執(zhí)行 BX指令進(jìn)入 Thumb狀態(tài)。 11 PSR Mode位元與可使用暫存器 12 ARM和 Thumb之間狀態(tài)的切換 ? ARM處理器可在兩種工作狀態(tài)之間切換。 ? T位元: ? T=0 指示 ARM執(zhí)行。當(dāng)例外出現(xiàn)時改變控制位元。 ? CPSR包含條件碼旗標(biāo),中斷禁止位元,當(dāng)前處理器模式以及其他狀態(tài)和控制資訊。 ? 暫存器 R13通常用做堆疊指標(biāo),稱為 SP( Stack Pointer),每種例外模式都有自己的 R13。暫存器 R8~R12沒有任何指定的特殊用途。 ? 2)分組暫存器 R8~R14 ? R8~ R14是分組暫存器。 ? ARM處理器有 7種不同的處理器模式 ? 在每一種處理器模式下均有一組相應(yīng)的暫存器與之對應(yīng)。 ? 當(dāng)處理器工作在使用者模式時,正在執(zhí)行的程式不能存取某些被保護(hù)的系統(tǒng)資源,也不能改變模式,除非例外 (exception)發(fā)生。 ? Thumb指令集為 ARM指令集的功能子集,但與等價的 ARM程式碼相比較,可節(jié)省30%~ 40%以上的存儲空間。 ? 連續(xù)存取資料 ? 可用載入 /存儲指令連續(xù)傳輸資料,以提高資料的傳輸效率。 ? 條件式指令 ? 所有的指令都可根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率。 3 ARM微處理器的指令 ? ARM兩種指令集 ? ARM指令 ? 為 32位元的長度, ? Thumb指令 ? 為 16位元長度。 ? 大多數(shù)應(yīng)用程式在使用者模式下執(zhí)行。 ? 6個程式狀態(tài)暫存器 ? 用以標(biāo)識 CPU的工作狀態(tài)及程式的執(zhí)行狀態(tài),均為 32位元,目前只使用了其中的一部分。它們是真正的通用暫存器,沒有架構(gòu)所隱含的特殊用途。 ? 暫存器 R8~R12各有兩組實體暫存器:一組為 FIQ模式,另一組為除了 FIQ以外的所有模式。 1個用於使用者模式和系統(tǒng)模式,其他 5個分別用於 5種例外模式。 8 ARM暫存器 9 程式狀態(tài)暫存器 (Program Status Register ) ? 有一個 Cu
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1