安徽理工大學計算機教程-Thumb指令系統(tǒng)_第1頁
安徽理工大學計算機教程-Thumb指令系統(tǒng)_第2頁
安徽理工大學計算機教程-Thumb指令系統(tǒng)_第3頁
安徽理工大學計算機教程-Thumb指令系統(tǒng)_第4頁
安徽理工大學計算機教程-Thumb指令系統(tǒng)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計18086/80888086/8088和和ARMARM核核匯編語言程序設(shè)計匯編語言程序設(shè)計 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計219.2 Thumb19.2 Thumb存儲器訪問指令存儲器訪問指令19.1 19.1 概述概述19.3 Thumb19.3 Thumb數(shù)據(jù)處理指令數(shù)據(jù)處理指令19.4 Thumb19.4 Thumb分支指令分支指令

2、19.5 Thumb19.5 Thumb雜項指令雜項指令19.6 Thumb19.6 Thumb偽指令偽指令 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計319.1 19.1 概述概述 說明:Thumb指令的格式與使用方式與ARM指令集類似,而且使用并不是很頻繁,建議這部分內(nèi)容選修。 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計419.2 Thumb19.2 Thumb存儲器訪問指令存儲器訪問指令

3、19.1 19.1 概述概述19.3 Thumb19.3 Thumb數(shù)據(jù)處理指令數(shù)據(jù)處理指令19.4 Thumb19.4 Thumb分支指令分支指令19.5 Thumb19.5 Thumb雜項指令雜項指令19.6 Thumb19.6 Thumb偽指令偽指令 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計5 Thumb存儲器訪問指令助記符助記符說明說明操作操作影響標志影響標志LDR/STR Rd,addressing 加載加載/ /存儲字數(shù)據(jù)存儲字數(shù)據(jù)RdRdRn,#immed_5Rn,#immed

4、_544,RdRd、RnRn為為R0R0R7R7無無LDRH/STRH Rd,addressing 加載加載/ /存儲無符號半存儲無符號半字數(shù)據(jù)字數(shù)據(jù)RdRdRn,#immed_5Rn,#immed_52 2 ,RdRd、RnRn為為R0R0R7R7無無LDRB/STRB Rd,addressing加載加載/ /存儲無符號字存儲無符號字節(jié)數(shù)據(jù)節(jié)數(shù)據(jù)RdRdRn,#immed_5Rn,#immed_51 1 ,RdRd、RnRn為為R0R0R7R7無無LDRSH Rd,addressing 加載有符號半字數(shù)據(jù)加載有符號半字數(shù)據(jù)RdRdRn,RmRn,Rm,RdRd、RnRn、RmRm為為R0R0

5、R7R7無無LDRSB Rd,addressing加載有符號字節(jié)數(shù)據(jù)加載有符號字節(jié)數(shù)據(jù)RdRdRn,RmRn,Rm,RdRd、RnRn、RmRm為為R0R0R7R7無無單寄存器訪問指令 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計6 Thumb存儲器訪問指令LDR和STR加載/存儲指令 根據(jù)指令的尋址方式不同,可以分為以下三類: 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計7 單寄存器訪問指令 以

6、這種尋址方式對存儲器訪問時,存儲器的地址以一個寄存器的內(nèi)容為基址,在偏移一個立即數(shù)后指明。指令格式如下: 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計8 單寄存器訪問指令指令執(zhí)行的條件碼:0110b:LDR/STR指令;1000b:LDRH/STRH指令;0111b:LDRB/STRB指令;L用于區(qū)別加載(L為1)或存儲(L為0)Immed_5:5位無符號立即數(shù)偏移Rn:基址寄存器Rd:源或目標寄存器 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言

7、基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計9 單寄存器訪問指令立即數(shù)偏移尋址注意:進行字數(shù)據(jù)訪問時,必須保證傳送地址為進行字數(shù)據(jù)訪問時,必須保證傳送地址為3232位位對齊。進行半字數(shù)據(jù)訪問時,必須保證傳送地址為對齊。進行半字數(shù)據(jù)訪問時,必須保證傳送地址為1616位位對齊。對齊。 應(yīng)用示例: 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計10 單寄存器訪問指令 這種尋址方式是以一個寄存器的內(nèi)容為基址,以另一個寄存器的內(nèi)容為偏移量,兩者相加作為存儲器的地址。指令格式如下: 計算機科學與技術(shù)系計

