北京航的空航天大學(xué)《嵌入式系統(tǒng)》課件-第4章-arm指令集
《北京航的空航天大學(xué)《嵌入式系統(tǒng)》課件-第4章-arm指令集》由會員分享,可在線閱讀,更多相關(guān)《北京航的空航天大學(xué)《嵌入式系統(tǒng)》課件-第4章-arm指令集(159頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、4C H A P T E R ARM7指 令 集 目 錄q1.ARM處 理 器 尋 址 方 式q2.ARM指 令 集 介 紹 ARM指 令 集 Thumb指 令 集 ARM匯 編 語 言 ARM指 令 長 度 概 述n ARM指 令 長 度n 指 令 集 可 以 是 以 下 任 一 種n 32 bits 長 (ARM狀 態(tài) ) n 16 bits 長 (Thumb 狀 態(tài) )n ARM7TDMI 支 持 3種 數(shù) 據(jù) 類 型n 字 節(jié) (8-bit)n 半 字 (16-bit)n 字 (32-bit)n 字 必 須 被 排 成 4個 字 節(jié) 邊 界 對 齊 ,半 字 必 須 被 排 列 成 2
2、個 字 節(jié) 邊 界 對 齊 n 向 后 兼 容 : 新 版 本 增 加 指 令 , 并 保 持 指 令向 后 兼 容 ;n Load-store 結(jié) 構(gòu) *u load/store 從 存 儲 器 中 讀 某 個 值 ,操 作 完后 再 將 其 放 回 存 儲 器 中u 只 對 存 放 在 寄 存 器 的 數(shù) 據(jù) 進(jìn) 行 處 理u 對 于 存 儲 器 中 的 數(shù) 據(jù) , 只 能 使 用 load/store指 令 進(jìn) 行 存 取ARM指 令 長 度 概 述 第 4章 目 錄q1.ARM處 理 器 尋 址 方 式q2. ARM指 令 集 第 4章 ARM7TDMI(-S)指 令 系 統(tǒng)n 簡 介
3、 ARM處 理 器 是 基 于 精 簡 指 令 集 計 算 機(jī) (RISC)原理 設(shè) 計 的 , 指 令 集 和 相 關(guān) 譯 碼 機(jī) 制 較 為 簡 單 。ARM7TDMI(-S)具 有 32位 ARM指 令 集 和 16位 Thumb指 令 集 , ARM指 令 集 效 率 高 , 但 是 代 碼 密 度 低 ;而Thumb指 令 集 具 有 較 高 的 代 碼 密 度 , 卻 仍 然 保 持ARM的 大 多 數(shù) 性 能 上 的 優(yōu) 勢 , 它 是 ARM指 令 集 的子 集 。 所 有 的 ARM指 令 都 是 可 以 有 條 件 執(zhí) 行 的 , 而Thumb指 令 僅 有 一 條 指 令
4、 具 備 條 件 執(zhí) 行 功 能 。 ARM程 序 和 Thumb程 序 可 相 互 調(diào) 用 , 相 互 之 間 的 狀 態(tài) 切換 開 銷 幾 乎 為 零 。 第 4章 ARM7TDMI(-S)指 令 系 統(tǒng)n ARM指 令 集 與 Thumb指 令 集 的 關(guān) 系Thumb指 令 集具 有 靈 活 、 小巧 的 特 點ARM指 令 集 支 持ARM核 所 有 的 特性 , 具 有 高 效 、快 速 的 特 點 4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 尋 址 方 式 是 根 據(jù) 指 令 中 給 出 的 地 址 碼 字 段 來 實現(xiàn) 尋 找 真 實 操 作 數(shù) 地 址
5、 的 方 式 。 ARM處 理 器 具 有 9種 基 本 尋 址 方 式 。1.寄 存 器 尋 址 ; 2.立 即 尋 址 ;3.寄 存 器 移 位 尋 址 ; 4.寄 存 器 間 接 尋 址 ;5.基 址 尋 址 ; 6.多 寄 存 器 尋 址 ;7.堆 棧 尋 址 ; 8.塊 拷 貝 尋 址 ;9.相 對 尋 址 。 操 作 數(shù) 的 值 在 寄 存 器 中 , 指 令 中 的 地 址 碼 字 段指 出 的 是 寄 存 器 編 號 , 指 令 執(zhí) 行 時 直 接 取 出 寄 存 器值 來 操 作 。 寄 存 器 尋 址 指 令 舉 例 如 下 : MOV R1,R2 ;將R2的 值 存 入R
6、1 SUB R0,R1,R2 ;將R1的 值 減 去R2的 值 , 結(jié) 果 保 存 到R0 0 xAA0 x55R2R14.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 寄 存 器 尋 址MOV R1,R20 xAA 立 即 尋 址 指 令 中 的 操 作 碼 字 段 后 面 的 地 址 碼 部分 即 是 操 作 數(shù) 本 身 , 也 就 是 說 , 數(shù) 據(jù) 就 包 含 在 指 令當(dāng) 中 , 取 出 指 令 也 就 取 出 了 可 以 立 即 使 用 的 操 作 數(shù)(這 樣 的 數(shù) 稱 為 立 即 數(shù) )。 立 即 尋 址 指 令 舉 例 如 下 : SUBSR0,R0,#1
7、;R0減1, 結(jié) 果 放 入R0, 并 且 影 響 標(biāo) 志 位MOVR0,#0 xFF000 ;將 立 即 數(shù)0 xFF000裝 入R0寄 存 器0 x55R0MOV R0,#0 xFF00程 序 存 儲4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 立 即 尋 址MOV R0,#0 xFF000 xFF00 從 代 碼 中 獲 得 數(shù) 據(jù) 寄 存 器 移 位 尋 址 是 ARM指 令 集 特 有 的 尋 址 方 式 。當(dāng) 第 2個 操 作 數(shù) 是 寄 存 器 移 位 方 式 時 , 第 2個 寄 存 器操 作 數(shù) 在 與 第 1個 操 作 數(shù) 結(jié) 合 之 前 , 選 擇
8、進(jìn) 行 移 位 操作 。 寄 存 器 移 位 尋 址 指 令 舉 例 如 下 :MOVR0,R2,LSL #3 ;R2的 值 左 移3位 , 結(jié) 果 放 入R0, ;即 是R0=R28 ANDSR1,R1,R2,LSL R3 ;R2的 值 左 移R3位 , 然 后 和R1相 ;“與 ” 操 作 , 結(jié) 果 放 入R10 x55R0R2 0 x014.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 寄 存 器 移 位 尋 址MOV R0,R2,LSL #308 0 x08邏 輯 左 移 3位 寄 存 器 間 接 尋 址 指 令 中 的 地 址 碼 給 出 的 是 一 個通 用 寄
9、 存 器 的 編 號 , 所 需 的 操 作 數(shù) 保 存 在 寄 存 器 指定 地 址 的 存 儲 單 元 中 , 即 寄 存 器 為 操 作 數(shù) 的 地 址 指針 。 寄 存 器 間 接 尋 址 指 令 舉 例 如 下 : LDRR1,R2;將R2指 向 的 存 儲 單 元 的 數(shù) 據(jù) 讀 出;保 存 在R1中 SWPR1,R1,R2;將 寄 存 器R1的 值 和R2指 定 的 存 儲;單 元 的 內(nèi) 容 交 換 0 x55R0R2 0 x400000000 xAA0 x400000004.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 寄 存 器 間 接 尋 址LDR R0
10、,R20 xAA 基 址 尋 址 就 是 將 基 址 寄 存 器 的 內(nèi) 容 與 指 令 中 給 出 的 偏移 量 ( 4K) 相 加 /減 , 形 成 操 作 數(shù) 的 有 效 地 址 。 基 址 尋址 用 于 訪 問 基 址 附 近 的 存 儲 單 元 , 常 用 于 查 表 、 數(shù) 組 操 作 、功 能 部 件 寄 存 器 訪 問 等 。 基 址 尋 址 包 括 基 址 加 偏 移 (立 即 數(shù) )和 基 址 加 索 引 (寄 存 器 )兩 種 尋 址 方 式 。 寄 存 器 間 接 尋 址 是偏 移 量 為 零 的 基 址 尋 址 ?;?址 尋 址 指 令 舉 例 如 下 (前 索 引
11、尋 址 ): LDRR2,R3,#0 x0C ;讀 取R3+0 x0C地 址 上 的 存 儲 單 元 ;的 內(nèi) 容 , 放 入R2 STRR1,R0,#-4! ;先R0=R0-4, 然 后 把R0的 值 寄 存 到R1STRR1,R0,R2! ; R0=R0+R2, R1=R0 STRR1,R0,R2 4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 基 址 (變 址 )尋 址0 x55R2R3 0 x400000000 xAA0 x4000000CLDR R2,R3,#0 x0C0 xAA將 R3+0 x0C作為 地 址 裝 載 數(shù)據(jù) 基 址 尋 址 指 令 舉 例 如 下
12、 : LDRR0,R1,#4 ;R0=R1,R1R14 ;后 索 引 基 址 尋 址 ;ARM這 種 自 動 索 引 機(jī) 制 不 消 耗 額 外 的 時 間LDR R0,R1,R2 ;R0=R1,R1=R1+R2基 址 加 索 引 尋 址 , 后 ;索 引4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 基 址 尋 址 4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 基 址 尋 址 多 寄 存 器 尋 址 一 次 可 傳 送 幾 個 寄 存 器 值 , 允 許一 條 指 令 傳 送 16個 寄 存 器 的 任 何 子 集 或 所 有 寄 存 器 。多 寄
13、存 器 尋 址 指 令 舉 例 如 下 : LDMIAR1!,R2-R7,R12 ;將R1指 向 的 單 元 中 的 數(shù) 據(jù) 讀 出 到 ;R2R7、R12中(R1自 動 加4) STMIAR0!,R2-R7,R12 ;將 寄 存 器R2R7、R12的 值 保 ;存 到R0指 向 的 存 儲; 單 元 中 ;(R0自 動 加4); 先 存 后 加LDMIAR1,R2,R4,R6 ;?0 x40000000R1R2 0 x? 0 x01 0 x400000000 x?R3R4 0 x?R6 0 x? 0 x020 x030 x04 0 x400000040 x400000080 x4000000
14、C存 儲 器4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 多 寄 存 器 尋 址LDR R1!,R2-R4,R6 01020304 1 多 寄 存 器 傳 送 指 令 用 于 將 一 塊 數(shù) 據(jù) 從 存 儲 器 的 某 一 位 置拷 貝 到 另 一 位 置 。 如 :LDMIAR0!,R1-R7;將R0指 向 的 數(shù) 據(jù) 保 存 到R1R7中 。STMIAR1!,R1-R7;將R1R7的 數(shù) 據(jù) 保 存 到R1指 向 的 存 儲 器 中 。;存 儲 指 針R1在 保 存 第 一 個 值 之 后 增 加 ,;增 長 方 向 為 向 上 增 長 ( 空 遞 增 ) 。STMI
15、BR0!,R1-R7;將R1R7的 數(shù) 據(jù) 保 存 到 存 儲 器 中 。;存 儲 指 針 R0在 保 存 第 一 個 值 之 前 增 加 ,;增 長 方 向 為 向 上 增 長 ( 滿 遞 增 ) 。 4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 塊 拷 貝 ( 多 寄 存 器 ) 尋 址IA: Increment After 存 儲 后 加 1 IB: Increment Before 加 1后 再 存 儲DA: Decrement After 存 儲 后 減 1 DB: Decrement Before 減 1后 再 存 儲 堆 棧 是 一 個 按 特 定 順 序
16、進(jìn) 行 存 取 的 存 儲 區(qū) , 操作 順 序 為 “ 后 進(jìn) 先 出 ” 。 堆 棧 尋 址 是 隱 含 的 , 它 使用 一 個 專 門 的 寄 存 器 (堆 棧 指 針 )指 向 一 塊 存 儲 區(qū) 域(堆 棧 ), 指 針 所 指 向 的 存 儲 單 元 即 是 堆 棧 的 棧 頂 。存 儲 器 堆 棧 可 分 為 兩 種 : 向 上 生 長 : 向 高 地 址 方 向 生 長 , 稱 為 遞 增 堆 棧向 下 生 長 : 向 低 地 址 方 向 生 長 , 稱 為 遞 減 堆 棧4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 堆 棧 尋 址 4.1 ARM處 理
17、 器 尋 址 方 式n 尋 址 方 式 分 類 堆 棧 尋 址 棧 底棧 頂遞 增堆 棧SP 堆 棧 存儲 區(qū) 棧 頂棧 底遞 減堆 棧 SP向 下增 長向 上增 長 0 x123456780 x12345678堆 棧 壓 棧 堆 棧 壓 棧 棧 頂SP棧 頂SP 棧 底 空 堆 棧棧 底 滿 堆 棧 堆 棧 指 針 指 向 最 后 壓 入 的 堆 棧 的 有 效 數(shù) 據(jù) 項 ,稱 為 滿 堆 棧 ; 堆 棧 指 針 指 向 下 一 個 待 壓 入 數(shù) 據(jù) 的 空位 置 , 稱 為 空 堆 棧 。 4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 堆 棧 尋 址0 x1234
18、56780 x12345678棧 頂SP 0 x12345678棧 頂SP壓 棧 壓 棧 , 可 以 組 合 出 四種 類 型 的 堆 棧 方 式 :滿 遞 增 : 堆 棧 向 上 增 長 , 堆 棧 指 針 指 向 內(nèi) 含 有 效數(shù) 據(jù) 項 的 最 高 地 址 。 指 令 如 LDMFA、 STMFA等 ; 空 遞 增 : 堆 棧 向 上 增 長 , 堆 棧 指 針 指 向 堆 棧 上 的第 一 個 空 位 置 。 指 令 如 LDMEA、 STMEA等 ; 滿 遞 減 : 堆 棧 向 下 增 長 , 堆 棧 指 針 指 向 內(nèi) 含 有 效數(shù) 據(jù) 項 的 最 低 地 址 。 指 令 如 LD
19、MFD、 STMFD等 ;空 遞 減 : 堆 棧 向 下 增 長 , 堆 棧 指 針 向 堆 棧 下 的 第一 個 空 位 置 。 指 令 如 LDMED、 STMED等 。 4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 堆 棧 尋 址 IA(EA): Increment After (Empty Ascend) 存 儲 后 加 1IB(FA): Increment Before (Full Ascend) 加 1后 再 存 儲DA(ED): Decrement After (Empty Descend) 存 儲 后 減 1DB(FD) : Decrement Befor
20、e ( Full Descend) 減 1后 再 存 儲4.1 ARM處 理 器 尋 址 方 式n 塊 拷 貝 尋 址 vs.堆 棧 尋 址對 于 存 儲 STM:對 于 讀 取 LDM:IA(FD): Increase After (Full Descend) 讀 取 后 加 1IB(ED): Increase Before (Empty Descend) 加 1后 再 讀 取DA(FA): Decrease After (Full Ascend) 讀 取 后 減 1DB(EA) : Decrease Before (Empty Ascend) 減 1后 再 讀 取 相 對 尋 址 是 基
21、址 尋 址 的 一 種 變 通 。 由 程 序 計 數(shù)器 PC提 供 基 準(zhǔn) 地 址 , 指 令 中 的 地 址 碼 字 段 作 為 偏 移量 , 兩 者 相 加 后 得 到 的 地 址 即 為 操 作 數(shù) 的 有 效 地 址 。用 于 子 程 序 調(diào) 用 。 相 對 尋 址 指 令 舉 例 如 下 :BLSUBR1;調(diào) 用 到SUBR1子 程 序BEQLOOP;條 件 跳 轉(zhuǎn) 到LOOP標(biāo) 號 處.LOOPMOVR6,#1.SUBR1. 4.1 ARM處 理 器 尋 址 方 式n 尋 址 方 式 分 類 相 對 尋 址 第 4章 目 錄q1.ARM處 理 器 尋 址 方 式q2. ARM指
22、令 集q3. ARM匯 編 語 言 n 簡 單 的 ARM程 序;文 件 名 :TEST1.S ;功 能 : 實 現(xiàn) 兩 個 寄 存 器 相 加 ;說 明 : 使 用ARMulate軟 件 仿 真 調(diào) 試 AREAExample1,CODE,READONLY ;聲 明 代 碼 段Example1 SWI_A EQU 標(biāo) 識 程 序 入 口 CODE32 ;聲 明32位ARM指 令START MOVR0,#0 ;設(shè) 置 參 數(shù) MOVR1,#10 LOOPBLADD_SUB ;調(diào) 用 子 程 序ADD_SUB BLOOP ;跳 轉(zhuǎn) 到LOOPADD_SUB ADDSR0,R0,R1 ;R0 =
23、R0 + R1 MOVPC,LR ;子 程 序 返 回 END ;文 件 結(jié) 束 使 用 “ ; ” 進(jìn) 行 注 釋標(biāo) 號 頂 格 寫 實 際 代 碼 段聲 明 文 件 結(jié) 束 n 簡 單 的 ARM程 序;文 件 名 :TEST1.S ;功 能 : 實 現(xiàn) 兩 個 寄 存 器 相 加 ;說 明 : 使 用ARMulate軟 件 仿 真 調(diào) 試 AREAExample1,CODE,READONLY ;聲 明 代 碼 段Example1 SWI_A EQU 標(biāo) 識 程 序 入 口 CODE32 ;聲 明32位ARM指 令START MOVR0,#0 ;設(shè) 置 參 數(shù) MOVR1,#10LOOPB
24、LADD_SUB ;調(diào) 用 子 程 序ADD_SUB BLOOP ;跳 轉(zhuǎn) 到LOOPADD_SUB ADDSR0,R0,R1 ;R0 = R0 + R1 MOVPC,LR ;子 程 序 返 回 END ;文 件 結(jié) 束 ARM指 令 小 節(jié) 目 錄1.指 令 格 式2.條 件 碼3.存 儲 器 訪 問 指 令4.數(shù) 據(jù) 處 理 指 令5.乘 法 指 令6.ARM分 支 指 令7.雜 項 指 令8.偽 指 令 ARM指 令 小 節(jié) 目 錄1.指 令 格 式2.條 件 碼3.存 儲 器 訪 問 指 令4.數(shù) 據(jù) 處 理 指 令5.乘 法 指 令6.ARM分 支 指 令7.雜 項 指 令8.偽 指
25、 令 4.2 指 令 集 介 紹n ARM指 令 集 指 令 格 式 ARM是 三 地 址 指 令 格 式 , 指 令 的 基 本 格 式 如 下 :4.2 指 令 集 介 紹n ARM指 令 集 基 本 指 令 格 式 S , 其 中 號 內(nèi) 的 項 是 必 須 的 , 號 內(nèi) 的 項 是 可 選 的 。各 項 的 說 明 如 下 :opcode: 指 令 助 記 符 ;cond: 執(zhí) 行 條 件 ;S: 是 否 影 響 CPSR寄 存 器 條 件 位 的 值 ;Rd: 目 標(biāo) 寄 存 器 ; Rn: 第 1個 操 作 數(shù) 的 寄 存 器 ;operand2: 第 2個 操 作 數(shù) ;指 令
26、 語 法 目 標(biāo) 寄 存 器 ( Rd) 源 寄 存 器 1(Rn) 源 寄 存 器 2(Rm)ADD r3,r1,r2 r3 r1 r2例 : ARM指 令 的 基 本 格 式 如 下 :4.2 指 令 集 介 紹n ARM指 令 集 第 2個 操 作 數(shù) S , 靈 活 的 使 用 第 2個 操 作 數(shù) “operand2” 能 夠 提 高 代碼 效 率 。 它 有 如 下 的 形 式 :#immed_8r常 數(shù) 表 達(dá) 式 ;Rm寄 存 器 方 式 ;Rm,shift寄 存 器 移 位 方 式 ; 4.2 指 令 集 介 紹n ARM指 令 集 第 2個 操 作 數(shù)#immed_8r常
27、數(shù) 表 達(dá) 式 該 常 數(shù) 必 須 對 應(yīng) 8位 位 圖 , 即 一 個 8位 的 常 數(shù) 通 過循 環(huán) 右 移 偶 數(shù) 位 得 到 。循 環(huán) 右 移 10位 0 x120 0 0 1 0 0 1 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 0 0 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x801 0 0 0 0 0 0 00 x040 0 0 0 0 1 0 0 8位 常 數(shù) 4.2 指 令 集 介 紹n ARM指 令 集 第 2個 操 作 數(shù)#immed_8r常 數(shù) 表 達(dá)
28、式 該 常 數(shù) 必 須 對 應(yīng) 8位 位 圖 , 即 一 個 8位 的 常 數(shù) 通 過循 環(huán) 右 移 偶 數(shù) 位 得 到 。例 如 :ANDR1,R2,#0 x0F ;R1=R2R1=R1+R1R3 ARM指 令 目 錄1.指 令 格 式2.條 件 碼3.存 儲 器 訪 問 指 令4.數(shù) 據(jù) 處 理 指 令5.乘 法 指 令6.ARM分 支 指 令7.雜 項 指 令8.偽 指 令 ARM指 令 的 基 本 格 式 如 下 :4.2 指 令 集 介 紹n ARM指 令 集 條 件 碼 S , 使 用 條 件 碼 “cond” 可 以 實 現(xiàn) 高 效 的 邏 輯 操 作 (節(jié)省 跳 轉(zhuǎn) 和 條 件
29、 語 句 ), 提 高 代 碼 效 率 。 所 有 的 ARM指 令 都 可 以 條 件 執(zhí) 行 , 而 Thumb指 令只 有 B( 跳 轉(zhuǎn) ) 指 令 具 有 條 件 執(zhí) 行 功 能 。 如 果 指 令 不 標(biāo)明 條 件 代 碼 , 將 默 認(rèn) 為 無 條 件 ( AL) 執(zhí) 行 。 操 作 碼 條 件 助 記 符 標(biāo) 志 含 義0000 EQ Z=1 相 等0001 NE Z=0 不 相 等0010 CS/HS C=1 無 符 號 數(shù) 大 于 或 等 于0011 CC/LO C=0 無 符 號 數(shù) 小 于0100 MI N=1 負(fù) 數(shù)0101 PL N=0 正 數(shù) 或 零0110 VS
30、V=1 溢 出0111 VC V=0 沒 有 溢 出1000 HI C=1,Z=0 無 符 號 數(shù) 大 于1001 LS C=0,Z=1 無 符 號 數(shù) 小 于 或 等 于 1010 GE N=V 有 符 號 數(shù) 大 于 或 等 于 1011 LT N!=V 有 符 號 數(shù) 小 于 1100 GT Z=0,N=V 有 符 號 數(shù) 大 于 1101 LE Z=1,N!=V 有 符 號 數(shù) 小 于 或 等 于 1110 AL 任 何 無 條 件 執(zhí) 行 (指 令 默 認(rèn) 條 件 ) 1111 NV 任 何 從 不 執(zhí) 行 (不 要 使 用 ) 指 令 條 件 碼 表 4.2 指 令 集 介 紹n
31、ARM指 令 集 條 件 碼C代 碼 :If(a b)a+;Elseb+;對 應(yīng) 的 匯 編 代 碼 :CMPR0,R1 ;R0(a) 與R1(b) 比 較ADDHIR0,R0,#1 ;若R0R1, 則R0=R0+1ADDLSR1,R1,#1 ;若R01, 則R1=R1+1示 例 : ARM指 令 目 錄1.指 令 格 式2.條 件 碼3.存 儲 器 訪 問 指 令4.數(shù) 據(jù) 處 理 指 令5.乘 法 指 令6.ARM分 支 指 令7.雜 項 指 令8.偽 指 令 4.2 指 令 集 介 紹n ARM指 令 集 存 儲 器 訪 問 指 令 ARM處 理 器 是 典 型 的 RISC處 理 器
32、, 對 存 儲 器 的訪 問 只 能 使 用 加 載 、 交 換 和 存 儲 指 令 實 現(xiàn) 。 ARM7處 理 器 是 馮 諾 依 曼 存 儲 結(jié) 構(gòu) , RAM存 儲 空 間 及 I/O映 射 空 間 統(tǒng) 一 編 址 , 除 對 RAM操 作 以 外 , 對 外 圍 IO、程 序 數(shù) 據(jù) 的 訪 問 均 要 通 過 加 載 /存 儲 指 令 進(jìn) 行 。 存 儲 器 訪 問 指 令 分 為 單 寄 存 器 操 作 指 令 和 多 寄存 器 操 作 指 令 。 助 記 符 說 明 操 作 條 件 碼 位 置LDR Rd,addressing 加 載 字 數(shù) 據(jù) Rd addressing,ad
33、dressing索 引 LDRcondLDRB Rd,addressing 加 載 無 符 號 字 節(jié) 數(shù) 據(jù) Rd addressing,addressing索 引 LDRcondBLDRT Rd,addressing 以 用 戶 模 式 加 載 字 數(shù)據(jù) Rd addressing,addressing索 引 LDRcondTLDRBT Rd, addressing 以 用 戶 模 式 加 載 無 符號 字 節(jié) 數(shù) 據(jù) Rd addressing,addressing索 引 LDRcondBTLDRH Rd, addressing 加 載 無 符 號 半 字 數(shù) 據(jù) Rd addressi
34、ng,addressing索 引 LDRcondHLDRSB Rd, addressing 加 載 有 符 號 字 節(jié) 數(shù) 據(jù) Rd addressing,addressing索 引 LDRcondSB LDRSH Rd, addressing 加 載 有 符 號 半 字 數(shù) 據(jù) Rd addressing,addressing索 引 LDRcondSH ARM存 儲 器 訪 問 指 令 單 寄 存 器 加 載 助 記 符 說 明 操 作 條 件 碼 位 置STR Rd, addressing 存 儲 字 數(shù) 據(jù) addressing Rd,addressing索 引 STRcondSTRB
35、Rd,addressing 存 儲 字 節(jié) 數(shù) 據(jù) addressing Rd,addressing索 引 STRcondBSTRT Rd,addressing 以 用 戶 模 式 存 儲 字 數(shù)據(jù) addressing Rd, addressing索 引 STRcondTSTRBT Rd,addressing 以 用 戶 模 式 存 儲 字 節(jié)數(shù) 據(jù) addressing Rd,addressing索 引 STRcondBTSTRH Rd,addressing 存 儲 半 字 數(shù) 據(jù) addressing Rd,addressing索 引 STRcondHARM存 儲 器 訪 問 指 令 單
36、 寄 存 器 存 儲 LDR/STR指 令 用 于 對 內(nèi) 存 變 量 的 訪 問 、 內(nèi) 存 緩 沖 區(qū) 數(shù) 據(jù) 的 訪 問 、 查 表 、外 圍 部 件 的 控 制 操 作 等 。 若 使 用 LDR指 令 加 載 數(shù) 據(jù) 到 PC寄 存 器 , 則 實 現(xiàn) 程序 跳 轉(zhuǎn) 功 能 , 這 樣 也 就 實 現(xiàn) 了 程 序 散 轉(zhuǎn) 。 所 有 單 寄 存 器 加 載 /存 儲 指 令 可 分 為 “ 字 和 無 符 號 字 節(jié) 加 載 存 儲 指 令 ”和 “ 半 字 和 有 符 號 字 節(jié) 加 載 存 儲 指 令 ” 。 LDR和 STR字 和 無 符 號 字 節(jié) 加 載 /存 儲 指 令
37、LDR指 令 用 于 從 內(nèi) 存 中 讀 取 單 一 字 或 字 節(jié) 數(shù) 據(jù)存 入 寄 存 器 中 , STR指 令 用 于 將 寄 存 器 中 的 單 一 字或 字 節(jié) 數(shù) 據(jù) 保 存 到 內(nèi) 存 。 指 令 格 式 如 下 :ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲 LDRcondTRd, ;將 指 定 地 址 上 的 字 數(shù) 據(jù) 讀 入Rd STRcondTRd, ;將Rd中 的 字 數(shù) 據(jù) 存 入 指 定 地 址 LDRcondBTRd, ;將 指 定 地 址 上 的 字 節(jié) 數(shù) 據(jù) 讀 入Rd STRcondBTRd, ;將Rd中 的 字 節(jié) 數(shù) 據(jù) 存 入 指 定
38、地 址 其 中 , T為 可 選 后 綴 。 若 指 令 有 T, 那 么 即 使 處理 器 是 在 特 權(quán) 模 式 下 , 存 儲 系 統(tǒng) 也 將 訪 問 看 成 是 在用 戶 模 式 下 進(jìn) 行 的 。 T在 用 戶 模 式 下 無 效 , 不 能 與前 索 引 偏 移 一 起 使 用 T。 ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲LDR和 STR字 和 無 符 號 字 節(jié) 加 載 /存 儲 指 令 編 碼指 令 執(zhí) 行 的 條 件 碼I為 0時 , 偏 移 量 為 12 位 立 即 數(shù) , 為 1時 ,偏 移 量 為 寄 存 器 移位P表 示 前 /后 變 址U表 示 加
39、 /減B為 1表 示 字 節(jié) 訪 問 ,為 0表 示 字 訪 問 W表 示 回 寫為 指 令 的 尋 址 方 式Rd為 源 /目 標(biāo) 寄 存 器Rn為 基 址 寄 存 器L用 于 區(qū) 別 加 載 ( L為 1)或 存 儲 ( L為 0) ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲LDR和 STR字 和 無 符 號 字 節(jié) 加 載 /存 儲 指 令 LDR/STR指 令 尋 址 非 常 靈 活 , 它 由 兩 部 分 組 成 , 其 中 一部 分 為 一 個 基 址 寄 存 器 , 可 以 為 任 一 個 通 用 寄 存 器 ; 另 一 部分 為 一 個 地 址 偏 移 量 。 地
40、 址 偏 移 量 有 以 下 3種 格 式 : 立 即 數(shù) 。 立 即 數(shù) 可 以 是 一 個 無 符 號 的 數(shù) 值 。 這 個 數(shù) 據(jù) 可 以 加到 基 址 寄 存 器 , 也 可 以 從 基 址 寄 存 器 中 減 去 這 個 數(shù) 值 。 如 :LDR R1,R0,#0 x12 ;R1-R0+0 x12寄 存 器 。 寄 存 器 中 的 數(shù) 值 可 以 加 到 基 址 寄 存 器 , 也 可 以 從 基址 寄 存 器 中 減 去 這 個 數(shù) 值 。 如 :LDR R1,R0,R2 ; R1-R0+R2 LDR R1,R0,-R2 ; R1-R0-R2寄 存 器 及 移 位 常 數(shù) 。 寄
41、 存 器 移 位 后 的 值 可 以 加 到 基 址 寄 存 器 ,也 可 以 從 基 址 寄 存 器 中 減 去 這 個 數(shù) 值 。 如 :LDR R1,R0,R2,LSL #2 ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲 從 尋 址 方 式 的 地 址 計 算 方 法 分 , 加 載 /存 儲 指 令 有 以 下 4種 格 式 : 零 偏 移 。 如 :LDR Rd,Rn 前 索 引 偏 移 。 如 :LDR Rd,Rn,#0 x04!程 序 相 對 偏 移 。 如 :LDR Rd,labe1 后 索 引 偏 移 。 如 :LDR Rd,Rn,#-0 x04注 意 : 必 須
42、 保 證 字 數(shù) 據(jù) 操 作 的 地 址 是 32位 對 齊 的 。LDR和 STR字 和 無 符 號 字 節(jié) 加 載 /存 儲 指 令 LDR和 STR半 字 和 有 符 號 字 節(jié) 加 載 /存 儲 指 令 這 類 LDR/STR指 令 可 加 載 有 符 號 半 字 或 字 節(jié) , 可 加 載 /存儲 無 符 號 半 字 。 偏 移 量 格 式 、 尋 址 方 式 與 加 載 /存 儲 字 和 無 符號 字 節(jié) 指 令 相 同 。 ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲 LDRcondSB Rd, ;將 指 定 地 址 上 的 有 符 號 字 節(jié) 讀 入Rd LDRco
43、ndSH Rd, ;將 指 定 地 址 上 的 有 符 號 半 字 讀 入Rd LDRcondH Rd, ;將 指 定 地 址 上 的 半 字 數(shù) 據(jù) 讀 入Rd STRcondH Rd, ;將Rd中 的 半 字 數(shù) 據(jù) 存 入 指 定 地 址注 意 :1.有 符 號 位 半 字 /字 節(jié) 加 載 是 指 用 符 號 位 加 載 擴(kuò) 展 到 32位 , 無符 號 半 字 加 載 是 指 用 零 擴(kuò) 展 到 32位 ; 2.半 字 讀 寫 的 指 定 地 址 必 須 為 偶 數(shù) , 否 則 將 產(chǎn) 生 不 可 靠 的 結(jié) 果 ; ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲LDR和
44、STR半 字 和 有 符 號 字 節(jié) 加 載 /存 儲 指 令 編 碼指 令 執(zhí) 行 的 條 件 碼I為 0時 , 偏 移 量 為 12 位 立 即 數(shù) , 為 1時 ,偏 移 量 為 寄 存 器 移位P表 示 前 /后 變 址U表 示 加 /減W表 示 回 寫 為 指 令 的 尋 址 方 式Rd為 源 /目 標(biāo) 寄 存 器Rn為 基 址 寄 存 器L用 于 區(qū) 別 加 載 ( L為 1)或 存 儲 ( L為 0)S為 1表 示 有 符 號 訪 問 ,為 0表 示 無 符 號 訪 問H為 1表 示 半 字 訪 問 , 為0表 示 字 節(jié) 訪 問 LDR和 STR指 令 應(yīng) 用 示 例 :1.加
45、 載 /存 儲 字 和 無 符 號 字 節(jié) 指 令LDRR2,R5;將R5指 向 地 址 的 字 數(shù) 據(jù) 存 入R2STRR1,R0,#0 x04;將R1的 數(shù) 據(jù) 存 儲 到R0+0 x04地 址LDRBR3,R2,#-1 ;將R2指 向 地 址 的 字 節(jié) 數(shù) 據(jù) 存 入R3,R2R21STRBR0,R3,-R8 ASR 2 ;R0-R3-R8/4,存 儲R0的 最 低 有 效 字 節(jié)2.加 載 /存 儲 半 字 和 有 符 號 字 節(jié) 指 令LDRSB R1,R0,R3;將R0+R3地 址 上 的 字 節(jié) 數(shù) 據(jù) 存 入R1,;高24位 用 符 號 擴(kuò) 展LDRH R6,R2,#2;將R
46、2指 向 地 址 的 半 字 數(shù) 據(jù) 存 入R6, 高16位 用0擴(kuò) 展 ;讀 出 后 ,R2=R2+2STRH R1,R0,#2!;將R1的 半 字 數(shù) 據(jù) 保 存 到R0+2地 址 ,;只 修 改 低2字 節(jié) 數(shù) 據(jù) , 然 后R0=R0+2 ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲 n ( 3) LDR和 STR -雙 字 : 加 載 /存 儲 兩 個 相鄰 的 寄 存 器 到 相 鄰 的 存 儲 地 址 , 64位 雙 字 。其 句 法 有 4種 :n Op cond D Rd, Rn 零 偏 移n Op cond D Rd, Rn, offset ! 前 索 引 偏
47、移n Op cond D Rd, label 程 序 相 對 偏 移n Op cond D T Rd, Rn, offset 后 索 引偏 移 ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲 其 中 : Rd 加 載 /存 儲 寄 存 器 中 的 一 個 , 另 一 個 是 R( d+1) 。 Rd必 須 是 偶 數(shù) 寄 存 器 , 且 不 是 R14。 Rn 除 非 指 令 為 零 偏 移 , 或 不 帶 寫 回 的 前 索 引 , 否 則 , Rn不 允 許 與 Rd和 R( d+1) 相 同 。label label必 須 是 在 當(dāng) 前 指 令 的 上 下 252字 節(jié) 范
48、圍 內(nèi) 。例 如 :LDRD R6, R11 ; R6 R11, R7 R11+4STRD R4, R9, #24 ; R4 R9+24, R5 R9+28ARM存 儲 器 訪 問 指 令 單 寄 存 器 存 儲 助 記 符 說 明 操 作 條 件 碼 位 置LDMmode Rn!,reglist 多 寄 存 器 加 載 reglist Rn.,Rn(源 地 址 )回 寫 等 LDMcondmodeSTMmode Rn!,reglist 多 寄 存 器 存 儲 Rn. reglist,Rn( 目 的 地 址 ) 回 寫 等 STMcondmodeARM存 儲 器 訪 問 指 令 多 寄 存 器
49、 存 取 多 寄 存 器 加 載 /存 儲 指 令 可 以 實 現(xiàn) 在 一 組 寄 存 器 和 一 塊 連 續(xù) 的 內(nèi) 存 單 元之 間 傳 輸 數(shù) 據(jù) 。 LDM為 加 載 多 個 寄 存 器 ; STM為 存 儲 多 個 寄 存 器 。 允 許 一條 指 令 傳 送 16個 寄 存 器 的 任 何 子 集 或 所 有 寄 存 器 。 它 們 主 要 用 于 現(xiàn) 場 保 護(hù) 、數(shù) 據(jù) 復(fù) 制 、 常 數(shù) 傳 遞 等 。 ARM存 儲 器 訪 問 指 令 多 寄 存 器 存 取 多 寄 存 器 加 載 /存 儲 指 令 格 式 如 下 : LDMcond Rn!,reglist ;STMcon
50、d Rn!,reglist ;cond: 指 令 執(zhí) 行 的 條 件 ;模 式 : 控 制 地 址 的 增 長 方 式 , 一 共 有 8種 模 式 ;!: 表 示 在 操 作 結(jié) 束 后 , 將 最 后 的 地 址 寫 回 Rn中 ;reglist : 表 示 寄 存 器 列 表 , 可 以 包 含 多 個 寄 存 器 , 它 們 使 用 “ ,” 隔 開 , 如R1,R2,R6-R9, 寄 存 器 由 小 到 大 排 列 ;: 可 選 后 綴 。 允 許 在 用 戶 模 式 或 系 統(tǒng) 模 式 下 使 用 。 它 有 以 下 兩 個 功 能 : 1) 若 op是 LDM且 寄 存 器 列
51、表 包 含 R15時 , 那 么 除 了 正 常 的 多 寄 存 器 傳 送 外 ,還 將 SPSR也 復(fù) 制 到 CPSR中 。 這 用 于 異 常 處 理 返 回 , 僅 在 異 常 模 式 下 使 用 。2) 數(shù) 據(jù) 傳 入 或 傳 出 的 是 用 戶 模 式 下 的 寄 存 器 , 而 不 是 當(dāng) 前 模 式 的 寄 存 器 。 ARM存 儲 器 訪 問 指 令 多 寄 存 器 存 取LDM和 STM多 寄 存 器 加 載 /存 儲 指 令 編 碼指 令 執(zhí) 行 的 條 件 碼S對 應(yīng) 于 指 令 中 的 ” ” 符 號P表 示 前 /后 變 址U表 示 加 /減W表 示 回 寫 寄
52、存 器 列 表Rn為 基 址 寄 存 器L用 于 區(qū) 別 加 載 ( L為 1)或 存 儲 ( L為 0) ARM存 儲 器 訪 問 指 令 多 寄 存 器 存 取 多 寄 存 器 加 載 /存 儲 指 令 的 8種 模 式 如 下 表 所 示 , 右 邊 四 種 為 堆 棧操 作 、 左 邊 四 種 為 數(shù) 據(jù) 傳 送 操 作 。模 式 說 明 模 式 說 明IA 每 次 傳 送 后 地 址 加 4 FD 滿 遞 減 堆 棧IB 每 次 傳 送 前 地 址 加 4 ED 空 遞 減 堆 棧DA 每 次 傳 送 后 地 址 減 4 FA 滿 遞 增 堆 棧DB 每 次 傳 送 前 地 址 減
53、4 EA 空 遞 增 堆 棧數(shù) 據(jù) 塊 傳 送 操 作 堆 棧 操 作 進(jìn) 行 數(shù) 據(jù) 復(fù) 制 時 , 先 設(shè) 置 好 源 數(shù) 據(jù) 指 針 和 目 標(biāo) 指 針 , 然 后 使 用 塊拷 貝 尋 址 指 令 LDMIA/STMIA、 LDMIB/STMIB、 LDMDA/STMDA、LDMDB/STMDB進(jìn) 行 讀 取 和 存 儲 。 進(jìn) 行 堆 棧 操 作 操 作 時 , 要 先 設(shè) 置 堆 棧 指 針 ( SP) , 然 后 使 用 堆 棧尋 址 指 令 STMFD/LDMFD 、 STMED/LDMED、 STMFA/LDMFA和STMEA/LDMEA實 現(xiàn) 堆 棧 操 作 。 ARM存
54、儲 器 訪 問 指 令 多 寄 存 器 存 取數(shù) 據(jù) 塊 傳 送 指 令 操 作過 程 如 右 圖 所 示 , 其中 R1為 指 令 執(zhí) 行 前 的基 址 寄 存 器 , R1 則為 指 令 執(zhí) 行 后 的 基 址寄 存 器 。 R5R6R7R1 R1 指 令 STMIA R1!,R5-R74008H4004H4000H4014H4010H400CH R5R6R7R1 R1 指 令 STMDA R1!,R5-R74008H4004H4000H4014H4010H400CH R5R6R7R1 R1 指 令 STMIB R1!,R5-R74008H4004H4000H4014H4010H400CH
55、R5R6R7R1 R1 指 令 STMDB R1!,R5-R74008H4004H4000H4014H4010H400CH ARM存 儲 器 訪 問 指 令 多 寄 存 器 存 取數(shù) 據(jù) 塊 傳 送存 儲 堆 棧 操 作壓 棧 說 明 數(shù) 據(jù) 塊 傳 送加 載 堆 棧 操 作出 棧 說 明STMDA STMED 空 遞 減 LDMDA LDMFA 滿 遞 減STMIA STMEA 空 遞 增 LDMIA LDMFD 滿 遞 增STMDB STMFD 滿 遞 減 LDMDB LDMEA 空 遞 減STMIB STMFA 滿 遞 增 LDMIB LDMED 空 遞 增;使 用 數(shù) 據(jù) 塊 傳 送
56、指 令 進(jìn) 行 堆 棧 操 作 STMDAR0!,R5-R6. . .LDMIBR0!,R5-R6;使 用 堆 棧 指 令 進(jìn) 行 堆 棧 操 作STMEDR13!,R5-R6. . .LDMEDR13!,R5-R6 兩 段 代 碼 的 執(zhí) 行 結(jié) 果 是 一 樣 的 , 但 是 使 用 堆 棧 指 令 的 壓 棧 和 出 棧操 作 編 程 很 簡 單 ( 只 要 前 后 一 致 即 可 ) , 而 使 用 數(shù) 據(jù) 塊 指 令 進(jìn) 行 壓 棧和 出 棧 操 作 則 需 要 考 慮 空 與 滿 、 加 與 減 對 應(yīng) 的 問 題 。 堆 棧 操 作 ( 詳 見 “ 4.1 尋 址 方 式 堆 棧
57、 尋 址 ” ) 和 數(shù) 據(jù) 塊 傳 送 指 令類 似 , 也 有 4種 模 式 , 它 們 之 間 的 關(guān) 系 如 下 表 所 示 : 助 記 符 說 明 操 作 條 件 碼 位 置SWP Rd,Rm,Rn 寄 存 器 和 存 儲 器 字 數(shù)據(jù) 交 換 Rd Rn, Rn Rm (Rn Rd或 Rm) SWPcondSWPB Rd,Rm,Rn 寄 存 器 和 存 儲 器 字 節(jié)數(shù) 據(jù) 交 換 Rd Rn, Rn Rm (Rn Rd或 Rm) SWPcondBARM存 儲 器 訪 問 指 令 寄 存 器 和 存 儲 器 交 換 指 令 SWP指 令 用 于 將 一 個 內(nèi) 存 單 元 (該 單
58、 元 地 址 放 在 寄 存 器 Rn中 )的 內(nèi) 容 讀取 到 一 個 寄 存 器 Rd中 , 同 時 將 另 一 個 寄 存 器 Rm的 內(nèi) 容 寫 入 到 該 內(nèi) 存 單 元中 。 使 用 SWP可 實 現(xiàn) 信 號 量 操 作 。 指 令 格 式 如 下 :SWPcondB Rd,Rm,Rn 其 中 , B為 可 選 后 綴 , 若 有 B, 則 交 換 字 節(jié) , 否 則 交 換 32位 字 ; Rd用 于保 存 從 存 儲 器 中 讀 入 的 數(shù) 據(jù) ; Rm的 數(shù) 據(jù) 用 于 存 儲 到 存 儲 器 中 , 若 Rm與 Rd相 同 , 則 為 寄 存 器 與 存 儲 器 內(nèi) 容 進(jìn)
59、 行 互 換 ; Rn為 要 進(jìn) 行 數(shù) 據(jù) 交 換 的 存 儲 器地 址 , Rn不 能 與 Rd和 Rm相 同 。 ARM存 儲 器 訪 問 指 令 寄 存 器 和 存 儲 器 交 換 指 令SWP和 SWPB寄 存 器 和 存 儲 器 交 換 指 令 編 碼指 令 執(zhí) 行 的 條 件 碼B用 于 區(qū) 別 無 符 號 字節(jié) ( B為 1) 或 字 ( B為 0) Rm源 寄 存 器Rd目 標(biāo) 寄 存 器Rn為 基 址 寄 存 器SWP指 令 應(yīng) 用 示 例 : SWPR1,R1,R0;將 R1的 內(nèi) 容 與 R0指 向 的 存 儲 單 元 的 內(nèi) 容 進(jìn) 行 互 換 SWPBR1,R2,R
60、0;將 R0指 向 的 存 儲 單 元 低 字 節(jié) 數(shù) 據(jù) 讀 取 到 R1中;(高 24位 清 零 ), 并 將 R2的 內(nèi) 容 寫 入 到 該 內(nèi) 存 單 元 中;(最 低 字 節(jié) 有 效 ) ARM指 令 目 錄1.指 令 格 式2.條 件 碼3.存 儲 器 訪 問 指 令4.數(shù) 據(jù) 處 理 指 令5.乘 法 指 令6.ARM分 支 指 令7.雜 項 指 令8.偽 指 令 4.2 指 令 集 介 紹n ARM指 令 集 ARM數(shù) 據(jù) 處 理 指 令 數(shù) 據(jù) 處 理 指 令 大 致 可 分 為 3類 : 數(shù) 據(jù) 傳 送 指 令 ;算 術(shù) 邏 輯 運 算 指 令 ;比 較 指 令 。 數(shù) 據(jù)
61、 處 理 指 令 只 能 對 寄 存 器 的 內(nèi) 容 進(jìn) 行 操 作 ,而 不 能 對 內(nèi) 存 中 的 數(shù) 據(jù) 進(jìn) 行 操 作 。 所 有 ARM數(shù) 據(jù) 處理 指 令 均 可 選 擇 使 用 S后 綴 , 以 使 指 令 影 響 狀 態(tài) 標(biāo)志 。 ARM數(shù) 據(jù) 處 理 指 令 指 令 編 碼指 令 執(zhí) 行 的 條 件 碼I用 于 區(qū) 別 立 即 數(shù) ( I為 1) 和 寄 存 器 移 位( I為 0)opcode數(shù) 據(jù) 處 理 指令 操 作 碼 第 二 操 作 數(shù)Rd目 標(biāo) 寄 存 器Rn第 一 操 作 數(shù) 寄 存 器S設(shè) 置 條 件 碼 , 與 指 令中 的 S位 對 應(yīng)帶 進(jìn) 位 加 法A
62、DC0101 帶 進(jìn) 位 減 法 指 令SBC0110 帶 進(jìn) 位 逆 向 減 法 指 令RSC0111 位 測 試 指 令TST1000 相 等 測 試 指 令TEQ1001 比 較 指 令CMP1010 負(fù) 數(shù) 比 較 指 令CMN1011 邏 輯 或 操 作 指 令ORR1100 數(shù) 據(jù) 傳 送MOV1101 位 清 除 指 令BIC1110 數(shù) 據(jù) 非 傳 送MVN1111 加 法 運 算 指 令A(yù)DD0100 逆 向 減 法 指 令RSB0011 減 法 運 算 指 令SUB0010 邏 輯 異 或 操 作 指 令EOR0001 邏 輯 與 操 作 指 令A(yù)ND0000 說 明指 令
63、 助 記 符操 作 碼 opcode操 作 碼 功 能 表 助 記 符 說 明 操 作 條 件 碼 位 置MOV Rd,operand2 數(shù) 據(jù) 傳 送 Rd operand2 MOVcondSMVN Rd,operand2 數(shù) 據(jù) 非 傳 送 Rd (operand2) MVNcondSARM數(shù) 據(jù) 處 理 指 令 數(shù) 據(jù) 傳 送 把 一 個 寄 存 器 中 的 值 ( 或 者 經(jīng) 過 算 術(shù) 運 算 的 值 ) 或 一 個 立 即 數(shù) 移 到 另 外 一個 寄 存 器 中 。注 : 當(dāng) 后 綴 S時 , 這 些 指 令 根 據(jù) 結(jié) 果 更 新 標(biāo) 志 N和 Z, 在 計 算 Operand
64、2時 更 新 標(biāo)志 C, 不 影 響 標(biāo) 志 V。 助 記 符 說 明 操 作 條 件 碼 位 置MOV Rd,operand2 數(shù) 據(jù) 傳 送 Rd operand2 MOVcondSMVN Rd,operand2 數(shù) 據(jù) 非 傳 送 Rd (operand2) MVNcondSARM數(shù) 據(jù) 處 理 指 令 數(shù) 據(jù) 傳 送 MOV指 令 將 8位 圖 立 即 數(shù) ( 參 看 “ 第 2操 作 數(shù) : #immed_8r常 數(shù) 表達(dá) 式 ” ) 或 寄 存 器 傳 送 到 目 標(biāo) 寄 存 器 ( Rd) , 可 用 于 移 位 運 算 等 操 作 。指 令 格 式 如 下 : MOVcondS
65、 Rd,operand2 MOV指 令 舉 例 如 下 : MOVR11,#0 xF000000B;R1= 0 xF000000B MOVR0,R1;R0=R1 MOVSR3,R1,LSL #2;R3=R12, 并 影 響 標(biāo) 志 位 MOVPC,LR;PC=LR, 子 程 序 返 回 助 記 符 說 明 操 作 條 件 碼 位 置MOV Rd,operand2 數(shù) 據(jù) 傳 送 Rd operand2 MOVcondSMVN Rd,operand2 數(shù) 據(jù) 非 傳 送 Rd (operand2) MVNcondSARM數(shù) 據(jù) 處 理 指 令 數(shù) 據(jù) 傳 送 MVN指 令 將 8位 圖 立 即
66、數(shù) ( 參 看 “ 第 2操 作 數(shù) : #immed_8r常 數(shù)表 達(dá) 式 ” ) 或 寄 存 器 ( operand2) 按 位 取 反 后 傳 送 到 目 標(biāo) 寄 存 器( Rd) , 因 為 其 具 有 取 反 功 能 , 所 以 可 以 裝 載 范 圍 更 廣 的 立 即 數(shù) 。 指 令 格式 如 下 : MVNcondS Rd,operand2 MVN指 令 舉 例 如 下 : MVNR1,#0 xFF;R1=0 xFFFFFF00 MVNR1,R2;將 R2按 位 取 反 , 結(jié) 果 存 到 R1 助 記 符 說 明 操 作 條 件 碼 位 置ADD Rd, Rn, operand2 加 法 運 算 指 令 Rd Rn+operand2 ADDcondSSUB Rd, Rn, operand2 減 法 運 算 指 令 Rd Rn-operand2 SUBcondSRSB Rd, Rn, operand2 逆 向 減 法 指 令 Rd operand2-Rn RSBcondSADC Rd, Rn, operand2 帶 進(jìn) 位 加 法 Rd Rn+operand2+Carr
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案