版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、4.3 ARM指令集指令集 簡單的簡單的ARM程序程序 ;文件名:文件名:TEST1.S ;功能:實現(xiàn)兩個寄存器相加功能:實現(xiàn)兩個寄存器相加 ;說明:使用說明:使用ARMulate軟件仿真調(diào)試軟件仿真調(diào)試 AREAExample1,CODE,READONLY ;聲明代碼段聲明代碼段Example1 ENTRY ;標識程序入口標識程序入口 CODE32 ;聲明聲明32位位ARM指令指令 START MOVR0,#0 ;設置參數(shù)設置參數(shù) MOVR1,#10 LOOPBLADD_SUB ;調(diào)用子程序調(diào)用子程序ADD_SUB BLOOP ;跳轉(zhuǎn)到跳轉(zhuǎn)到LOOP ADD_SUB ADDSR0,R0,R1
2、 ;R0 = R0 + R1 MOVPC,LR ;子程序返回子程序返回 END ;文件結(jié)束文件結(jié)束 使用使用“;”進行注釋進行注釋 標號頂格寫標號頂格寫 實際代碼段實際代碼段 聲明文件結(jié)束聲明文件結(jié)束 簡單的簡單的ARM程序程序 ;文件名:文件名:TEST1.S ;功能:實現(xiàn)兩個寄存器相加功能:實現(xiàn)兩個寄存器相加 ;說明:使用說明:使用ARMulate軟件仿真調(diào)試軟件仿真調(diào)試 AREAExample1,CODE,READONLY ;聲明代碼段聲明代碼段Example1 ENTRY ;標識程序入口標識程序入口 CODE32 ;聲明聲明32位位ARM指令指令 START MOVR0,#0 ;設置參
3、數(shù)設置參數(shù) MOVR1,#10 LOOPBLADD_SUB ;調(diào)用子程序調(diào)用子程序ADD_SUB BLOOP ;跳轉(zhuǎn)到跳轉(zhuǎn)到LOOP ADD_SUB ADDSR0,R0,R1 ;R0 = R0 + R1 MOVPC,LR ;子程序返回子程序返回 END ;文件結(jié)束文件結(jié)束 ARMARM指令格式:指令格式: 4.3.1 指令格式指令格式 S , 其中其中號內(nèi)的項是必須的,號內(nèi)的項是必須的, 號內(nèi)的項是可選的。號內(nèi)的項是可選的。 各項的說明如下:各項的說明如下: opcode: 指令助記符;指令助記符; cond: 執(zhí)行條件;執(zhí)行條件; S: 是否影響是否影響CPSRCPSR寄存器的值;寄存器的值
4、; Rd: 目標寄存器;目標寄存器; Rn: 第第1 1個操作數(shù)的寄存器;個操作數(shù)的寄存器; operand2: 第第2 2個操作數(shù);個操作數(shù); ARMARM指令格式之指令格式之第第2個操作數(shù)個操作數(shù): S , 第第2 2個源操作數(shù)格式個源操作數(shù)格式: : #immed_8r 常數(shù)表達式;常數(shù)表達式; Rm 寄存器方式;寄存器方式; Rm,shift 寄存器移位方式;寄存器移位方式; 第第2個操作數(shù)個操作數(shù) #immed_8r 常數(shù)表達式常數(shù)表達式 例如:例如: MOVR0,#1 ANDR1,R2,#0 x0F 第第2個操作數(shù)個操作數(shù) Rm Rm 寄存器方式寄存器方式 在寄存器方式下,操作數(shù)即
5、為寄存器的數(shù)值。在寄存器方式下,操作數(shù)即為寄存器的數(shù)值。 例如:例如: SUBR1,R1,R2 MOVPC,R0 第第2個操作數(shù)個操作數(shù) Rm,shift Rm,shift 寄存器移位方式寄存器移位方式 將寄存器的移位結(jié)果作為操作數(shù),但將寄存器的移位結(jié)果作為操作數(shù),但RmRm值保持不變,值保持不變, 移位方法如下:移位方法如下: 操作碼操作碼說明說明操作碼操作碼說明說明 ASR #n算術(shù)右移算術(shù)右移n位位ROR #n循環(huán)右移循環(huán)右移n位位 LSL #n邏輯左移邏輯左移n位位RRX帶擴展的循環(huán)右移帶擴展的循環(huán)右移1位位 LSR #n邏輯右移邏輯右移n位位Type Rs Type為移位的一種類型,
6、為移位的一種類型,Rs 為偏移量寄存器,低為偏移量寄存器,低8位有效。位有效。 第第2個操作數(shù)個操作數(shù) LSL移位操作:0 LSR移位操作: 0 ASR移位操作: ROR移位操作: RRX移位操作:C 第第2個操作數(shù)個操作數(shù) Rm,shiftRm,shift寄存器移位方式寄存器移位方式 例如:例如: A D DR 1 , R 1 , R 1 , L S L # 3 ;R1=R1+R1*8=9R1 SUBR1,R1,R2,LSR R3;R1=R1- (R2/2R3) ARMARM指令格式之指令格式之條件碼條件碼 4.3.2 條件碼條件碼 S , 條件碼條件碼“cond” : : 實現(xiàn)高效的邏輯操
7、作。實現(xiàn)高效的邏輯操作。 所有的所有的ARMARM指令都可以條件執(zhí)行,而指令都可以條件執(zhí)行,而ThumbThumb指令只有指令只有B B(跳(跳 轉(zhuǎn))轉(zhuǎn))指令具有條件執(zhí)行指令具有條件執(zhí)行 功能。如果指令不標明條件代碼,將功能。如果指令不標明條件代碼,將 默認為默認為無條件(無條件(ALAL)執(zhí)行。執(zhí)行。 操作碼操作碼條件助記符條件助記符標志標志含義含義 0000EQZ=1相等相等 0001NEZ=0不相等不相等 0010CS/HSC=1無符號數(shù)大于或等于無符號數(shù)大于或等于 0011CC/LOC=0無符號數(shù)小于無符號數(shù)小于 0100MIN=1負數(shù)負數(shù) 0101PLN=0正數(shù)或零正數(shù)或零 0110
8、VSV=1溢出溢出 0111VCV=0沒有溢出沒有溢出 1000HIC=1,Z=0無符號數(shù)大于無符號數(shù)大于 1001LSC=0,Z=1無符號數(shù)小于或等于無符號數(shù)小于或等于 1010GEN=V有符號數(shù)大于或等于有符號數(shù)大于或等于 1011LTN!=V有符號數(shù)小于有符號數(shù)小于 1100GTZ=0,N=V有符號數(shù)大于有符號數(shù)大于 1101LEZ=1,N!=V有符號數(shù)小于或等于有符號數(shù)小于或等于 1110AL任何任何無條件執(zhí)行無條件執(zhí)行 (指令默認條件指令默認條件) 1111NV任何任何從不執(zhí)行從不執(zhí)行(不要使用不要使用) 指令條件碼表指令條件碼表 條件碼條件碼 c c代碼:代碼: if(a b) a
9、+; else b+; 對應的匯編代碼:對應的匯編代碼: CMPR0,R1 ;R0與與R1比較比較 ADDHI R0,R0,#1 ;若若R0R1,則,則R0=R0+1 ADDLS R1,R1,#1 ;若若R0R1R1,則,則R1=R1+1R1=R1+1 示例:示例: 無條無條碼碼的匯編代碼:的匯編代碼: CMPR0,R1 B LSL1 ADDR0,R0,#1 B L2 L1 ADDR1,R1,#1 L2L2 4.3.3 存儲器訪問指令存儲器訪問指令 ARM ARM處理器是典型的處理器是典型的RISCRISC處理器,對存儲器的訪問只處理器,對存儲器的訪問只 能使用能使用加載和存儲加載和存儲指令實
10、現(xiàn)指令實現(xiàn); ; ARM ARM處理器是馮處理器是馮諾依曼存儲結(jié)構(gòu),程序空間、諾依曼存儲結(jié)構(gòu),程序空間、RAMRAM空空 間及間及I/OI/O映射空間統(tǒng)一編址映射空間統(tǒng)一編址; ; 除對除對RAMRAM操作以外,對外圍操作以外,對外圍IOIO、程序數(shù)據(jù)的訪問均要、程序數(shù)據(jù)的訪問均要 通過加載通過加載/ /存儲指令進行。存儲指令進行。 存儲器訪問指令分為存儲器訪問指令分為單寄存器操作指令單寄存器操作指令和和多寄存器操作多寄存器操作 指令指令。 LDR/STR LDR/STR : : 字字(/ (/半字半字/ /字節(jié)字節(jié)) )加載加載/ /存儲指令存儲指令 LDRLDR指令用于從內(nèi)存中讀一字或字節(jié)
11、數(shù)據(jù)存入寄存器中指令用于從內(nèi)存中讀一字或字節(jié)數(shù)據(jù)存入寄存器中; ; STR STR指令用于將寄存器中的一字或字節(jié)數(shù)據(jù)保存到內(nèi)存。指令用于將寄存器中的一字或字節(jié)數(shù)據(jù)保存到內(nèi)存。 單寄存器存儲操作單寄存器存儲操作 LDRcondTLDRcondTRd,Rd, ; ;將指定地址上的字數(shù)據(jù)讀入將指定地址上的字數(shù)據(jù)讀入RdRd STRcondTSTRcondTRd,Rd, ; ;將將RdRd中的字數(shù)據(jù)存入指定地址中的字數(shù)據(jù)存入指定地址 LDRcondHTLDRcondHTRd,Rd, ; ;將指定地址上的將指定地址上的半半字數(shù)據(jù)讀入字數(shù)據(jù)讀入RdRd LDRcondSHTLDRcondSHTRd,Rd,
12、 ; ;將指定地址上的將指定地址上的半半字數(shù)據(jù)讀入字數(shù)據(jù)讀入RdRd STRcondHTSTRcondHTRd,Rd, ; ;將將RdRd中的中的半半字數(shù)據(jù)存入指定地址字數(shù)據(jù)存入指定地址 LDRcondBTLDRcondBTRd,Rd, ; ;將指定地址上的字節(jié)數(shù)據(jù)讀入將指定地址上的字節(jié)數(shù)據(jù)讀入RdRd LDRcondSBT LDRcondSBT Rd,Rd, ; ;將指定地址上的字節(jié)數(shù)據(jù)讀入將指定地址上的字節(jié)數(shù)據(jù)讀入RdRd STRcondBTSTRcondBTRd,Rd, ; ;將將RdRd中的字節(jié)數(shù)據(jù)存入指定地址中的字節(jié)數(shù)據(jù)存入指定地址 LDR/STR指令格式:指令格式: T T為可選后
13、綴為可選后綴; ; 帶帶T T指令,處理器只能在特權(quán)模式下執(zhí)行指令,處理器只能在特權(quán)模式下執(zhí)行; ; 帶帶T T指令在用戶模式下無效指令在用戶模式下無效, ,被忽略不執(zhí)行。被忽略不執(zhí)行。 助記符助記符說明說明操作操作條件碼位置條件碼位置 LDR Rd,addressing 加載字數(shù)加載字數(shù) 據(jù)據(jù) RdRdaddressinaddressin gg,addressingaddressing 索引索引 LDRcondLDRcond LDRB Rd,addressing 加載無符加載無符 號字節(jié)數(shù)號字節(jié)數(shù) 據(jù)據(jù) RdRdaddressinaddressin gg,addressingaddressi
14、ng 索引索引 LDRcondBLDRcondB LDRT Rd,addressing 以用戶模以用戶模 式加載字式加載字 數(shù)據(jù)數(shù)據(jù) RdRdaddressinaddressin gg,addressingaddressing 索引索引 LDRcondTLDRcondT LDRBT Rd, addressing 以用戶模以用戶模 式加載無式加載無 符號字節(jié)符號字節(jié) 數(shù)據(jù)數(shù)據(jù) RdRdaddressinaddressin gg,addressingaddressing 索引索引 LDRcondBLDRcondB T T LDRH Rd, addressing 加載無符加載無符 號半字數(shù)號半字數(shù)
15、據(jù)據(jù) RdRdaddressinaddressin gg,addressingaddressing 索引索引 LDRcondHLDRcondH 單寄存器加載單寄存器加載 助記符助記符說明說明操作操作條件碼位條件碼位 置置 STR Rd, addressing 存儲字數(shù)據(jù)存儲字數(shù)據(jù)addressingaddressingR R d d, addressingaddressing索引索引 STRcondSTRcond STRB Rd,addressing 存儲字節(jié)數(shù)存儲字節(jié)數(shù) 據(jù)據(jù) addressingaddressingR R d d, addressingaddressing索引索引 STRc
16、ondSTRcond B B STRT Rd,addressing 以用戶模式以用戶模式 存儲字數(shù)據(jù)存儲字數(shù)據(jù) addressingaddressingR R d d, addressingaddressing索引索引 STRcondSTRcond T T STRBT Rd,addressing 以用戶模式以用戶模式 存儲字節(jié)數(shù)存儲字節(jié)數(shù) 據(jù)據(jù) addressingaddressingR R d d, addressingaddressing索引索引 STRcondSTRcond BTBT STRH Rd,addressing 存儲半字數(shù)存儲半字數(shù) 據(jù)據(jù) addressing addressi
17、ng RdRd, addressingaddressing索引索引 STRcondSTRcond H H 單寄存器存儲單寄存器存儲 LDR/STR LDR/STR指令用于對內(nèi)存變量的訪問、內(nèi)存緩沖區(qū)數(shù)據(jù)的訪問、查表、指令用于對內(nèi)存變量的訪問、內(nèi)存緩沖區(qū)數(shù)據(jù)的訪問、查表、 外圍部件的控制操作等。若使用外圍部件的控制操作等。若使用LDRLDR指令加載數(shù)據(jù)到指令加載數(shù)據(jù)到PCPC寄存器,則實現(xiàn)程寄存器,則實現(xiàn)程 序跳轉(zhuǎn)功能,這樣也就實現(xiàn)了程序散轉(zhuǎn)。序跳轉(zhuǎn)功能,這樣也就實現(xiàn)了程序散轉(zhuǎn)。 所有單寄存器加載所有單寄存器加載/ /存儲指令可分為存儲指令可分為“字和無符號字節(jié)加載存儲指令字和無符號字節(jié)加載存儲
18、指令”和和 “半字和有符號字節(jié)加載存儲指令。半字和有符號字節(jié)加載存儲指令。 LDR/STR指令指令 的的地址表達式地址表達式 地址表達式組成地址表達式組成: :有效地址有效地址 = 基地址基地址, (+/-) 偏移量偏移量 基址寄存器:基址寄存器: 可以是任一個通用寄存器可以是任一個通用寄存器 地址偏移量:地址偏移量: 可以是立即數(shù)、可以是立即數(shù)、regreg、reg shift #counterreg shift #counter 偏移量偏移量3 3種格式種格式: 立即數(shù)立即數(shù): :立即數(shù)是一個無符號的數(shù)值。立即數(shù)是一個無符號的數(shù)值。 LDR R1,R0,LDR R1,R0,#0 x12#0
19、 x12 LDR R1 , R0,# - 0 x12 寄存器寄存器: : 寄存器中的數(shù)值寄存器中的數(shù)值 加加/ /減減 到基址寄存器,到基址寄存器,R2R2是是32b32b補碼形式補碼形式 LDR R1,R0,LDR R1,R0,R2R2 寄存器及移位常數(shù)寄存器及移位常數(shù)。寄存器移位后的值可以加到基址寄存器,。寄存器移位后的值可以加到基址寄存器, 也可以從基址寄存器中減去這個數(shù)值。也可以從基址寄存器中減去這個數(shù)值。 LDR R1,R0,R2,LSL #2 STR/LDRSTR/LDR指令之指令之尋址方式尋址方式: 零偏移零偏移 :LDR Rd,Rn 前索引偏移:前索引偏移:LDR Rd,Rn,
20、#0 x04! ;Rn+0 x4-Rn,Rn-Rd LDR Rd,Rn,#0 x04 ; Rn+0 x4-Rd,基址不變,基址不變 程序相對偏移:程序相對偏移: LDR Rd,labe1 LDR Rd,PC,#labe1 后索引偏移:后索引偏移: LDR Rd,Rn,#0 x04 ;Rn-Rd,Rn+0 x4-Rn, ;操作后基地址發(fā)自動增加;操作后基地址發(fā)自動增加 注意注意:大多數(shù)情況下,必須保證字數(shù)據(jù)操作的地址是:大多數(shù)情況下,必須保證字數(shù)據(jù)操作的地址是3232位對齊的。位對齊的。 LDR/STRLDR/STR指令之指令之半字半字/ /字節(jié)操作字節(jié)操作 這類這類LDR/STRLDR/STR
21、指令可加載有符號半字或字節(jié),可加載指令可加載有符號半字或字節(jié),可加載/ /存儲無符存儲無符 號半字。偏移量格式、尋址方式與加載號半字。偏移量格式、尋址方式與加載/ /存儲字和無符號字節(jié)指令存儲字和無符號字節(jié)指令 相同。相同。 LDRcondSB Rd, ;將指定地址上的有符號字節(jié)讀入將指定地址上的有符號字節(jié)讀入Rd LDRcondSH Rd, ;將指定地址上的有符號半字讀入將指定地址上的有符號半字讀入Rd LDRcondH Rd, ;將指定地址上的半字數(shù)據(jù)讀入將指定地址上的半字數(shù)據(jù)讀入Rd STRcondH Rd, ;將將Rd中的半字數(shù)據(jù)存入指定地址中的半字數(shù)據(jù)存入指定地址 LDRLDR和和S
22、TRSTR指令應用示例:指令應用示例: 1. 1.加載加載/ /存儲字和無符號字節(jié)指令存儲字和無符號字節(jié)指令 LDRR2,R5;將將R5指向地址的字數(shù)據(jù)存入指向地址的字數(shù)據(jù)存入R2 STRR1,R0,#0 x04;將將R1的數(shù)據(jù)存儲到的數(shù)據(jù)存儲到R0+0 x04地址地址 LDRBR3,R2,#1 ;將將R2指向地址的字節(jié)數(shù)據(jù)存入指向地址的字節(jié)數(shù)據(jù)存入R3,R2R2+1 STRBR6,R7 ;將將R7指向地址的字節(jié)數(shù)據(jù)存入指向地址的字節(jié)數(shù)據(jù)存入R6 2.2.加載加載/ /存儲半字和有符號字節(jié)指令存儲半字和有符號字節(jié)指令 LDRSB R1,R0,R3;將將R0+R3地址上的字節(jié)數(shù)據(jù)存入地址上的字節(jié)
23、數(shù)據(jù)存入R1, ;高高24位用符號擴展位用符號擴展 LDRH R6,R2,#2;將將R2指向地址的半字數(shù)據(jù)存入指向地址的半字數(shù)據(jù)存入R6,高,高16位用位用0擴展擴展 ;讀出后,讀出后,R2=R2+2 STRH R1,R0,#2!;將將R1的半字數(shù)據(jù)保存到的半字數(shù)據(jù)保存到R0+2地址,地址, ;只修改低只修改低2字節(jié)數(shù)據(jù),字節(jié)數(shù)據(jù),R0=R0+2 注意注意: LDRSB Rd, ; LDRSH Rd, ; LDRH Rd, ; STRH Rd, ; 1. 1.有符號半字有符號半字/ /字節(jié)加載指令自動將字節(jié)加載指令自動將符號位加載擴展到符號位加載擴展到3232位位, 無符號半字無符號半字/ /
24、字節(jié)字節(jié) 加載指令加載指令用零擴展到用零擴展到3232位位; 2.2.半字讀寫的指定地址必須為半字讀寫的指定地址必須為偶數(shù)偶數(shù),否則將產(chǎn)生不可靠的結(jié)果;,否則將產(chǎn)生不可靠的結(jié)果; 問:為什么問:為什么3232位指令無帶符號加載指令?位指令無帶符號加載指令? 為什么存儲指令無帶符號修飾?為什么存儲指令無帶符號修飾? 助記符助記符說明說明操作操作條件碼位置條件碼位置 LDMmode Rn!,reglist 多寄存器加多寄存器加 載載 reglistreglistRn.Rn., RnRn回寫等回寫等 LDMcondLDMcond modemode STMmode Rn!,reglist 多寄存器存多
25、寄存器存 儲儲 Rn.reglist,Rn.reglist, RnRn回寫等回寫等 STMcondSTMcond modemode 多寄存器存取多寄存器存取 多寄存器加載多寄存器加載/ /存儲指令可以實現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之存儲指令可以實現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之 間傳輸數(shù)據(jù)。間傳輸數(shù)據(jù)。LDMLDM為加載多個寄存器;為加載多個寄存器;STMSTM為存儲多個寄存器。允許一條為存儲多個寄存器。允許一條 指令傳送指令傳送1616個寄存器的任何子集或所有寄存器。它們主要用于現(xiàn)場保護、個寄存器的任何子集或所有寄存器。它們主要用于現(xiàn)場保護、 數(shù)據(jù)復制、常數(shù)傳遞等。數(shù)據(jù)復制、常數(shù)傳
26、遞等。 多寄存器存取多寄存器存取 多寄存器加載多寄存器加載/ /存儲指令格式:存儲指令格式: LDMcond Rn! , reglist STMcond Rn! , reglist cond :指令執(zhí)行的條件;:指令執(zhí)行的條件; 模式模式 :控制地址的增長方式,一共有:控制地址的增長方式,一共有8種模式;種模式; ! :表示在操作結(jié)束后,將最后的地址寫回:表示在操作結(jié)束后,將最后的地址寫回Rn中;中; reglist :表示寄存器列表,可以包含多個寄存器,:表示寄存器列表,可以包含多個寄存器, 它們使用它們使用 “ , ” 隔開,如隔開,如R1,R2,R6-R9, 寄存器寄存器由小到大排列由小
27、到大排列; : 含該后綴指令按下列含該后綴指令按下列 3 3種種 方式操作:方式操作: (1 1) 若寄存器列表不包含若寄存器列表不包含PCPC,加載加載/ /存儲存儲的是的是 用戶模式用戶模式下的寄存器內(nèi)容,而不是當前模式的寄存器下的寄存器內(nèi)容,而不是當前模式的寄存器; (2) 若寄存器列表包含若寄存器列表包含PC,加載加載/存儲存儲的是的是 當前模式當前模式下的寄存器內(nèi)容;下的寄存器內(nèi)容; (3 3) 加入加入 后綴的后綴的LDMLDM指令,且寄存器列表中包含有指令,且寄存器列表中包含有PCPC時使用,時使用, 除了正常的多寄存器傳送外,還將除了正常的多寄存器傳送外,還將SPSRSPSR也
28、拷貝到也拷貝到CPSRCPSR中,中, 這可用于這可用于異常處理返回異常處理返回。 注意注意: 后綴不允許在用戶模式或系統(tǒng)模式下使用。后綴不允許在用戶模式或系統(tǒng)模式下使用。 多寄存器存取多寄存器存取 多寄存器加載多寄存器加載/ /存儲指令的存儲指令的8 8種模式如下表所示,右邊四種為堆棧種模式如下表所示,右邊四種為堆棧 操作、左邊四種為數(shù)據(jù)傳送操作。操作、左邊四種為數(shù)據(jù)傳送操作。 模式模式說明說明 IAIA每次傳送每次傳送后后地址地址加加4 4 IBIB每次傳送每次傳送前前地址地址加加4 4 DADA每次傳送每次傳送后后地址地址減減4 4 DBDB每次傳送每次傳送前前地址地址減減4 4 模式模
29、式說明說明 FDFD滿遞減滿遞減堆棧堆棧 EDED空遞減空遞減堆棧堆棧 FAFA滿遞增滿遞增堆棧堆棧 EAEA空遞增空遞增堆棧堆棧 數(shù)據(jù)塊傳送操作數(shù)據(jù)塊傳送操作 STM/LDM方向完全相同方向完全相同 堆棧操作堆棧操作 (后綴描述的是后綴描述的是STM進棧進棧方向,與之匹方向,與之匹 配的配的LDM出棧正好相反出棧正好相反) I: increase D:decrease A: after B:before F:full E:empty D:decrease A:advance 進行數(shù)據(jù)復制時,進行數(shù)據(jù)復制時, 先設置好源數(shù)據(jù)指針和目標指針,先設置好源數(shù)據(jù)指針和目標指針, 然后使用塊拷貝尋址指令
30、然后使用塊拷貝尋址指令 LDMIA/STMIALDMIA/STMIA、LDMIB/STMIBLDMIB/STMIB、LDMDA/STMDALDMDA/STMDA、LDMDB/STMDBLDMDB/STMDB 進行讀取和存儲進行讀取和存儲 。 進行堆棧操作操作時,進行堆棧操作操作時, 要先設置堆棧指針(要先設置堆棧指針(SPSP),), 然后使用堆棧尋址指令然后使用堆棧尋址指令 STMFD/LDMFD STMFD/LDMFD 、STMED/LDMEDSTMED/LDMED、STMFA/LDMFASTMFA/LDMFA和和STMEA/LDMEASTMEA/LDMEA 實現(xiàn)堆棧操作。實現(xiàn)堆棧操作。
31、多寄存器存儲多寄存器存儲 數(shù)據(jù)塊傳送指令操作過程:數(shù)據(jù)塊傳送指令操作過程: 其中其中R1R1為指令執(zhí)行前的基址寄為指令執(zhí)行前的基址寄 存器,存器,R1R1則為指令執(zhí)行后的基則為指令執(zhí)行后的基 址寄存器。址寄存器。 R5R5 R6R6 R7R7 R1 R1 R1R1 STMIA R1!,R5-R7 STMEA R1!,R5-R7 4008H4008H 4004H4004H 4000H4000H 4014H4014H 4010H4010H 400CH400CH R5R5 R6R6 R7R7R1 R1 R1R1 STMDA R1!,R5-R7 STMED R1!,R5-R7 4008H4008H 4
32、004H4004H 4000H4000H 4014H4014H 4010H4010H 400CH400CH R5R5 R6R6 R7R7 R1 R1 R1R1 STMIB R1!,R5-R7 STMFA R1!,R5-R7 4008H4008H 4004H4004H 4000H4000H 4014H4014H 4010H4010H 400CH400CH R5R5 R6R6 R7R7 R1R1 R1 R1 STMDB R1!,R5-R7 STMFD R1!,R5-R7 4008H4008H 4004H4004H 4000H4000H 4014H4014H 4010H4010H 400CH400C
33、H 數(shù)據(jù)塊傳數(shù)據(jù)塊傳 送送 存儲存儲 堆棧操作堆棧操作 壓棧壓棧 說明說明 STMDASTMED空遞減空遞減 STMIASTMEA空遞增空遞增 STMDBSTMFD滿遞減滿遞減 STMIBSTMFA滿遞增滿遞增 R5R5 R6R6 R7R7 R1 R1 R1R1 LDMLDMIAIA R1!,R5-R7 R1!,R5-R7 LDMFD R1!,R5-R7 4008H4008H 4004H4004H 4000H4000H 4014H4014H 4010H4010H 400CH400CH R5R5 R6R6 R7R7R1 R1 - R1R1 LDMLDMDADA R1!,R5-R7 R1!,R5-
34、R7 LDMFA R1!,R5-R7 4008H4008H 4004H4004H 4000H4000H 4014H4014H 4010H4010H 400CH400CH R5R5 R6R6 R7R7 R1 R1 R1R1 LDMIB R1!,R5-R7 LDMED R1!,R5-R7 4008H4008H 4004H4004H 4000H4000H 4014H4014H 4010H4010H 400CH400CH R5R5 R6R6 R7R7 R1R1 R1 R1 LDMDB R1!,R5-R7 LDMEA R1!,R5-R7 4008H4008H 4004H4004H 4000H4000H
35、4014H4014H 4010H4010H 400CH400CH 數(shù)據(jù)塊傳送數(shù)據(jù)塊傳送 加載加載 堆棧操作堆棧操作 出棧出棧 說明說明 LDMDALDMFA滿遞減滿遞減 LDMIALDMFD滿遞增滿遞增 LDMDBLDMEA空遞減空遞減 LDMIBLDMED空遞增空遞增 堆棧操作和數(shù)據(jù)塊傳送指令堆棧操作和數(shù)據(jù)塊傳送指令 類似,也有類似,也有4 4種模式,它們之種模式,它們之 間的關(guān)系如下表所示:間的關(guān)系如下表所示: 多寄存器讀取多寄存器讀取 ;使用數(shù)據(jù)塊傳送指令進行使用數(shù)據(jù)塊傳送指令進行 堆棧操作堆棧操作 STMDAR0!,R5-R6 . . . LDMIBR0!,R5-R6 ; ;使用堆棧指
36、令進行堆棧使用堆棧指令進行堆棧 操作操作 STMSTMEDED R0!,R5-R6R0!,R5-R6 . . . . . LDMLDMEDED R0!,R5-R6R0!,R5-R6 兩段代碼的執(zhí)行結(jié)果是一樣的,但是使用堆棧指令的兩段代碼的執(zhí)行結(jié)果是一樣的,但是使用堆棧指令的 壓棧和出棧操作編程很簡單(只要前后一致即可),而使壓棧和出棧操作編程很簡單(只要前后一致即可),而使 用數(shù)據(jù)塊指令進行壓棧和出棧操作則需要考慮空與滿、加用數(shù)據(jù)塊指令進行壓棧和出棧操作則需要考慮空與滿、加 與減對應的問題。與減對應的問題。 助記符助記符說明說明操作操作條件碼位置條件碼位置 SWP Rd,Rm,Rn SWP R
37、d,Rm,Rn 寄存器和存儲器字寄存器和存儲器字 數(shù)據(jù)交換數(shù)據(jù)交換 RdRnRdRn,RnRm RnRm (RnRd(RnRd或或Rm)Rm) SWPcondSWPcond SWPB Rd,Rm,Rn SWPB Rd,Rm,Rn 寄存器和存儲器字寄存器和存儲器字 節(jié)數(shù)據(jù)交換節(jié)數(shù)據(jù)交換 RdRnRdRn,RnRm RnRm (RnRd(RnRd或或Rm)Rm) SWPcondBSWPcondB 寄存器和存儲器交換指令寄存器和存儲器交換指令 SWP SWP 指令指令格式:指令指令格式: SWPcondB Rd,Rm,Rn;SWPcondB Rd,Rm,Rn; ; 用于將一個內(nèi)存單元(該單元地址放在
38、寄存器Rn中)的內(nèi)容讀取到一個寄 存器Rd中,同時將另一個寄存器Rm的內(nèi)容寫入到該內(nèi)存單元中。使用 SWP可實現(xiàn)信號量操作。 B B 為可選后綴,若有為可選后綴,若有B B,則交換字節(jié),否則交換,則交換字節(jié),否則交換3232位字;位字; Rd Rd 用于保存從存儲器中讀入的數(shù)據(jù);用于保存從存儲器中讀入的數(shù)據(jù); Rm Rm 的數(shù)據(jù)用于存儲到存儲器中,若的數(shù)據(jù)用于存儲到存儲器中,若RmRm與與RnRn相同,相同, 則為寄存器與存儲器內(nèi)容進行交換;則為寄存器與存儲器內(nèi)容進行交換; Rn Rn 為要進行數(shù)據(jù)交換的存儲器地址,為要進行數(shù)據(jù)交換的存儲器地址,RnRn不能與不能與RdRd和和RmRm相同。相
39、同。 寄存器和存儲器交換指令寄存器和存儲器交換指令 SWP SWP指令應用示例:指令應用示例: SWP R1,R1,R0 ; ;將將R1R1的內(nèi)容與的內(nèi)容與R0R0指向的存儲單元的內(nèi)容進指向的存儲單元的內(nèi)容進 行交換行交換 SWPB R1,R2,R0; ;將將R0R0指向的存儲單元內(nèi)的容讀取一字節(jié)數(shù)據(jù)到指向的存儲單元內(nèi)的容讀取一字節(jié)數(shù)據(jù)到R1R1中中 ; ;( (高高2424位清零位清零) ),并將,并將R2R2的內(nèi)容寫入到該內(nèi)存單元中的內(nèi)容寫入到該內(nèi)存單元中 ; ;( (最低字節(jié)有效最低字節(jié)有效) ) 4.3.4 ARM4.3.4 ARM數(shù)據(jù)處理指令數(shù)據(jù)處理指令 數(shù)據(jù)處理指令大致可分為數(shù)據(jù)處
40、理指令大致可分為4 4類:類: 數(shù)據(jù)傳送指令;數(shù)據(jù)傳送指令; 算術(shù)算術(shù)運算指令運算指令 邏輯運算指令;邏輯運算指令; 比較指令。比較指令。 數(shù)據(jù)處理指令只能對寄存器的內(nèi)容進行操作,數(shù)據(jù)處理指令只能對寄存器的內(nèi)容進行操作, 而不能對內(nèi)存中的數(shù)據(jù)進行操作。所有而不能對內(nèi)存中的數(shù)據(jù)進行操作。所有ARMARM數(shù)據(jù)處數(shù)據(jù)處 理指令均可選擇使用理指令均可選擇使用S S后綴,并影響狀態(tài)標志。后綴,并影響狀態(tài)標志。 數(shù)據(jù)處理指令編碼數(shù)據(jù)處理指令編碼 帶進位加法帶進位加法ADCADC01010101 帶進位減法指令帶進位減法指令SBCSBC01100110 帶進位逆向減法指令帶進位逆向減法指令RSCRSC011
41、10111 位測試指令位測試指令TSTTST10001000 相等測試指令相等測試指令TEQTEQ10011001 比較指令比較指令CMPCMP10101010 負數(shù)比較指令負數(shù)比較指令CMNCMN10111011 邏輯或操作指令邏輯或操作指令ORRORR11001100 數(shù)據(jù)傳送數(shù)據(jù)傳送MOVMOV11011101 位清除指令位清除指令BICBIC11101110 數(shù)據(jù)非傳送數(shù)據(jù)非傳送MVNMVN11111111 加法運算指令加法運算指令ADDADD01000100 逆向減法指令逆向減法指令RSBRSB00110011 減法運算指令減法運算指令SUBSUB00100010 邏輯異或操作指令邏
42、輯異或操作指令EOREOR00010001 邏輯與操作指令邏輯與操作指令ANDAND00000000 說明說明指令助記符指令助記符操作碼操作碼 opcode操作碼功能表操作碼功能表 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 算術(shù)運算指令算術(shù)運算指令 邏輯運算指令邏輯運算指令 比較指令與測試指令比較指令與測試指令 助記符助記符說明說明操作操作條件碼位置條件碼位置 MOV Rd,operand2MOV Rd,operand2 數(shù)據(jù)傳送數(shù)據(jù)傳送RdRdoperand2 operand2 MOVcondSMOVcondS MVN Rd,operand2MVN Rd,operand2 數(shù)據(jù)非傳數(shù)據(jù)非傳 送送 RdRd(
43、operand2)(operand2)MVNcondSMVNcondS 數(shù)據(jù)傳送指令格式數(shù)據(jù)傳送指令格式 MOV指令格式:指令格式: MOVcondS Rd,operand2 ;將將 8位立即數(shù)位立即數(shù)/寄存器寄存器 傳送到傳送到 目標寄存器(目標寄存器(Rd),), ;可用于移位運算等操作,可用于移位運算等操作, MOV指令示例:指令示例: MOVR1,#0 x10;R1=0 x10 MOVR0,R1;R0=R1 MOVSR3,R1,LSL #2;R3=R12,并影響標志位,并影響標志位 MOVPC,LR;PC=LR,子程序返回,子程序返回 MVN指令格式:指令格式: MVNcondS Rd
44、,operand2 ; 將將 8立即數(shù)立即數(shù) ; 或或 寄存器(寄存器(operand2)按位取反)按位取反 , 送送Rd中中, ; 可以裝載范圍更廣的立即數(shù)可以裝載范圍更廣的立即數(shù) MVN指令示例:指令示例: MVNR1,#0 xFF;R1=0 xFFFFFF00 MVNR1,R2;將將R2取反,結(jié)果存到取反,結(jié)果存到R1 助記符助記符說明說明操作操作條件碼位置條件碼位置 ADD Rd, Rn, operand2ADD Rd, Rn, operand2加法運算指令加法運算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondS SUB Rd, Rn, oper
45、and2SUB Rd, Rn, operand2減法運算指令減法運算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondS RSB Rd, Rn, operand2RSB Rd, Rn, operand2逆向減法指令逆向減法指令RdRdoperand2-Rnoperand2-RnRSBcondSRSBcondS ADC Rd, Rn, operand2ADC Rd, Rn, operand2帶進位加法帶進位加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondS SBC Rd, Rn, operand2S
46、BC Rd, Rn, operand2帶進位減法指令帶進位減法指令 RdRdRn-operand2-Rn-operand2- (NOT)Carry(NOT)Carry SBCcondSSBCcondS RSC Rd, Rn, operand2RSC Rd, Rn, operand2 帶進位逆向減法帶進位逆向減法 指令指令 RdRdoperand2-Rn-operand2-Rn- (NOT)Carry(NOT)Carry RSCcondSRSCcondS 算術(shù)運算指令格式算術(shù)運算指令格式 SUB SUB 指令格式:指令格式: SUBcondS Rd,Rn,operand2 ;用寄存器用寄存器Rn
47、減去減去operand2,結(jié)果保存到,結(jié)果保存到Rd中。中。 應用示例:應用示例: SUBSR0,R0,#1;R0=R0-1 ;R0=R0-1 ,并影響標志位,并影響標志位 SUBSR2,R1,R2;R2=R1-R2;R2=R1-R2 ,并影響標志位,并影響標志位 ADD ADD 指令格式:指令格式: ADDcondS Rd,Rn,operand2 ; ;將將 operand2的值與的值與Rn的值相加,結(jié)果保存到的值相加,結(jié)果保存到Rd寄存器。寄存器。 應用示例:應用示例: ADDS R1,R1,#1;R1=R1+1;R1=R1+1,并影響標志位,并影響標志位 ADD R1,R1,R2;R1=
48、R1+R2;R1=R1+R2 RSBRSB逆向減法指令格式:逆向減法指令格式: RSBcondS Rd,Rn,operand2; ;將將operand2operand2的值減去的值減去RnRn,結(jié)果保存到,結(jié)果保存到RdRd中中 應用示例:應用示例: RSB R3,R1,#0 xFF00;R3=0 xFF00-R1;R3=0 xFF00-R1 RSBS R1,R2,R2,LSL #2;R1=(R22)-R2=R2;R1=(R22)-R2=R23 3 ADCADC帶進位加法指令格式:帶進位加法指令格式: ADCcondS Rd,Rn,operand2 ;將將operand2operand2的值與
49、的值與RnRn的值相加,再加上的值相加,再加上CPSRCPSR中的中的C C條件標志位,條件標志位, ; ;結(jié)果保存到結(jié)果保存到RdRd寄存器。寄存器。 應用示例:應用示例: ADDS R0,R0,R2 ;R0;R0等于低等于低3232位相加,并影響標志位位相加,并影響標志位 ADC R1,R1,R3;R1;R1等于高等于高3232位相加,并加上低位進位位相加,并加上低位進位 SBC SBC 帶進位減法指令格式:帶進位減法指令格式: SBCcondS Rd,Rn,operand2 ;用寄存器用寄存器Rn減去減去operand2,再減去,再減去CPSR中的中的 ;C條件標志位的非條件標志位的非(
50、即若即若C標志清零,則結(jié)果減去標志清零,則結(jié)果減去1), ;結(jié)果保存到結(jié)果保存到Rd中。中。 應用示例:應用示例: SUBS R0,R0,R2 ; 低低3232位相減,并影響標志位位相減,并影響標志位 SBC R1,R1,R3 ; ;高高3232位相減,并減去低位位相減,并減去低位 借位借位 RSC RSC 帶進位逆向減法指令格式:帶進位逆向減法指令格式: RSCcondS Rd,Rn,operand2; ;指令用寄存器指令用寄存器operand2operand2減去減去RnRn,再減去,再減去CPSRCPSR中的中的 ;C;C條件標志位,結(jié)果保存到條件標志位,結(jié)果保存到RdRd中。中。 應用
51、示例(使用應用示例(使用RSCRSC指令實現(xiàn)求指令實現(xiàn)求6464位數(shù)值的負數(shù)位數(shù)值的負數(shù) ):): RSBS R2,R0,#0 RSC R3,R1,#0 助記符助記符說明說明操作操作條件碼位置條件碼位置 AND Rd, Rn, operand2AND Rd, Rn, operand2邏輯與操作指令邏輯與操作指令RdRdRn ;指令將指令將operand2operand2的值與寄存器的值與寄存器RnRn的值按位作邏輯的值按位作邏輯“或或”操作,操作, ; ;結(jié)果保存到結(jié)果保存到RdRd中。中。 應用示例:應用示例: ORR R0,R0,#0 x0F; ;將將R0R0的低的低4 4位置位置1 1
52、MOVR1,R2,LSR #24 ; ;使用使用ORRORR指令將指令將R2R2的高的高8 8位位 ORRR3,R1,R3,LSL #8; ;數(shù)據(jù)移入到數(shù)據(jù)移入到R3R3低低8 8位中位中 AND AND 邏輯與操作指令格式:邏輯與操作指令格式: ANDcondS Rd,Rn,operand2; ; ;將將operand2operand2的值與寄存器的值與寄存器RnRn的值按位作邏輯的值按位作邏輯“與與”操作,操作, ; ;結(jié)果保存到結(jié)果保存到RdRd中。中。 應用示例:應用示例: ANDS R0,R0,#0 x01 ;R0=R0R0=R0R2=R1R2=R1將將operand2的值與寄存器的
53、值與寄存器Rn的值按位作的值按位作 ;邏輯邏輯“異或異或”操作操作,結(jié)果保存到結(jié)果保存到Rd中。中。 應用示例:應用示例: EORR1,R1,#0 x0F; ;將將R1R1的低的低4 4位取反位取反 EOR R2,R1,R0;R2=R1R0;R2=R1R0 EORSR0,R5,#0 x01 將將R5R5和和0 x010 x01進行邏輯異或,進行邏輯異或, ; ;結(jié)果保存到結(jié)果保存到R0R0,并影響標志位,并影響標志位 BIC BIC 位清除指令格式:位清除指令格式: BICcondS Rd,Rn, operand2 將寄存器將寄存器RnRn的值與的值與operand2operand2的值的反碼
54、的值的反碼 按位作邏輯按位作邏輯“與與”操作,結(jié)果保存到操作,結(jié)果保存到RdRd中中. . 應用示例:應用示例: BIC R1,R1,#0 x0F ; ;將將R1R1的低的低4 4位清零,其它位不變位清零,其它位不變 BICR1,R2,R3 ; ;將將R3R3的反碼和的反碼和R2R2相邏輯相邏輯“與與”, ; ;結(jié)果保存到結(jié)果保存到R1R1中中 助記符助記符說明說明操作操作條件碼位置條件碼位置 CMP Rn, operand2CMP Rn, operand2比較指令比較指令 標志標志N N、Z Z、C C、V VRn-Rn- operand2operand2 CMPcondCMPcond CM
55、N Rn, operand2CMN Rn, operand2負數(shù)比較指令負數(shù)比較指令 標 志標 志 N N 、 Z Z 、 C C 、 V VRn+operand2Rn+operand2 CMNcondCMNcond TST Rn, operand2TST Rn, operand2位測試指令位測試指令 標志標志N N、Z Z、C C、V VRn R1; R1與與1010比較,設置相關(guān)標志位比較,設置相關(guān)標志位 CMPR1,R2; ; R1R1與與R2R2比較,設置相關(guān)標志位比較,設置相關(guān)標志位 注意注意:CMPCMP指令與指令與SUBSSUBS指令的區(qū)別在于指令的區(qū)別在于CMPCMP指令不保存
56、運算結(jié)果。在指令不保存運算結(jié)果。在 進行兩個數(shù)據(jù)的大小判斷時,常用進行兩個數(shù)據(jù)的大小判斷時,常用CMPCMP指令及相應的條件碼來操作。指令及相應的條件碼來操作。 CMN CMN 負數(shù)比較指令格式:負數(shù)比較指令格式: CMNcondRn, operand2 使用寄存器使用寄存器RnRn的值加上的值加上operand2operand2的值,根據(jù)操作的結(jié)果更新的值,根據(jù)操作的結(jié)果更新CPSRCPSR中中 的相應條件標志位,以便后面的指令根據(jù)相應的條件標志來判斷是否執(zhí)行。的相應條件標志位,以便后面的指令根據(jù)相應的條件標志來判斷是否執(zhí)行。 應用示例:應用示例: CMNR0,#1 ; R0+1; R0+1
57、,判斷,判斷R0R0是否為是否為1 1的補碼的補碼 ; ;如果是,則設置如果是,則設置Z Z標志位標志位 注意注意:CMNCMN指令與指令與ADDSADDS指令的區(qū)別在于指令的區(qū)別在于CMNCMN指令不保存運算結(jié)果指令不保存運算結(jié)果. . TST TST 位測試指令格式:位測試指令格式: TSTcond Rn, operand2 將寄存器將寄存器RnRn的值與的值與operand2operand2的值按位作邏輯的值按位作邏輯“與與”操作,根據(jù)操作操作,根據(jù)操作 的結(jié)果更新的結(jié)果更新CPSRCPSR中的相應條件標志位,以便后面的指令根據(jù)相應的條件標中的相應條件標志位,以便后面的指令根據(jù)相應的條件
58、標 志來判斷是否執(zhí)行。志來判斷是否執(zhí)行。 應用示例應用示例: TSTR0,#0 x01; ; 判斷判斷R0R0的最低位是否為的最低位是否為0 0 TSTR1,#0 x0F; ; 判斷判斷R1R1的低的低4 4位是否為位是否為0 0 注意注意:TSTTST指令與指令與ANDSANDS指令的區(qū)別在于指令的區(qū)別在于TSTTST指令不保存運算結(jié)果。指令不保存運算結(jié)果。TSTTST 指令通常與指令通常與EQEQ、NENE條件碼配合使用,當所有測試位均為條件碼配合使用,當所有測試位均為0 0時,時,EQEQ有效,有效, 而只要有一個測試位不為而只要有一個測試位不為0 0,則,則NENE有效。有效。 TEQ
59、 TEQ 相等測試指令格式:相等測試指令格式: TEQcond Rn, operand2TEQcond Rn, operand2 指令將寄存器指令將寄存器RnRn的值與的值與operand2operand2的值按位作邏輯的值按位作邏輯“異或異或”操作,根據(jù)操操作,根據(jù)操 作的結(jié)果更新作的結(jié)果更新CPSRCPSR中的相應條件標志位,以便后面的指令根據(jù)相應的條件標中的相應條件標志位,以便后面的指令根據(jù)相應的條件標 志來判斷是否執(zhí)行。志來判斷是否執(zhí)行。 應用示例:應用示例: TEQR0,R1; ; 比較比較R0R0與與R1R1是否相等是否相等 ( (不影響不影響V V位和位和C C位位) ) 注意注
60、意:TEQTEQ指令與指令與EORSEORS指令的區(qū)別在于指令的區(qū)別在于TEQTEQ指令不保存運算結(jié)果。使用指令不保存運算結(jié)果。使用 TEQTEQ進行相等測試時,常與進行相等測試時,常與EQEQ、NENE條件碼配合使用。當兩個數(shù)據(jù)相等時,條件碼配合使用。當兩個數(shù)據(jù)相等時, EQEQ有效;否則有效;否則NENE有效。有效。 4.3.5 乘法指令乘法指令 ARM7TDMIARM7TDMI具有三種乘法指令,分別為:具有三種乘法指令,分別為: 32323232位乘法指令;位乘法指令; 3232 32 32位乘加指令;位乘加指令; 3232 32 32位結(jié)果為位結(jié)果為6464位的乘位的乘/ /乘加指令。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房產(chǎn)投資股合同范例
- 牛奶代理銷售合同范例
- 監(jiān)控值守人員合同范例
- 童鞋銷售合同范例
- 外聘焊工合同范例
- 員工合同范例
- 語言培訓合同范例
- 行政后勤合同范例
- 焊割配件服務合同范例
- 是非購銷合同范例
- 蔬菜產(chǎn)品供貨合同范例
- 品管圈PDCA獲獎案例-心內(nèi)科降低心肌梗死患者便秘發(fā)生率醫(yī)院品質(zhì)管理成果匯報
- 2023年初級會計師《初級會計實務》真題及答案
- 江南大學《人工智能》2022-2023學年第一學期期末試卷
- 初中物理教師個人校本研修工作計劃(20篇)
- 2024-2025學年三年級上冊道德與法治統(tǒng)編版期末測試卷 (有答案)
- 2025蛇年學校元旦聯(lián)歡晚會模板
- 廣東省潮州市潮安區(qū)2023-2024學年八年級上學期期末考試英語試題-A4
- 2024年度租賃期滿退房檢查清單:租戶與房東的交接確認單
- 種子生產(chǎn)與經(jīng)營基礎(chǔ)知識單選題100道及答案解析
- 江蘇省揚州市2023-2024學年高一上學期1月期末考試 物理 含解析
評論
0/150
提交評論