8、算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計11 單寄存器訪問指令指令執(zhí)行的條件碼:00b:LDR/STR指令;01b:LDRH/STRH指令;10b:LDRB/STRB指令;L用于區(qū)別加載(L為1)或存儲(L為0)Rm:偏移量寄存器Rn:基址寄存器Rd:源或目標寄存器說明:當opcode位為11b時 , L 位 為 0 代 表 指 令“LDRSB“,L位為1代表指令“LDRSH” 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程

9、序設(shè)計設(shè)計12 單寄存器訪問指令注意:進行字數(shù)據(jù)訪問時,必須保證傳送地址為32位對齊。進行半字數(shù)據(jù)訪問時,必須保證傳送地址為16位對齊。 應(yīng)用示例: 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計13 單寄存器訪問指令 這種尋址方式是以這種尋址方式是以PCPC或或SPSP寄存器的內(nèi)容為基址,寄存器的內(nèi)容為基址,以一個立即數(shù)為偏移量,兩者相加作為存儲器的地址。以一個立即數(shù)為偏移量,兩者相加作為存儲器的地址。指令格式如下:指令格式如下: 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1

10、章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計14 單寄存器訪問指令L:用于區(qū)別加載(L為1)或存儲(L為0)Rd:目標或源寄存器immed8:偏移量PC相對偏移LDR指令編碼SP相對偏移LDR/STR指令編碼 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計15 單寄存器訪問指令注意:以PC作為基地址的相對偏移尋址指令只有LDR,而沒有STR指令。 應(yīng)用示例: 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識

11、20章章 ARM匯編程序匯編程序設(shè)計設(shè)計16 Thumb存儲器訪問指令 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計17 寄存器入棧及出棧指令指令編碼指令格式R R用于區(qū)別操作寄存器中用于區(qū)別操作寄存器中是否有是否有LR/PCLR/PC寄存器寄存器(有則(有則R R為為1 1,否則為,否則為0 0) 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計18 寄存器入棧及出棧指令指令格式 應(yīng)用示例: PUS

12、HR0-R7,LR; ;將低寄存器將低寄存器R0R0R7R7全部入棧,全部入棧,;LR;LR也入棧也入棧 POPR0-R7,PC; ;將堆棧中的數(shù)據(jù)彈出到將堆棧中的數(shù)據(jù)彈出到; ;低寄存器低寄存器R0R0R7R7及及PCPC中中 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計1919.2 Thumb19.2 Thumb存儲器訪問指令存儲器訪問指令19.1 19.1 概述概述19.3 Thumb19.3 Thumb數(shù)據(jù)處理指令數(shù)據(jù)處理指令19.4 Thumb19.4 Thumb分支指令分支指令19.

13、5 Thumb19.5 Thumb雜項指令雜項指令19.6 Thumb19.6 Thumb偽指令偽指令 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計20 Thumb數(shù)據(jù)處理指令 Thumb數(shù)據(jù)處理指令涵蓋了編譯器需要的大多數(shù)操作。大部分的Thumb數(shù)據(jù)處理指令采用2地址格式,不能在單指令中同時完成一個操作數(shù)的移位及一個ALU操作。所以數(shù)據(jù)處理操作比ARM狀態(tài)的更少,并且訪問寄存器R8R15受到限制。數(shù)據(jù)處理指令分為兩類: 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編

14、語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計21 Thumb數(shù)據(jù)處理指令數(shù)據(jù)傳送指令助記符助記符操作操作影響標志影響標志MOV Rd,#exprMOV Rd,#exprRdRdexprexpr,RdRd為為R0R0R7R7影響影響N N、Z ZMOV Rd,RmMOV Rd,RmRdRdRmRm,RdRd、RmRm均可為均可為R0R0R15R15RdRd和和RmRm均為均為R0R0R7R7時,時,影響影響N N、Z Z,清零,清零C C、V V MVN Rd,RmMVN Rd,RmRdRd(Rm) (Rm) ,RdRd、RmRm均為均為R0R0R7R7影響影響N N、

15、Z ZNEG Rd,RmNEG Rd,RmRdRd(-Rm) (-Rm) ,RdRd、RmRm均為均為R0R0R7R7影響影響N N、Z Z、C C、V V 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計22 MOV指令將8位立即數(shù)或寄存器傳送到目標寄存器中。其指令格式如下: 數(shù)據(jù)傳送指令MOVMOVMOVRd,#exprRd,#exprMOVMOVRd,RmRd,Rm其中:其中:RdRd 目標寄存器。目標寄存器。MOV Rd,#exprMOV Rd,#expr時,時,RdRd必須在必須在R0R0

16、R7R7之間。之間。 exper exper 8 8位立即數(shù),即位立即數(shù),即0 0255255。 RmRm 源寄存器。為源寄存器。為R0R0R15R15。指令編碼(立即數(shù)傳送)指令編碼(寄存器傳送) 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計23 數(shù)據(jù)傳送指令MOV注意:注意: “MOV Rd,#expr”指令會更新指令會更新NN和和Z Z標志,對標志標志,對標志C C和和V V無影響。無影響。 “MOV Rd,Rm”指令,若指令,若RdRd或或RmRm是高寄存器(是高寄存器(R8R8R15R

17、15),則標志),則標志不受影響,若不受影響,若RdRd或或RmRm都是低寄存器(都是低寄存器(R0R0R7R7),則更新標志),則更新標志NN和和Z Z,且,且清除標志清除標志C C和和V V。 應(yīng)用示例: 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計24 數(shù)據(jù)傳送指令MVNMVNMVNRd,RmRd,Rm其中:其中:RdRd目標寄存器。目標寄存器。MOV Rd,#exprMOV Rd,#expr時,時,RdRd必須在必須在R0R0R7R7之間。之間。 RmRm源寄存器。為源寄存器。為R0R0

