




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University第第3章章 ARM體系結(jié)構(gòu)體系結(jié)構(gòu)ARM指令系統(tǒng)指令系統(tǒng) 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityARM指令系統(tǒng)指令系統(tǒng) ARM 指令集ARM指令格式ARM尋址方式數(shù)據(jù)處理指令(數(shù)據(jù)處理指令(22種)種)跳轉(zhuǎn)指令(跳轉(zhuǎn)指令(4種)種)Load/Store指令(指令(16種)種)程序狀態(tài)寄存器指令(程序狀態(tài)寄存器指令(2種)種)協(xié)處理器指令(協(xié)處理器指令(5種)種)軟件中斷指令軟件中斷指令 (2種)種)軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南
2、大學(xué) Software School of Hunan University取指令取指令指令地址指令地址計算計算指令譯碼指令譯碼操作數(shù)操作數(shù)地址地址計算計算數(shù)據(jù)操作數(shù)據(jù)操作操作數(shù)操作數(shù)地址地址計算計算取操作數(shù)取操作數(shù)存操作數(shù)存操作數(shù)指令完成取指令完成取下一條下一條多操多操作數(shù)作數(shù)多結(jié)果多結(jié)果CPU訪問訪問存儲器或存儲器或I/OCPU內(nèi)部內(nèi)部操作操作機(jī)器指令機(jī)器指令 機(jī)器指令:機(jī)器指令:機(jī)器指令是機(jī)器指令是CPU能直接識別并執(zhí)行的指能直接識別并執(zhí)行的指令,每一個機(jī)器指令必須包含令,每一個機(jī)器指令必須包含CPU執(zhí)行所需的全部執(zhí)行所需的全部信息,信息,機(jī)器指令包括機(jī)器指令包括ARM指令集和指令集和T
3、humb指令集指令集 ;軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University機(jī)器指令要素 操作碼 (opcode) 源操作數(shù)引用 結(jié)果操作數(shù)引用 下一指令引用做何操作?做何操作?對誰做此操作?對誰做此操作?如何尋找被操作如何尋找被操作數(shù)據(jù)的寄存器或數(shù)據(jù)的寄存器或存儲器位置?存儲器位置?完成后到哪里去完成后到哪里去取下一個操作?取下一個操作?機(jī)器指令通常由操作碼和操作數(shù)兩部分組成,操作碼指出該指令所要完成的操作,即指令的功能,操作數(shù)指出參與運算的對象,以及運算結(jié)果所存放的位置等。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School
4、of Hunan UniversityARM指令的助記符指令的助記符 ARM指令在匯編程序中用助記符表示,一般指令在匯編程序中用助記符表示,一般ARM指令的助記符格式為:指令的助記符格式為: S , 其中:其中: 操作碼,如操作碼,如ADD表示算術(shù)加操作指令;表示算術(shù)加操作指令; 決定指令執(zhí)行的條件域;決定指令執(zhí)行的條件域; S 決定指令執(zhí)行是否影響決定指令執(zhí)行是否影響CPSR寄存器的值;寄存器的值; 目的寄存器;目的寄存器; 第一個操作數(shù),為寄存器;第一個操作數(shù),為寄存器; 第二個操作數(shù)。第二個操作數(shù)。例如,指令例如,指令 ADDEQS R1,R2,5 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) So
5、ftware School of Hunan UniversityARM指令的編碼格式指令的編碼格式 實際指令語法格式為:實際指令語法格式為: ADDEQS R0,R1,R2; 該指令的編碼格式為:該指令的編碼格式為: 3128272524212019161512110cond opcodeSRnRdop200000010100100010000000000000010軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University條件域條件域 幾乎所有的幾乎所有的ARM指令都可以根據(jù)當(dāng)前程序狀態(tài)寄指令都可以根據(jù)當(dāng)前程序狀態(tài)寄存器存器CPSR中標(biāo)志位的值
6、,有條件地執(zhí)行。中標(biāo)志位的值,有條件地執(zhí)行。 ARM指令的條件域指令的條件域有有16種類型。種類型。 condCPSR中標(biāo)志位中標(biāo)志位含含 義義EQZ置位置位相等相等NEZ清零清零不相等不相等CSC置位置位無符號數(shù)大于或等于無符號數(shù)大于或等于CCC清零清零無符號數(shù)小于無符號數(shù)小于MIN置位置位負(fù)數(shù)負(fù)數(shù)PLN清零清零正數(shù)或零正數(shù)或零VSV置位置位溢出溢出VCV清零清零未溢出未溢出HIC置位置位Z清零清零無符號數(shù)大于無符號數(shù)大于LSC清零清零Z置位置位無符號數(shù)小于或等于無符號數(shù)小于或等于GEN等于等于V帶符號數(shù)大于或等于帶符號數(shù)大于或等于LTN不等于不等于V帶符號數(shù)小于帶符號數(shù)小于GTZ清零且(清
7、零且(N等于等于V)帶符號數(shù)大于帶符號數(shù)大于LEZ置位或(置位或(N不等于不等于V)帶符號數(shù)小于或等于帶符號數(shù)小于或等于AL忽略忽略無條件執(zhí)行無條件執(zhí)行0000000100100011010001010110011110001001101010111100110111101111依版本不同,定義不同依版本不同,定義不同軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University第第4章章 ARM指令系統(tǒng)指令系統(tǒng) ARM 指令集ARM指令格式ARM尋址方式數(shù)據(jù)處理指令(數(shù)據(jù)處理指令(22種)種)跳轉(zhuǎn)指令(跳轉(zhuǎn)指令(4種)種)Load/Store指令(指
8、令(16種)種)程序狀態(tài)寄存器指令(程序狀態(tài)寄存器指令(2種)種)協(xié)處理器指令(協(xié)處理器指令(5種)種)軟件中斷指令軟件中斷指令 (2種)種)軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University尋址方式尋址方式 寄存器尋址寄存器尋址 立即數(shù)尋址立即數(shù)尋址 寄存器移位尋址寄存器移位尋址 寄存器間接尋址寄存器間接尋址 基址變址尋址基址變址尋址 多寄存器尋址多寄存器尋址 堆棧尋址堆棧尋址 塊復(fù)制尋址塊復(fù)制尋址 相對尋址相對尋址 尋址方式是根據(jù)指令中給出的地址碼字段來實現(xiàn)尋址方式是根據(jù)指令中給出的地址碼字段來實現(xiàn)尋找真實操作數(shù)地址的方式。尋找真實操作
9、數(shù)地址的方式。ARMARM處理器具有處理器具有9 9種基本尋址方式。種基本尋址方式。 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University寄存器尋址寄存器尋址寄存器尋址是指操作數(shù)的值在寄存器中,指令中的地址碼寄存器尋址是指操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號,指令執(zhí)行時直接取出寄存器值字段指出的是寄存器編號,指令執(zhí)行時直接取出寄存器值來操作。來操作。在寄存器尋址方式下,寄存器的值即為操作數(shù)。在寄存器尋址方式下,寄存器的值即為操作數(shù)。ARM指令普遍采用此種尋址方式。指令普遍采用此種尋址方式。 例:例: ADD R0,R1,
10、R2; R0=R1R2 該指令的執(zhí)行效果是將寄存器該指令的執(zhí)行效果是將寄存器R1和和R2的內(nèi)容相加,其結(jié)的內(nèi)容相加,其結(jié)果存放在果存放在R0寄存器中。寄存器中。 MOV R0,R1 ;R0R1 R0=R1該指令的執(zhí)行效果是將寄存器該指令的執(zhí)行效果是將寄存器R1的內(nèi)容傳送到寄存器的內(nèi)容傳送到寄存器R0中。中。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University寄存器尋址寄存器尋址 寄存器的值即為操作數(shù)寄存器的值即為操作數(shù)OPRi操作數(shù)操作數(shù)R0RiRn寄存器寄存器軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan
11、 UniversityADD R3,R3,#1ADD R3,R3,#1; R3 R3R3+1R3+1AND R8,R7,#0 xffAND R8,R7,#0 xff; R8 R8R77:0R77:0SUB R0SUB R0,R0R0,#1#1; R0R0R0-1R0-1 第第2 2個源操作數(shù)為一個立即數(shù),以個源操作數(shù)為一個立即數(shù),以“# #”為為前綴,十六進(jìn)制值以在前綴,十六進(jìn)制值以在“# #”后加后加“0 0 x x”表示。表示。 立即尋址是一種特殊的尋址方式,指令中在操立即尋址是一種特殊的尋址方式,指令中在操作碼字段后面的地址碼不是通常意義上的操作數(shù)地作碼字段后面的地址碼不是通常意義上的操
12、作數(shù)地址,而是址,而是操作數(shù)本身操作數(shù)本身。這樣的數(shù)稱為。這樣的數(shù)稱為操作數(shù),也稱操作數(shù),也稱為立即數(shù)為立即數(shù)。立即尋址立即尋址軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University這種這種尋址方式是尋址方式是ARMARM指令集特有的指令集特有的,第,第2 2個寄存器操作數(shù)在與第個寄存器操作數(shù)在與第1 1個操作數(shù)結(jié)合之前,先選擇進(jìn)行移位操作,再結(jié)合。個操作數(shù)結(jié)合之前,先選擇進(jìn)行移位操作,再結(jié)合。ADD R3,R2,R1,LSL #3; R3ADD R3,R2,R1,LSL #3; R3R2+8R2+8R1R1MOV R0,R2,LSL,#3MO
13、V R0,R2,LSL,#3; R0; R08 8R2R2寄存器移位尋址寄存器移位尋址移位操作在移位操作在ARM指令集中不作為單獨的指令使用指令集中不作為單獨的指令使用,ARM指令集共有指令集共有5種位移操作種位移操作。移位操作的移位操作的5種類型:種類型:LSL:邏輯左移:邏輯左移LSR:邏輯右移:邏輯右移ASR:算術(shù)右移:算術(shù)右移 ROR:循環(huán)右移:循環(huán)右移RRX:帶擴(kuò)展的循環(huán)右移,左端用:帶擴(kuò)展的循環(huán)右移,左端用c填充填充注:這種尋址方式是注:這種尋址方式是ARM指令集特有的指令集特有的軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan Universit
14、yARM指令集的指令集的5種位移操作種位移操作 LSL邏輯左移邏輯左移 :Rx,LSL 寄存器中字的低端空出的位補0 LSR邏輯右移邏輯右移 : Rx,LSR 寄存器中字的高端空出的位補0; ASR算術(shù)右移算術(shù)右移 :Rx,ASR 移位過程中保持符號位不變,若源操作數(shù)為正數(shù),則字的高端空出的位補0,否則補1;軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityARM指令集的指令集的5種位移操作種位移操作 ROR循環(huán)右移循環(huán)右移 :Rx,ROR 由字的低端移出的位填入字的高端空出的位; RRX帶擴(kuò)展的循環(huán)右移帶擴(kuò)展的循環(huán)右移:Rx,RRX 向右
15、移位,只移一位,左側(cè)空位由狀態(tài)寄存器C位填充,右側(cè)移出的位移進(jìn)狀態(tài)位C中。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University寄存器間接尋址寄存器間接尋址寄存器間接尋址指令中的寄存器間接尋址指令中的地址碼地址碼給出的是一個給出的是一個通用寄存器通用寄存器的編號,所需的操作數(shù)保存在寄存器指定地址的存儲單元的編號,所需的操作數(shù)保存在寄存器指定地址的存儲單元中,即中,即寄存器為操作數(shù)的地址指針寄存器為操作數(shù)的地址指針。寄存器中的值為操作數(shù)的物理地址寄存器中的值為操作數(shù)的物理地址, ,而實際的操作數(shù)存放在而實際的操作數(shù)存放在存儲器中存儲器中。 例:例
16、: LDR R0,R1 ;R0 R1 STR R0,R1 ;R1R0 寄存器間接尋址使用一個寄存器寄存器間接尋址使用一個寄存器(基址寄存器基址寄存器) 的值作為存儲的值作為存儲器的地址。第器的地址。第1條指令將寄存器條指令將寄存器R1指向的地址單元的內(nèi)容加指向的地址單元的內(nèi)容加載到寄存器載到寄存器R0中,第中,第2條指令將寄存器條指令將寄存器R0存入寄存器存入寄存器R1指指向的地址單元。向的地址單元。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University寄存器間接尋址寄存器間接尋址操作數(shù)操作數(shù)主存主存OPRi地址地址R0RiRn寄存器寄存器寄存
17、器中的值為操作數(shù)的物理地寄存器中的值為操作數(shù)的物理地址址軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University 基址變址尋址就是將寄存器(該寄存器一般為基址寄基址變址尋址就是將寄存器(該寄存器一般為基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加,形成操作數(shù)存器)的內(nèi)容與指令中給出的地址偏移量相加,形成操作數(shù)的有效地址?;纷冎穼ぶ酚糜谠L問基址附近的存儲單元,的有效地址。基址變址尋址用于訪問基址附近的存儲單元,常用于查表、數(shù)組操作。常用于查表、數(shù)組操作。基址加偏移基址加偏移尋址尋址 基址加變址基址加變址尋址尋址 前變址尋址方式:基址需加(或減)偏
18、移前變址尋址方式:基址需加(或減)偏移( (最大最大4KB4KB) )來計來計算訪問的地址。算訪問的地址。 例如:例如:LDR R0LDR R0,R1,#4 ,R1,#4 ;R0R0R1+4R1+4這條指令把基址這條指令把基址R1R1的內(nèi)容加上位移量的內(nèi)容加上位移量4 4后所指向的存儲單元的內(nèi)后所指向的存儲單元的內(nèi)容送到寄存器容送到寄存器R0R0中。中。后變址尋址方式:基址不帶偏移作為傳送的地址,傳送后變址尋址方式:基址不帶偏移作為傳送的地址,傳送后后自動變址自動變址。 例如:例如:LDR R0LDR R0,R1,#4 ,R1,#4 ; R0 R0R1R1 ; R1R1R1+4 R1+4 指令
19、指定一個基址寄存器,再指定另一個寄存器(變指令指定一個基址寄存器,再指定另一個寄存器(變址),其值作為位移加到基址上形成存儲器地址。址),其值作為位移加到基址上形成存儲器地址。例如:例如:LDR R0,R1,R2 ; R0LDR R0,R1,R2 ; R0R1+R2R1+R2這條指令將這條指令將R1R1和和R2R2的內(nèi)容相加得到操作數(shù)的地址,再的內(nèi)容相加得到操作數(shù)的地址,再將此地址單元的內(nèi)容送到將此地址單元的內(nèi)容送到R0R0。(基址)變址尋址(基址)變址尋址軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University基址變址尋址基址變址尋址OPA操作
20、數(shù)操作數(shù)主存主存ALUBR將寄存器的值與偏移量相加作為操作數(shù)的物理地址將寄存器的值與偏移量相加作為操作數(shù)的物理地址軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University多寄存器尋址多寄存器尋址多寄存器尋址是指一次可傳送幾個寄存器值,允許一條指多寄存器尋址是指一次可傳送幾個寄存器值,允許一條指令傳送令傳送16個寄存器的任何子集或所有寄存器。個寄存器的任何子集或所有寄存器。在多寄存器尋址方式中,一條指令可實現(xiàn)一組寄存器值的在多寄存器尋址方式中,一條指令可實現(xiàn)一組寄存器值的傳送。傳送。連續(xù)的寄存器間用連續(xù)的寄存器間用“”連接,否則用連接,否則用“,”
21、分隔。分隔。 例例: LDMIA R1,R0,R2,R5 ; R0R1 ; R2R1+4 ; R5R1+8 該指令的后綴該指令的后綴IA表示在每次執(zhí)行完加載表示在每次執(zhí)行完加載/存儲操作后,存儲操作后,R1按字長度增加,指令可將連續(xù)存儲單元的值送到按字長度增加,指令可將連續(xù)存儲單元的值送到R0,R2,R5寄存器中。寄存器中。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University堆棧尋址(堆棧尋址(1) 堆棧指針的移動方向稱之為堆棧指針的移動方向稱之為“堆棧的生長方堆棧的生長方向向”,ARMARM處理器可以支持處理器可以支持2 2種,如圖所示。種
22、,如圖所示。 向上生長:在向堆棧寫入數(shù)據(jù)后,堆棧指針的向上生長:在向堆棧寫入數(shù)據(jù)后,堆棧指針的值變大,也就是向高地址方向生長,稱之為遞增值變大,也就是向高地址方向生長,稱之為遞增堆棧(堆棧(Ascending Stack);); 向下生長:在向堆棧寫入數(shù)據(jù)后,堆棧指針的向下生長:在向堆棧寫入數(shù)據(jù)后,堆棧指針的值變小,也就是向低地址方向生長,稱之為遞減值變小,也就是向低地址方向生長,稱之為遞減堆棧(堆棧(Descending Stack)。)。 堆棧是一種數(shù)據(jù)結(jié)構(gòu),是一種按特定順序進(jìn)行存取的存儲區(qū),堆棧是一種數(shù)據(jù)結(jié)構(gòu),是一種按特定順序進(jìn)行存取的存儲區(qū),操作順序分為操作順序分為“先進(jìn)后出先進(jìn)后出”
23、(FILOFILO)和)和“后進(jìn)先出后進(jìn)先出”(LIFOLIFO),使用一個稱為),使用一個稱為“堆棧指針堆棧指針”的專用寄存器指示當(dāng)?shù)膶S眉拇嫫髦甘井?dāng)前的操作位置,堆棧指針總是指向棧頂。前的操作位置,堆棧指針總是指向棧頂。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University堆棧的生長方向堆棧的生長方向 內(nèi)部寄存器0 x000 x010 x1024SPR0R10 x?0 x?0 x?存儲器指針移動方向0 x?0 x?0 x?0 x?0 x?0 x?0 x?0 x?0 x1028地址0 x10240 x10200 x101C0 x10180 x
24、10140 x10100 x100C0 x10080 x10040 x1000堆棧數(shù) 據(jù)區(qū)棧頂棧底(a) 向上生長內(nèi)部寄存器0 x000 x010 x1024SPR0R10 x?0 x?0 x?存儲器指針移動方向0 x?0 x?0 x?0 x?0 x?0 x?0 x?0 x?0 x1028地址0 x10240 x10200 x101C0 x10180 x10140 x10100 x100C0 x10080 x10040 x1000堆棧數(shù) 據(jù)區(qū)棧底棧頂(b) 向下生長ARM9內(nèi)核ARM9內(nèi)核堆棧尋址(堆棧尋址(2) 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Huna
25、n University 除了要考慮堆棧指針的增長方向之外,還要考除了要考慮堆棧指針的增長方向之外,還要考慮堆棧指針指向的存儲單元是否已經(jīng)保存有堆棧數(shù)慮堆棧指針指向的存儲單元是否已經(jīng)保存有堆棧數(shù)據(jù),或者說在入棧時是否可以直接向堆棧指針指向據(jù),或者說在入棧時是否可以直接向堆棧指針指向的存儲單元寫入數(shù)據(jù)。的存儲單元寫入數(shù)據(jù)。 ARMARM處理器支持處理器支持2 2種情況,分別為種情況,分別為“滿堆棧滿堆?!焙秃汀翱斩褩?斩褩!?,如圖所示。,如圖所示。 滿堆棧:堆棧指針指向最后壓入的有效數(shù)據(jù)項,滿堆棧:堆棧指針指向最后壓入的有效數(shù)據(jù)項,稱為滿堆棧。這種堆棧的入棧操作要先調(diào)整指針再稱為滿堆棧。這種堆棧
26、的入棧操作要先調(diào)整指針再寫入數(shù)據(jù)。寫入數(shù)據(jù)。 空堆棧:堆棧指針指向下一個待壓入數(shù)據(jù)的空空堆棧:堆棧指針指向下一個待壓入數(shù)據(jù)的空位置,稱為空堆棧。這種堆棧的入棧操作要先寫入位置,稱為空堆棧。這種堆棧的入棧操作要先寫入數(shù)據(jù)再調(diào)整指針。數(shù)據(jù)再調(diào)整指針。堆棧尋址(堆棧尋址(3) 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University堆棧的滿空特性堆棧的滿空特性 內(nèi)部寄存器0 x000 x010 x1024SPR0R10 x?0 x?0 x?存儲器0 x?0 x?0 x?0 x?0 x?0 x?0 x?0 x?0 x1028地址0 x10240 x102
27、00 x101C0 x10180 x10140 x10100 x100C0 x10080 x10040 x1000堆棧數(shù) 據(jù)區(qū)棧頂棧底(a) 空堆棧(b) 滿堆棧ARM9內(nèi)核指向的存儲 單元為空內(nèi)部寄存器0 x000 x010 x1024SPR0R10 x?0 x?0 x?存儲器0 x?0 x?0 x?0 x?0 x?0 x?0 x?0 x?0 x1028地址0 x10240 x10200 x101C0 x10180 x10140 x10100 x100C0 x10080 x10040 x1000堆棧數(shù) 據(jù)區(qū)棧頂棧底ARM9內(nèi)核指向的存儲 單元非空堆棧尋址(堆棧尋址(4) 軟件學(xué)院軟件學(xué)院湖南
28、大學(xué)湖南大學(xué) Software School of Hunan University 綜合前面的堆棧生長方向和堆棧的滿空特性,可綜合前面的堆棧生長方向和堆棧的滿空特性,可以得到以得到4 4種堆棧類型,分別為:種堆棧類型,分別為: 滿遞增:堆棧通過增大存儲器的地址向上增長,滿遞增:堆棧通過增大存儲器的地址向上增長,堆棧指針指向內(nèi)含有有效數(shù)據(jù)項的最高地址。如指堆棧指針指向內(nèi)含有有效數(shù)據(jù)項的最高地址。如指令令LDMFALDMFA、STMFASTMFA等。等。 空遞增:堆棧通過增大存儲器的地址向上增長,空遞增:堆棧通過增大存儲器的地址向上增長,堆棧指針指向堆棧上的第一個空位置。如指令堆棧指針指向堆棧上
29、的第一個空位置。如指令LDMEALDMEA、STMEASTMEA等。等。 滿遞減:堆棧通過減小存儲器的地址向下增長,滿遞減:堆棧通過減小存儲器的地址向下增長,堆棧指針指向內(nèi)含有有效數(shù)據(jù)項的最低地址。如指堆棧指針指向內(nèi)含有有效數(shù)據(jù)項的最低地址。如指令令LDMFDLDMFD、STMFDSTMFD等。等。 空遞減:堆棧通過減小存儲器的地址向下增長,空遞減:堆棧通過減小存儲器的地址向下增長,堆棧指針指向堆棧下的第一個空位置。如指令堆棧指針指向堆棧下的第一個空位置。如指令LDMEDLDMED、STMEDSTMED等。等。堆棧尋址(堆棧尋址(5) 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software Sch
30、ool of Hunan University塊復(fù)制尋址塊復(fù)制尋址 塊復(fù)制尋址用于把一塊從存儲器的某一位置復(fù)制塊復(fù)制尋址用于把一塊從存儲器的某一位置復(fù)制到另一位置,是一個多寄存器傳送指令。到另一位置,是一個多寄存器傳送指令。 例如指令:例如指令: LDMIA R0LDMIA R0!,!,R2-R9R2-R9 STMIA R1STMIA R1,R2-R9R2-R9 這兩條指令是從這兩條指令是從R0R0指向的位置復(fù)制指向的位置復(fù)制8 8個字到個字到R1R1指向指向的位置。執(zhí)行指令后,的位置。執(zhí)行指令后,R0R0由于由于“!”的引用自動的引用自動尋址尋址8 8個字,其值共增加個字,其值共增加3232
31、,而,而R1R1不變。不變。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University相對尋址是變址尋址的一種變通,由相對尋址是變址尋址的一種變通,由程序計程序計數(shù)器數(shù)器PCPC提供基地址。指令中的地址標(biāo)號作為位移量,提供基地址。指令中的地址標(biāo)號作為位移量,兩者相加后得到操作數(shù)的有效地址。位移量指出的兩者相加后得到操作數(shù)的有效地址。位移量指出的是操作數(shù)與現(xiàn)行指令之間的相對位置。例如指令:是操作數(shù)與現(xiàn)行指令之間的相對位置。例如指令:BL SUBR BL SUBR ;轉(zhuǎn)移到;轉(zhuǎn)移到SUBRSUBR ;返回到;返回到SUBR SUBR ;子程序入口地址子
32、程序入口地址MOV PCMOV PC,R14 R14 ;返回返回相對尋址相對尋址軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University相對尋址相對尋址與基址變址相似,區(qū)別是將與基址變址相似,區(qū)別是將PC作為基址寄存器作為基址寄存器操作數(shù)操作數(shù)ALUOPA相對距離相對距離 A1000PC主存主存1000AOP軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University課堂練習(xí)題課堂練習(xí)題1、指出下列指令中的尋址方式?、指出下列指令中的尋址方式?(1) ADD R0,R0,0 x3f;(2) ADD R3
33、,R1,R2;(3) LDR R0,R1,4;(4) AND R7,R6,#0 xff;(5) ADD R0,R1,R2;(6) MOV PC,LR;(7) MOV R0,R2,LSL,#3; (8) LDMIA R0,R1,R2,R3,R4 ;2、指出下列指令中尋址方式的意義?、指出下列指令中尋址方式的意義?LDR為加載寄存器指令,即存儲數(shù)據(jù)。為加載寄存器指令,即存儲數(shù)據(jù)。(1) LDR R0,R1,4;(2) LDR R0,R1,4?。唬。?3) LDR R0,R1 ,4;(4) LDR R0,R1,R2,LSL,#2;軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of
34、 Hunan University第第4章章 ARM指令系統(tǒng)指令系統(tǒng) ARM 指令集ARM指令格式ARM尋址方式數(shù)據(jù)處理指令(數(shù)據(jù)處理指令(22種)種)跳轉(zhuǎn)指令(跳轉(zhuǎn)指令(4種)種)Load/Store指令(指令(16種)種)程序狀態(tài)寄存器指令(程序狀態(tài)寄存器指令(2種)種)協(xié)處理器指令(協(xié)處理器指令(5種)種)軟件中斷指令軟件中斷指令 (2種)種)軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityARM指令集指令集6 6種類型(種類型(5353種主要助記符)種主要助記符) : Load/Store指令(指令(1616種主要助記符)種主要助
35、記符) 數(shù)據(jù)處理指令(數(shù)據(jù)處理指令(2222種主要助記符)種主要助記符) 跳轉(zhuǎn)指令(跳轉(zhuǎn)指令(4 4種主要助記符)種主要助記符) 程序狀態(tài)寄存器指令(程序狀態(tài)寄存器指令(2 2種主要助記符)種主要助記符) 協(xié)處理器指令(協(xié)處理器指令(5 5種主要助記符)種主要助記符) 軟件中斷指令軟件中斷指令 (2 2種主要助記符)種主要助記符)軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令 Load/Store指令用于指令用于寄存器寄存器和和內(nèi)存內(nèi)存間數(shù)據(jù)的傳送。間數(shù)據(jù)的傳送。 Load用于把內(nèi)存中的數(shù)據(jù)裝載到寄存器中。用
36、于把內(nèi)存中的數(shù)據(jù)裝載到寄存器中。 Store用于把寄存器中的數(shù)據(jù)存入內(nèi)存。用于把寄存器中的數(shù)據(jù)存入內(nèi)存。 該集合的指令使用頻繁,在指令集中最為重要,該集合的指令使用頻繁,在指令集中最為重要,因為其他指令只能操作寄存器,當(dāng)數(shù)據(jù)存放在內(nèi)因為其他指令只能操作寄存器,當(dāng)數(shù)據(jù)存放在內(nèi)存中時,必須先把數(shù)據(jù)從內(nèi)存裝載到寄存器,執(zhí)存中時,必須先把數(shù)據(jù)從內(nèi)存裝載到寄存器,執(zhí)行完后再把寄存器中的數(shù)據(jù)存儲到內(nèi)存中。行完后再把寄存器中的數(shù)據(jù)存儲到內(nèi)存中。 Load/Store指令分為指令分為3類:類:(1)單一數(shù)據(jù)傳送指令()單一數(shù)據(jù)傳送指令(LDR和和STR等)等)(2)多數(shù)據(jù)傳送指令()多數(shù)據(jù)傳送指令(LDM和和
37、STM)(3)數(shù)據(jù)交換指令()數(shù)據(jù)交換指令(SWP和和SWPB) 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令1-11LDR 字?jǐn)?shù)據(jù)加載指令字?jǐn)?shù)據(jù)加載指令 格式:格式:LDR ,; 功能:功能:把把addr所表示的內(nèi)存地址中的字?jǐn)?shù)據(jù)裝載所表示的內(nèi)存地址中的字?jǐn)?shù)據(jù)裝載到目標(biāo)寄存器到目標(biāo)寄存器Rd中,同時還可以把合成的有效地中,同時還可以把合成的有效地址寫回到基址寄存器。址寫回到基址寄存器。 地址地址addr可以是一個簡單的值、一個偏移量,或可以是一個簡單的值、一個偏移量,或者是一個被移位的偏移量。者是一個被移
38、位的偏移量。 尋址方式:尋址方式: Rn:基址寄存器?;芳拇嫫鳌?Rm:變址寄存器。變址寄存器。 Index:偏移量,偏移量,12位的無符號數(shù)。位的無符號數(shù)。 LDR Rd,Rn ;把內(nèi)存中地址為把內(nèi)存中地址為Rn的字?jǐn)?shù)據(jù)裝入寄存器的字?jǐn)?shù)據(jù)裝入寄存器Rd中中 LDR Rd,Rn,Rm ;將內(nèi)存中地址為將內(nèi)存中地址為Rn+Rm的字?jǐn)?shù)據(jù)裝入寄存器的字?jǐn)?shù)據(jù)裝入寄存器Rd中中軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令1-2 LDR Rd,Rn,index ;將內(nèi)存中地址為將內(nèi)存中地址為Rn+index的字?jǐn)?shù)據(jù)裝
39、入的字?jǐn)?shù)據(jù)裝入Rd中中 LDR Rd,Rn,Rm,LSL5 ;將內(nèi)存中地址為將內(nèi)存中地址為Rn+Rm32的字?jǐn)?shù)據(jù)裝入的字?jǐn)?shù)據(jù)裝入Rd LDR Rd,Rn,Rm ! ;將內(nèi)存中地址為將內(nèi)存中地址為Rn+Rm的字?jǐn)?shù)據(jù)裝入的字?jǐn)?shù)據(jù)裝入Rd,并將,并將新地址新地址Rn+Rm寫入寫入Rn LDR Rd,Rn,index ! ;將內(nèi)存中地址為將內(nèi)存中地址為Rn+index的字?jǐn)?shù)據(jù)裝入的字?jǐn)?shù)據(jù)裝入Rd,并,并將新地址將新地址Rn+index寫入寫入Rn LDR Rd,Rn,Rm,LSL5! ;將內(nèi)存中地址為將內(nèi)存中地址為Rn+Rm32的字?jǐn)?shù)據(jù)裝入的字?jǐn)?shù)據(jù)裝入Rd,并將新地址并將新地址Rn+Rm32寫入寫入R
40、n軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令1-3 LDR Rd,Rn,Rm ;將內(nèi)存中地址為將內(nèi)存中地址為Rn的字?jǐn)?shù)據(jù)裝入寄存器的字?jǐn)?shù)據(jù)裝入寄存器Rd,并,并將新地址將新地址Rn+Rm寫入寫入Rn LDR Rd,Rn,index ;將內(nèi)存中地址為將內(nèi)存中地址為Rn的字?jǐn)?shù)據(jù)裝入寄存器的字?jǐn)?shù)據(jù)裝入寄存器Rd,并,并將新地址將新地址Rn+index寫入寫入Rn LDR Rd,Rn,Rm,LSL5 ;將內(nèi)存中地址為將內(nèi)存中地址為Rn的字?jǐn)?shù)據(jù)裝入寄存器的字?jǐn)?shù)據(jù)裝入寄存器Rd,并,并將新地址將新地址Rn+Rm32寫
41、入寫入Rn 例如:例如: LDR R0,R1,R2,LSL5! ; 將內(nèi)存中地址為將內(nèi)存中地址為R1+R232的字?jǐn)?shù)據(jù)裝入寄存的字?jǐn)?shù)據(jù)裝入寄存器器R0,并將新地址,并將新地址R1+R232寫入寫入R1 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令22LDRB 字節(jié)數(shù)據(jù)加載指令字節(jié)數(shù)據(jù)加載指令 格式:格式:LDRB ,; 功能:功能:同同LDR指令,但該指令只是從內(nèi)存讀取一指令,但該指令只是從內(nèi)存讀取一個個8位的字節(jié)數(shù)據(jù)而不是一個位的字節(jié)數(shù)據(jù)而不是一個32位的字?jǐn)?shù)據(jù),并將位的字?jǐn)?shù)據(jù),并將Rd的高的高24位清位
42、清0。 例如:例如: LDRB R0,R1 ;將內(nèi)存中起始地址為將內(nèi)存中起始地址為R1的一個字節(jié)數(shù)據(jù)裝入的一個字節(jié)數(shù)據(jù)裝入R0中中 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令33LDRBT 用戶模式的字節(jié)數(shù)據(jù)加載指令用戶模式的字節(jié)數(shù)據(jù)加載指令 格式:格式:LDRBT ,; 功能:功能:同同LDRB指令,但無論處理器處于何種指令,但無論處理器處于何種模式,都將該指令當(dāng)作一般用戶模式下的內(nèi)模式,都將該指令當(dāng)作一般用戶模式下的內(nèi)存操作。存操作。 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School
43、of Hunan UniversityLoad/Store指令指令44LDRH 半字?jǐn)?shù)據(jù)加載指令半字?jǐn)?shù)據(jù)加載指令 格式:格式:LDRH ,; 功能:功能:同同LDR指令,但該指令只是從內(nèi)存讀取一指令,但該指令只是從內(nèi)存讀取一個個16位的半字?jǐn)?shù)據(jù)而不是一個位的半字?jǐn)?shù)據(jù)而不是一個32位的字?jǐn)?shù)據(jù),并位的字?jǐn)?shù)據(jù),并將將Rd的高的高16位清位清0。 例如:例如: LDRH R0,R1 ;將內(nèi)存中起始地址為將內(nèi)存中起始地址為R1的一個半字?jǐn)?shù)據(jù)裝入的一個半字?jǐn)?shù)據(jù)裝入R0中中 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令5
44、5LDRSB 有符號的字節(jié)數(shù)據(jù)加載指令有符號的字節(jié)數(shù)據(jù)加載指令 格式:格式:LDRSB ,; 功能:功能:同同LDRB指令,但該指令將寄存器指令,但該指令將寄存器Rd的高的高24位設(shè)置成所裝載的字節(jié)數(shù)據(jù)符號位的值。位設(shè)置成所裝載的字節(jié)數(shù)據(jù)符號位的值。 例如:例如: LDRSB R0,R1 ;將內(nèi)存中起始地址為將內(nèi)存中起始地址為R1的一個字節(jié)數(shù)據(jù)裝入的一個字節(jié)數(shù)據(jù)裝入R0中,中,R0的高的高24位設(shè)置成該字節(jié)數(shù)據(jù)的符號位位設(shè)置成該字節(jié)數(shù)據(jù)的符號位 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令66LDRSH 有
45、符號的半字?jǐn)?shù)據(jù)加載指令有符號的半字?jǐn)?shù)據(jù)加載指令 格式:格式:LDRSH ,; 功能:功能:同同LDRH指令,但該指令將寄存器指令,但該指令將寄存器Rd的高的高16位設(shè)置成所裝載的半字?jǐn)?shù)據(jù)符號位的值。位設(shè)置成所裝載的半字?jǐn)?shù)據(jù)符號位的值。 例如:例如: LDRSH R0,R1 ;將內(nèi)存中起始地址為將內(nèi)存中起始地址為R1的一個的一個16位半字?jǐn)?shù)據(jù)裝入位半字?jǐn)?shù)據(jù)裝入R0中,中,R0的高的高16位設(shè)置成該半字?jǐn)?shù)據(jù)的符號位位設(shè)置成該半字?jǐn)?shù)據(jù)的符號位 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令77LDRT 用戶模式的字
46、數(shù)據(jù)加載指令用戶模式的字?jǐn)?shù)據(jù)加載指令 格式:格式:LDRT ,; 功能:功能:同同LDR指令,但無論處理器處于何種模指令,但無論處理器處于何種模式,都將該指令當(dāng)作一般用戶模式下的內(nèi)存操式,都將該指令當(dāng)作一般用戶模式下的內(nèi)存操作。作。 addr所表示的有效地址必須是字對齊的,否則所表示的有效地址必須是字對齊的,否則從內(nèi)存中讀出的數(shù)值需進(jìn)行循環(huán)右移操作。從內(nèi)存中讀出的數(shù)值需進(jìn)行循環(huán)右移操作。 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令88STR 字?jǐn)?shù)據(jù)存儲指令字?jǐn)?shù)據(jù)存儲指令 格式:格式:STR ,; 功能:功
47、能:把寄存器把寄存器Rd中的字?jǐn)?shù)據(jù)(中的字?jǐn)?shù)據(jù)(32位)保存到位)保存到addr所表示的內(nèi)存地址中,同時還可以把合成的所表示的內(nèi)存地址中,同時還可以把合成的有效地址寫回到基址寄存器。有效地址寫回到基址寄存器。 地址地址addr可以是一個簡單的值、一個偏移量,或可以是一個簡單的值、一個偏移量,或者是一個被移位的偏移量。者是一個被移位的偏移量。 尋址方式同尋址方式同LDR指令。指令。 例如:例如: STR R0,R1,5! ;把把R0中的字?jǐn)?shù)據(jù)保存到以中的字?jǐn)?shù)據(jù)保存到以R1+5為地址的內(nèi)存中,為地址的內(nèi)存中,然后然后R1R1+5 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School o
48、f Hunan UniversityLoad/Store指令指令99STRB 字節(jié)數(shù)據(jù)存儲指令字節(jié)數(shù)據(jù)存儲指令 格式:格式:STRB ,; 功能:功能:把寄存器把寄存器Rd中的低中的低8位字節(jié)數(shù)據(jù)保存到位字節(jié)數(shù)據(jù)保存到addr所表示的內(nèi)存地址中。所表示的內(nèi)存地址中。 其他用法同其他用法同STR指令。指令。 例如:例如: STRB R0,R1 ;將寄存器將寄存器R0中的低中的低8位數(shù)據(jù)存入位數(shù)據(jù)存入R1表示的內(nèi)存地表示的內(nèi)存地址中址中 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令1010STRBT 用戶模式的
49、字節(jié)數(shù)據(jù)存儲指用戶模式的字節(jié)數(shù)據(jù)存儲指令令 格式:格式:STRBT ,; 功能:功能:同同STRB指令,但無論處理器處指令,但無論處理器處于何種模式,該指令都將被當(dāng)作一般用于何種模式,該指令都將被當(dāng)作一般用戶模式下的內(nèi)存操作。戶模式下的內(nèi)存操作。 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令1111STRH 半字?jǐn)?shù)據(jù)存儲指令半字?jǐn)?shù)據(jù)存儲指令 格式:格式:STRH ,; 功能:功能:把寄存器把寄存器Rd中的低中的低16位半字?jǐn)?shù)據(jù)保存到位半字?jǐn)?shù)據(jù)保存到addr所表示的內(nèi)存地址中,而且所表示的內(nèi)存地址中,而且ad
50、dr所表示的地所表示的地址必須是半字對齊的。址必須是半字對齊的。 其他用法同其他用法同STR指令。指令。 例如:例如: STRH R0,R1 ;將寄存器將寄存器R0中的低中的低16位數(shù)據(jù)存入位數(shù)據(jù)存入R1表示的內(nèi)存表示的內(nèi)存地址中地址中 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令1212STRT 用戶模式的字?jǐn)?shù)據(jù)存儲指令用戶模式的字?jǐn)?shù)據(jù)存儲指令 格式:格式:STRT ,; 功能:功能:同同STR指令,但無論處理器處于指令,但無論處理器處于何種模式,該指令都將被當(dāng)作一般用戶何種模式,該指令都將被當(dāng)作一般用戶
51、模式下的內(nèi)存操作。模式下的內(nèi)存操作。 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令13-113LDM 批量數(shù)據(jù)加載指令批量數(shù)據(jù)加載指令 格式:格式: LDM !,; 功能:功能:從一片連續(xù)的內(nèi)存單元讀取數(shù)據(jù)到各個寄從一片連續(xù)的內(nèi)存單元讀取數(shù)據(jù)到各個寄存器中,內(nèi)存單元的起始地址為基址寄存器存器中,內(nèi)存單元的起始地址為基址寄存器Rn的的值,各個寄存器由寄存器列表值,各個寄存器由寄存器列表regs表示。表示。 該指令一般用于多個寄存器數(shù)據(jù)的出棧。該指令一般用于多個寄存器數(shù)據(jù)的出棧。 type字段種類:字段種類:
52、IA:每次傳送后地址加:每次傳送后地址加1。 IB:每次傳送前地址加:每次傳送前地址加1。 DA:每次傳送后地址減:每次傳送后地址減1。 DB:每次傳送前地址減:每次傳送前地址減1。 FD:滿遞減堆棧。:滿遞減堆棧。 ED:空遞減堆棧。:空遞減堆棧。 FA:滿遞增堆棧。:滿遞增堆棧。 EA:空遞增堆棧。:空遞增堆棧。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令13-2例如例如 LDMIA/IB/DA/DB R13!,R0-R1,R3;各指令執(zhí)行完后,結(jié)果如圖所示。各指令執(zhí)行完后,結(jié)果如圖所示。 IB DA
53、DB軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令13-3FD、ED、FA和和EA指定是滿棧還是空棧,是升序棧還是降序指定是滿棧還是空棧,是升序棧還是降序棧,用于堆棧尋址。棧,用于堆棧尋址。一個滿棧的棧指針指向上次寫的最后一個數(shù)據(jù)單元一個滿棧的棧指針指向上次寫的最后一個數(shù)據(jù)單元.空棧的棧指針指向第一個空閑單元??諚5臈V羔樦赶虻谝粋€空閑單元。一個降序棧是在內(nèi)存中反向增長而升序棧在內(nèi)存中正向增長。一個降序棧是在內(nèi)存中反向增長而升序棧在內(nèi)存中正向增長。軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software Schoo
54、l of Hunan UniversityLoad/Store指令指令13-4 格式:格式: LDM !,; !:若選用了此后綴,則當(dāng)指令執(zhí)行完畢后,:若選用了此后綴,則當(dāng)指令執(zhí)行完畢后,將最后的地址寫入基址寄存器。將最后的地址寫入基址寄存器。 :該后綴用于指示指令所用的寄存器為用戶:該后綴用于指示指令所用的寄存器為用戶模式下的寄存器。模式下的寄存器。 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令14-114STM 批量數(shù)據(jù)存儲指令批量數(shù)據(jù)存儲指令 格式:格式:STM !,; 功能:功能:將各個寄存器的值存
55、入一片連續(xù)的內(nèi)存單將各個寄存器的值存入一片連續(xù)的內(nèi)存單元中,內(nèi)存單元的起始地址為基址寄存器元中,內(nèi)存單元的起始地址為基址寄存器Rn的值,的值,各個寄存器由寄存器列表各個寄存器由寄存器列表regs表示。表示。 該指令一般用于多個寄存器數(shù)據(jù)的入棧。該指令一般用于多個寄存器數(shù)據(jù)的入棧。 :指示指令所用的寄存器為用戶模式下的寄存:指示指令所用的寄存器為用戶模式下的寄存器。器。 其他參數(shù)用法同其他參數(shù)用法同LDM指令。指令。 例如:例如: STMEA R13!,R0-R12,PC ;將寄存器將寄存器R0R12以及程序計數(shù)器以及程序計數(shù)器PC的值保存到的值保存到R13指示的堆棧中指示的堆棧中 軟件學(xué)院軟件
56、學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令1515SWP 字?jǐn)?shù)據(jù)交換指令字?jǐn)?shù)據(jù)交換指令 格式:格式:SWP ,; 功能:功能: Rdop2,op2op1 從從op2所表示的內(nèi)存裝載一個字并把這個字放置到所表示的內(nèi)存裝載一個字并把這個字放置到目的寄存器目的寄存器Rd中,然后把寄存器中,然后把寄存器op1的內(nèi)容存儲的內(nèi)容存儲到同一內(nèi)存地址中。到同一內(nèi)存地址中。 op1,op2均為寄存器。均為寄存器。 例如:例如: SWP R0,R1,R2 ;將將R2所表示的內(nèi)存單元中的字?jǐn)?shù)據(jù)裝載到所表示的內(nèi)存單元中的字?jǐn)?shù)據(jù)裝載到R0,然
57、后將然后將R1中的字?jǐn)?shù)據(jù)保存到中的字?jǐn)?shù)據(jù)保存到R2所表示的內(nèi)存單元所表示的內(nèi)存單元中中 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan UniversityLoad/Store指令指令1616SWPB 字節(jié)數(shù)據(jù)交換指令字節(jié)數(shù)據(jù)交換指令 格式:格式:SWPB ,; 功能:功能:從從op2所表示的內(nèi)存裝載一個字節(jié)并把這個所表示的內(nèi)存裝載一個字節(jié)并把這個字節(jié)放置到目的寄存器字節(jié)放置到目的寄存器Rd的低的低8位中,位中,Rd的高的高24位設(shè)置為位設(shè)置為0;然后將寄存器;然后將寄存器op1的低的低8位數(shù)據(jù)存儲到位數(shù)據(jù)存儲到同一內(nèi)存地址中。同一內(nèi)存地址中。 例如:例如:
58、 SWPB R0,R1,R2 ;將將R2所表示的內(nèi)存單元中的一個字節(jié)數(shù)據(jù)裝載到所表示的內(nèi)存單元中的一個字節(jié)數(shù)據(jù)裝載到R0的低的低8位,然后將位,然后將R1中的低中的低8位字節(jié)數(shù)據(jù)保存到位字節(jié)數(shù)據(jù)保存到R2所表示的內(nèi)存單元中所表示的內(nèi)存單元中 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University數(shù)據(jù)處理指令數(shù)據(jù)處理指令11MOV 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 格式:格式:MOVS ,; 功能:功能:Rdop1 op1可以是寄存器、被移位的寄存器或立即數(shù)??梢允羌拇嫫鳌⒈灰莆坏募拇嫫骰蛄⒓磾?shù)。 例如:例如: MOV R0,5;R0=5 MOV R0,
59、R1;R0=R1 MOV R0,R1,LSL5;R0=R1左移左移5位位 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University數(shù)據(jù)處理指令數(shù)據(jù)處理指令22MVN 數(shù)據(jù)取反傳送指令數(shù)據(jù)取反傳送指令 格式:格式:MVNS ,; 功能:功能:將將op1表示的值傳送到目的寄存器表示的值傳送到目的寄存器Rd中,中,但該值在傳送前被按位取反,即但該值在傳送前被按位取反,即Rd=!op1; op1可以是寄存器、被移位的寄存器或立即數(shù)??梢允羌拇嫫?、被移位的寄存器或立即數(shù)。 例如:例如: MVN R0,0;R0=-1 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Sof
60、tware School of Hunan University數(shù)據(jù)處理指令數(shù)據(jù)處理指令33ADD 加法指令加法指令 格式:格式:ADDS ,; 功能:功能:RdRn+op2 op2可以是寄存器,被移位的寄存器或立即數(shù)??梢允羌拇嫫鳎灰莆坏募拇嫫骰蛄⒓磾?shù)。 例如:例如: ADD R0,R1,5;R0=R1+5 ADD R0,R1,R2;R0=R1+R2 ADD R0,R1,R2,LSL5 ;R0=R1+R2左移左移5位位 軟件學(xué)院軟件學(xué)院湖南大學(xué)湖南大學(xué) Software School of Hunan University數(shù)據(jù)處理指令數(shù)據(jù)處理指令44ADC 帶進(jìn)位加法指令帶進(jìn)位加法指令 格
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五金店新零售模式探索與實施策略考核試卷
- 工程設(shè)計規(guī)范與標(biāo)準(zhǔn)考核試卷
- 機(jī)織運動服裝在運動康復(fù)中的角色考核試卷
- 技術(shù)服務(wù)多元化戰(zhàn)略與市場拓展考核試卷
- 服裝行業(yè)大數(shù)據(jù)分析應(yīng)用考核試卷
- 戶外登山鞋租賃與保養(yǎng)常識考核試卷
- 中小學(xué)生手衛(wèi)生課件
- 施工電梯備案合同范本
- 勞務(wù)永久合同范本
- 寵物購買意向合同范本
- 注冊安全工程師安全生產(chǎn)技術(shù)培訓(xùn)講義課件
- 美發(fā)店承包合同范本(2篇)
- 2023年蘇州健雄職業(yè)技術(shù)學(xué)院單招考試面試題庫及答案解析
- 公司組織架構(gòu)圖(可編輯模版)
- 人教版六年級科學(xué)下冊教案全冊
- TCITSA 24-2022 基于ETC的高速公路自由流收費技術(shù)規(guī)范
- 叉車裝卸區(qū)域安全風(fēng)險告知牌
- 2022屆江蘇省南京師范大學(xué)附屬中學(xué)高三(下)考前最后一模物理試題(解析版)
- 《普通生物學(xué)教案》word版
- 貴州省就業(yè)失業(yè)登記表
- 預(yù)防電信詐騙網(wǎng)絡(luò)詐騙講座PPT幻燈片課件
評論
0/150
提交評論