18、R15R15。指令編碼 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計25 應(yīng)用示例: 數(shù)據(jù)傳送指令MVN 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計26 數(shù)據(jù)傳送指令NEG指令編碼 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計27 數(shù)據(jù)傳送指令NEG 應(yīng)用示例: 計算機科學與技術(shù)系計算機科學與技術(shù)

19、系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計28 Thumb數(shù)據(jù)處理指令算術(shù)邏輯運算指令 算術(shù)邏輯指令包括以下幾類:算術(shù)指令邏輯運算指令移位指令比較指令 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計29ADD指令將兩個數(shù)據(jù)相加,結(jié)果保存到Rd寄存器中。 算術(shù)運算指令A(yù)DDADD Rd,Rn,RmADD Rd,Rn,#expr3ADD Rd,#expr8其中:Rd 目標寄存器,必須在R0R7之間。 Rn 第1個操作數(shù)寄存器,必須在R

20、0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。 exper 3位立即數(shù),即07。 expr8 8位立即數(shù),即0255。低寄存器的ADD指令格式: 應(yīng)用示例: ADD R1,R1,R0; R1=R0+R1 ADD R1,R1,#7; R1=R1+7 ADD R1,#200; R1=R1+200 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計30ADD指令將兩個數(shù)據(jù)相加,結(jié)果保存到Rd寄存器中。 算術(shù)運算指令A(yù)DDADD Rd,Rm其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器。 Rm

21、第2個操作數(shù)寄存器。高或低寄存器的ADD指令格式: 應(yīng)用示例: ADD R1,R10; R1=R1+R10 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計31ADD指令將兩個數(shù)據(jù)相加,結(jié)果保存到Rd寄存器中。 算術(shù)運算指令A(yù)DDADD SP,#expr其中:SP 目標寄存器,也是第一個操作數(shù)寄存器。 expr 立即數(shù),在-508+508之間的4的整數(shù)倍的數(shù)。SP操作的ADD指令格式: 應(yīng)用示例: ADD SP,#-500;SP=SP-500 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-2

22、2第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計32SUB指令將兩個數(shù)據(jù)相減,結(jié)果保存到Rd寄存器中。 算術(shù)運算指令SUBSUB Rd,Rn,RmSUB Rd,Rn,#expr3SUB Rd,#expr8其中:Rd 目標寄存器,必須在R0R7之間。 Rn 第1個操作數(shù)寄存器,必須在R0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。 exper 3位立即數(shù),即07。 expr8 8位立即數(shù),即0255。低寄存器的SUB指令格式: 應(yīng)用示例: SUB R1,R1,R0; R1=R1-R0 SUB R1,R1,#7; R1=R1-7 SUB R1,

23、#200; R1=R1-200 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計33SUB指令將兩個數(shù)據(jù)相減,結(jié)果保存到Rd寄存器中。 算術(shù)運算指令SUBSUB SP,#expr其中:SP 目標寄存器,也是第一個操作數(shù)寄存器。 expr 立即數(shù),在-508+508之間的4的整數(shù)倍的數(shù)。SP操作的SUB指令格式: 應(yīng)用示例: SUB SP,#-380;SP=SP-380 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編

24、程序設(shè)計設(shè)計34 ADC指令將Rm的值相加,再加上CPSR中的C條件標志位,結(jié)果保存到Rd寄存器。 算術(shù)運算指令A(yù)DCADC Rd, Rm其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。ADC指令格式: 應(yīng)用示例(64位加法): ADD R0,R2 ADC R1,R3;(R1、R2)=(R1、R0)+(R3、R2) 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計35 SBC指令用寄存器Rd減去Rm,再減去CPSR中的C條件標志位的

25、非,結(jié)果保存到Rd寄存器。 算術(shù)運算指令SBCSBC Rd, Rm其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。SBC指令格式: 應(yīng)用示例(64位減法): SUB R0,R2 SBC R1,R3;(R1、R2)=(R1、R0)-(R3、R2) 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計36 MUL乘法指令用寄存器Rd乘以Rm,結(jié)果保存到Rd寄存器。 算術(shù)運算指令MULMUL Rd, Rm其中:Rd 目標寄存器,也是第一個操作

26、數(shù)寄存器,必須在R0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。MUL指令格式: 應(yīng)用示例(64位減法): MUL R0,R1;R0=R0R1 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計37 AND指令將寄存器Rd的值與寄存器Rm的值按位作邏輯“與”操作,結(jié)果保存到Rd寄存器中。 邏輯運算指令A(yù)NDADD Rd, Rm其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。AND指令格式: 應(yīng)用示例: MOV R1,#0

27、 x0F AND R0,R1; R0=R0 & R1,清零R0高24位 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計38 ORR指令將寄存器Rd的值與寄存器Rn的值按位作邏輯“或”操作,結(jié)果保存到Rd寄存器中。 邏輯運算指令ORRORR Rd, Rm其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。ORR指令格式: 應(yīng)用示例: MOV R1,#0 x0F ORR R0,R1; R0=R0 | R1,置位R0低4位 計算機科學與技術(shù)

28、系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計39 EOR指令將寄存器Rd的值與寄存器Rn的值按位作邏輯“異或”操作,結(jié)果保存到Rd寄存器中。 邏輯運算指令EOREOR Rd, Rm其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。EOR指令格式: 應(yīng)用示例: MOV R1,#0 x0F EOR R0,R1; R0=R0 R1,取反R0低4位 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 2

29、0章章 ARM匯編程序匯編程序設(shè)計設(shè)計40 BIC指令將寄存器Rd的值與寄存器Rm的值的反碼作邏輯“與”操作,結(jié)果保存到Rd寄存器中。 邏輯運算指令BICBIC Rd, Rm其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第2個操作數(shù)寄存器,必須在R0R7之間。BIC指令格式: 應(yīng)用示例: MOV R1,#0 x02 BIC R0,R1; 清零R0的第2位,其它位不變 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計41 ASR指令將數(shù)據(jù)算術(shù)右移,將符號位拷貝到左側(cè)空出的

30、位,移位結(jié)果保存到Rd寄存器中。 移位指令A(yù)SRASR Rd, RsASR Rd,Rm,#expr其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rs 寄存器控制移位中包含移位位數(shù)的寄存器,必須在R0R7之間 Rm 立即數(shù)移位的源寄存器,必須在R0R7之間 expr 立即數(shù)移位位數(shù),值為132ASR指令格式:ASR移位操作: 若移位位數(shù)為32,則Rd清零,最后移出的位保留在標志C中;若移位位數(shù)大于32,則Rd和標志C均被清零;若移位位數(shù)為0,則不影響C標志。 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章

31、ARM匯編程序匯編程序設(shè)計設(shè)計42 ASR指令將數(shù)據(jù)算術(shù)右移,將符號位拷貝到左側(cè)空出的位,移位結(jié)果保存到Rd寄存器中。 移位指令A(yù)SRASR Rd, RsASR Rd,Rm,#expr其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rs 寄存器控制移位中包含移位位數(shù)的寄存器,必須在R0R7之間 Rm 立即數(shù)移位的源寄存器,必須在R0R7之間 expr 立即數(shù)移位位數(shù),值為132ASR指令格式: 應(yīng)用示例: ASR R1,R2 ASR R3,R1,#2 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯

32、編程序匯編程序設(shè)計設(shè)計43 LSL指令將數(shù)據(jù)邏輯左移,空位清零,移位結(jié)果保存到Rd寄存器中。 移位指令LSLLSL Rd, RsLSL Rd,Rm,#expr其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rs 寄存器控制移位中包含移位位數(shù)的寄存器,必須在R0R7之間 Rm 立即數(shù)移位的源寄存器,必須在R0R7之間 expr 立即數(shù)移位位數(shù),值為131LSL指令格式: 若移位位數(shù)為32,則Rd清零,最后移出的位保留在標志C中;若移位位數(shù)大于32,則Rd和標志C均被清零;若移位位數(shù)為0,則不影響C標志。LSL移位操作:0 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10

33、-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計44 LSL指令將數(shù)據(jù)邏輯左移,空位清零,移位結(jié)果保存到Rd寄存器中。 移位指令LSLLSL Rd, RsLSL Rd,Rm,#expr其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rs 寄存器控制移位中包含移位位數(shù)的寄存器,必須在R0R7之間 Rm 立即數(shù)移位的源寄存器,必須在R0R7之間 expr 立即數(shù)移位位數(shù),值為131LSL指令格式: 應(yīng)用示例: LSL R6,R7 LSL R1,R6,#2 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言

34、基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計45 LSR指令將數(shù)據(jù)邏輯右移,空位清零,移位結(jié)果保存到Rd寄存器中。 移位指令LSRLSR Rd, RsLSR Rd,Rm,#expr其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rs 寄存器控制移位中包含移位位數(shù)的寄存器,必須在R0R7之間 Rm 立即數(shù)移位的源寄存器,必須在R0R7之間 expr 立即數(shù)移位位數(shù),值為132LSR指令格式: 若移位位數(shù)為32,則Rd清零,最后移出的位保留在標志C中;若移位位數(shù)大于32,則Rd和標志C均被清零;若移位位數(shù)為0,則不影響C標志。LSR移位操作:0 計算機科

35、學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計46 LSR指令將數(shù)據(jù)邏輯右移,空位清零,移位結(jié)果保存到Rd寄存器中。 移位指令LSRLSR Rd, RsLSR Rd,Rm,#expr其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rs 寄存器控制移位中包含移位位數(shù)的寄存器,必須在R0R7之間 Rm 立即數(shù)移位的源寄存器,必須在R0R7之間 expr 立即數(shù)移位位數(shù),值為132LSR指令格式: 應(yīng)用示例: LSR R3,R0 LSR R5,R2,#2 計算機科學與技術(shù)系計算機科學與技術(shù)

36、系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計47 ROR指令將數(shù)據(jù)循環(huán)右移,寄存器右側(cè)移出的位放入左側(cè)空出的位上,移位結(jié)果保存到Rd寄存器中。 移位指令RORROR Rd, Rs其中:Rd 目標寄存器,也是第一個操作數(shù)寄存器,必須在R0R7之間。 Rs 寄存器控制移位中包含移位位數(shù)的寄存器,必須在R0R7之間 ROR指令格式:ROR移位操作: 應(yīng)用示例: ROR R3,R0 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計48 CMP

37、指令使用寄存器Rn的值減去第二個操作數(shù)的值,根據(jù)操作的結(jié)果更新CPSR中的N、Z、C和V標志位。 比較指令CMPCMP Rn,RmCMP Rn,#epr其中:Rn 第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第二個操作數(shù)寄存器,必須在R0R7之間。 expr 立即數(shù),值為0255ROR指令格式: 應(yīng)用示例: CMP R1,#10;R1與10比較,設(shè)置相關(guān)標志位 CMP R1,R2 ;R1與R2比較,設(shè)置相關(guān)標志位 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計49 CMN指令使用寄存器Rn的值

38、加上寄存器Rm的值,根據(jù)操作的結(jié)果更新CPSR中的N、Z、C和V標志位。 比較指令CMNCMN Rn,Rm其中:Rn 第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第二個操作數(shù)寄存器,必須在R0R7之間。ROR指令格式: 應(yīng)用示例: CMN R0,R2 ;R0與-R2比較,設(shè)置相關(guān)標志位 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計50 TST指令將寄存器Rn的值與寄存器Rm的值按位作邏輯“與”操作,根據(jù)操作的結(jié)果更新CPSR中的N、Z、C和V標志位。 比較指令TSTTST Rn,Rm其中:R

39、n 第一個操作數(shù)寄存器,必須在R0R7之間。 Rm 第二個操作數(shù)寄存器,必須在R0R7之間。TST指令格式: 應(yīng)用示例: MOV R0,#0 x01 TST R1,R0 ;判斷R1的最低位是否為0 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計5119.2 Thumb19.2 Thumb存儲器訪問指令存儲器訪問指令19.1 19.1 概述概述19.3 Thumb19.3 Thumb數(shù)據(jù)處理指令數(shù)據(jù)處理指令19.4 Thumb19.4 Thumb分支指令分支指令19.5 Thumb19.5 Thum

40、b雜項指令雜項指令19.6 Thumb19.6 Thumb偽指令偽指令 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計52 Thumb分支指令助記符說明操作條件碼位置B label分支指令PClabelBcondBL label帶鏈接的分支指令LRPC-4,PClabel無BX Rm帶狀態(tài)切換的分支指令PClabel,切換處理器狀態(tài)無 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計53 B指令跳轉(zhuǎn)到指

41、定的地址執(zhí)行程序,它是Thumb指令集中的唯一有條件執(zhí)行指令。如果使用了條件執(zhí)行,那么跳轉(zhuǎn)范圍在-252+256字節(jié)內(nèi)。如果沒有使用條件執(zhí)行,那么跳轉(zhuǎn)范圍在2K內(nèi)。 分支指令BBcond label其中:label表示程序標號。B指令格式: 應(yīng)用示例: B WAITB ;WAITB標號在當前指令的2K范圍內(nèi) BEQ LOOP1 ;LOOP1標號在當前指令的-252+256范圍內(nèi) 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計54 BL指令在跳轉(zhuǎn)到指定地址執(zhí)行程序前,將下一條指令的地址拷貝到R14鏈

42、接寄存器中。 分支指令BLBL label其中:label 表示程序標號。BL指令格式:注意:由于BL指令通常需要大的地址范圍,很難用16位指令格式實現(xiàn),為此,Thumb采用兩條這樣的指令組合成22位半字偏移(符號擴展為32位),使指令轉(zhuǎn)移范圍為4MB。 應(yīng)用示例:反匯編代碼:ADDR0,R1BLRstInit 0 x1809 add r1,r1,r00 xf9dcf000 bl RstInit指令機器碼匯編指令32位長的機器碼 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計55 BX指令是帶狀態(tài)

43、切換的分支指令,跳轉(zhuǎn)地址由Rm指定,同時根據(jù)Rm的最低位的值切換處理器狀態(tài),當最低兩位均為0時,切換到ARM狀態(tài)。 分支指令BXBX Rm其中:Rm 保存有目標地址的寄存器。BX指令格式: 應(yīng)用示例: ADR R0,ArmFun;將ARM程序段地址存入R0 BX R0 ;跳至R0指定的地址,并切換到ARM狀態(tài) 計算機科學與技術(shù)系計算機科學與技術(shù)系 2021-10-22第第1章章 匯編語言基礎(chǔ)知識匯編語言基礎(chǔ)知識 20章章 ARM匯編程序匯編程序設(shè)計設(shè)計5619.2 Thumb19.2 Thumb存儲器訪問指令存儲器訪問指令19.1 19.1 概述概述19.3 Thumb19.3 Thumb數(shù)據(jù)處理指令數(shù)據(jù)處理指令19.4 Thumb19.4 Thumb分支指令分支指令19.5 Thumb19.5 Thumb雜項指令雜項指令19.6 Thumb19.6 Thumb偽指

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論