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

正文內(nèi)容

常用armv4指令集與匯編(編輯修改稿)

2025-05-14 04:52 本頁面
 

【文章內(nèi)容簡介】 ;使用 LDR 偽指令裝載NumCount的地址到R0LDR R1,[R0] ;取出變量值A(chǔ)DD R1,R1,1 ;NumCount=NumCount+1STR R1,[R0] ;保存變量值…GPIOBASE EQU 0Xe0028000 ;定義GPIO寄存器的基地址…LDR R0,=GPIOBASELDR R1,=0x00FFFF00 ;裝載32位立即數(shù),即設(shè)置值STR R1,[R0,0x0C] ;IODIR=0x00FFFF00, IODIR 的地址為 0xE002800CMOV R1,0x00F00000STR R1,[R0,0x04] ;IOSET=0x00F00000,IOSET 的地址為 0xE0028004…程序散轉(zhuǎn)…MOV R2,R2,LSL 2 ;功能號(hào)乘上 4,以便查表LDR PC,[PC,R2] ;查表取得對(duì)應(yīng)功能子程序地址,并跳轉(zhuǎn)NOPFUNTAB DCD FUNSUB0DCD FUNSUB1DCD FUNSUB2…◆LDM和STM批量加載/存儲(chǔ)指令可以實(shí)現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳輸數(shù)據(jù)。LDM為加載多個(gè)寄存器,STM為存儲(chǔ)多個(gè)寄存器。允許一條指令傳送16個(gè)寄存器的任何子集或所有寄存器。指令格式如下:LDM{cond}模式 Rn{!},reglist{^}STM{cond}模式 Rn{!},reglist{^}LDM /STM 的主要用途是現(xiàn)場保護(hù)、數(shù)據(jù)復(fù)制、參數(shù)傳送等。其模式有8種,如下:(前面4種用于數(shù)據(jù)塊的傳輸,后面 4 種是堆棧操作)(1) IA:每次傳送后地址加 4(2) IB:每次傳送前地址加 4(3) DA:每次傳送后地址減 4(4) DB:每次傳送前地址減 4(5) FD:滿遞減堆棧(6) ED:空遞增堆棧(7) FA:滿遞增堆棧(8) EA:空遞增堆棧其中,寄存器 Rn 為基址寄存器,裝有傳送數(shù)據(jù)的初始地址,Rn 不允許為 R15;后綴“!”表示最后的地址寫回到Rn中;寄存器列表 reglist 可包含多于一個(gè)寄存器或寄存器范圍,使用“,”分開,如{R1,R2,R6R9},寄存器排列由小到大排列;“^”后綴不允許在用戶模式和系統(tǒng)模式下使用,若在LDM指令用寄存器列表中包含有PC時(shí)使用,那么除了正常的多寄存器傳送外,將SPSR拷貝到CPSR中,這可用于異常處理返回;使用“^”后綴進(jìn)行數(shù)據(jù)傳送且寄存器列表不包含 PC 時(shí),加載/存儲(chǔ)的是用戶模式的寄存器,而不是當(dāng)前模式的寄存器。地址對(duì)準(zhǔn)――這些指令忽略地址的位[1:0] 批量加載/存儲(chǔ)指令舉例如下:LDMIA R0!,{R3R9} ;加載 R0 指向的地址上的多字?jǐn)?shù)據(jù),保存到R3~R9 中,R0 值更新 STMIA R1!,{R3R9} ;將 R3~R9 的數(shù)據(jù)存儲(chǔ)到R1指向的地址上,R1值更新 STMFD SP!,{R0R7,LR} ;現(xiàn)場保存,將 R0~RLR 入棧LDMFD SP!,{R0R7,PC} ;恢復(fù)現(xiàn)場,異常處理返回在進(jìn)行數(shù)據(jù)復(fù)制時(shí),先設(shè)置好源數(shù)據(jù)指針,然后使用塊拷貝尋址指令LDMIA/STMIA、 LDMIB/STMIB、LDMDA/STMDA、LDMDB/STMDB 進(jìn)行讀取和存儲(chǔ)。而進(jìn)行堆棧操作時(shí),則要先設(shè)置堆棧指針,一般使用 SP 然后使用堆棧尋址指令STMFD/LDMFD、STMED。LDMED、 STMFA/LDMFA、STMEA/LDMEA 實(shí)現(xiàn)堆棧操作。多寄存器傳送指令示意圖如下圖所示,其中R1為指令執(zhí)行前的基址寄存器,R1則為指令執(zhí)行完后的基址寄存器。 a)指令STMIA R1!,{R5R7}b)指令STMIB R1!,{R5R7}c)指令STMDA R1!, {R5R7}d)指令STMDB R1!,{R5R7}數(shù)據(jù)是存儲(chǔ)在基址寄存器的地址之上還是之下,地址是在存儲(chǔ)第一個(gè)值之前還是之后增加還是減少。多寄存器傳送指令映射向上生長向下生長滿空滿空增加之前STMIBLDMIBSTMFALDMED之后STMIALDMIASTMEALDMFD增加之前LDMDBSTMDBLDMEASTMFD之后LDMDASTMDALDMFASTMED使用 LDM/STM 進(jìn)行數(shù)據(jù)復(fù)制:…LDR R0,=SrcData ;設(shè)置源數(shù)據(jù)地址LDR R1,=DstData ;設(shè)置目標(biāo)地址LDMIA R0,{R2R9} ;加載 8 字?jǐn)?shù)據(jù)到寄存器R2R9TMIA R1,{R2~R9} ;存儲(chǔ)寄存器 R2~R9 到目標(biāo)地址使用 LDM/STM 進(jìn)行現(xiàn)場寄存器保護(hù),常在子程序中或異常處理使用:SENDBYTESTMFD SP!,{R0R7,LR} ;寄存器入堆…BL DELAY ;調(diào)用DELAY子程序…LDMFD SP!,{R0R7,PC} ;恢復(fù)寄存器,并返回◆SWP寄存器和存儲(chǔ)器交換指令。SWP 指令用于將一個(gè)內(nèi)存單元(該單元地址放在寄存器 Rn 中)的內(nèi)容讀取到一個(gè)寄存器 Rd 中,同時(shí)將另一個(gè)寄存器 Rm 的內(nèi)容寫入到該內(nèi)存單元中。使用 SWP可實(shí)現(xiàn)信號(hào)量操作。指令格式如下: SWP{cond}{B} Rd,Rm,[Rn]其中,B 為可選后綴,若有 B,則交換字節(jié),否則交換 32 位字:Rd 為數(shù)據(jù)從存儲(chǔ)器加載到的寄存器;Rm 的數(shù)據(jù)用于存儲(chǔ)到存儲(chǔ)器中,若 Rd 與 Rm 相同,則為寄存器與存儲(chǔ)器內(nèi)容進(jìn)行交換;Rn 為要進(jìn)行數(shù)據(jù)交換的存儲(chǔ)器地址,Rn 不能與 Rd 和 Rm 相同。SWP 指令舉例如下:SWP R1,R1,[R0] ;將 R1的內(nèi)容與 R0指向的存儲(chǔ)單元的內(nèi)容進(jìn)行交換SWPB R1,R2,[R0] ;將 R0指向的存儲(chǔ)單元內(nèi)容讀取一字節(jié)數(shù)據(jù)到R1中 ;(高24 位清零),并將R2的內(nèi)容寫入到該內(nèi)存單元中 ;(最低字節(jié)有效)使用 SWP 指令可以方便地進(jìn)行信號(hào)量的操作:12C_SEM EQU 0x40003000…12C_SEM_WAIT MOV R0,0 LDR R0,=12C_SEM SWP R1,R1,[R0] ;取出信號(hào)量,并設(shè)置其為 0 CMP R1,0 ;判斷是否有信號(hào) BEQ 12C_SEM_WAIT ;若沒有信號(hào),則等待ARM 數(shù)據(jù)處理指令數(shù)據(jù)處理指令大致可分為 3 類;數(shù)據(jù)傳送指令(如 MOV、MVN),算術(shù)邏輯運(yùn)算指令 (如 ADD,SUM,AND),比較指令(如 CMP,TST)。數(shù)據(jù)處理指令只能對(duì)寄存器的內(nèi)容進(jìn)行操作。 所有 ARM 數(shù)據(jù)處理指令均可選擇使用 S 后綴,以影響狀態(tài)標(biāo)志。比較指令 CMP,CMN,TST 和 TEQ 不需要后綴 S,它們會(huì)直接影響狀態(tài)標(biāo)志。ARM 數(shù)據(jù)處理指令助記符號(hào)說明操作條件碼位置MOV Rd ,operand2數(shù)據(jù)轉(zhuǎn)送Rd←operand2MOV {cond}{S}MVN Rd ,operand2數(shù)據(jù)非轉(zhuǎn)送Rd←(operand2)MVN {cond}{S}ADD Rd,Rn operand2加法運(yùn)算指令Rd←Rn+operand2ADD {cond}{S}SUB Rd,Rn operand2減法運(yùn)算指令Rd←Rnoperand2SUB {cond}{S}RSB Rd,Rn operand2逆向減法指令Rd←operand2RnRSB {cond}{S}ADC Rd,Rn operand2帶進(jìn)位加法Rd←Rn+operand2+carryADC {cond}{S}SBC Rd,Rn operand2帶進(jìn)位減法指令Rd←Rnoperand2(NOT)CarrySBC {cond}{S}RSC Rd,Rn operand2帶進(jìn)位逆向減法指令Rd←operand2Rn(NOT)CarryRSC {cond}{S}AND Rd,Rn operand2邏輯與操作指令Rd←Rnamp。operand2AND {cond}{S}ORR Rd,Rn operand2邏輯或操作指令Rd←Rn|operand2ORR {cond}{S}EOR Rd,Rn operand2邏輯異或操作指令Rd←Rn^operand2EOR {cond}{S}BIC Rd,Rn operand2位清除指令Rd←Rnamp。(~operand2)BIC {cond}{S}CMP Rn,operand2比較指令標(biāo)志 N、Z、C、V←Rnoperand2CMP {cond}CMN Rn,operand2負(fù)數(shù)比較指令標(biāo)志 N、Z、C、V←Rn+operand2CMN {cond}TST Rn,operand2位測試指令標(biāo)志 N、Z、C、V←Rn&operand2TST {cond}TEQ Rn,operand2相等測試指令標(biāo)志 N、Z、C、V←Rn^operand2TEQ {cond}數(shù)據(jù)傳送指令◆ MOV數(shù)據(jù)傳送指令。將 8 位立即數(shù)或寄存器(operant2)傳送到目標(biāo)寄存器 Rd,可用于移位運(yùn)算等操作。指令格式如下:MOV{cond}{S} Rd,operand2 MOV 指令舉例如下:MOV R10x10 ;R1=0x10MOV R0,R1 ;R0=R1MOVS R3,R1,LSL 2 ;R3=R1<<2,并影響標(biāo)志位MOV PC,LR ;PC=LR ,子程序返回◆ MVN數(shù)據(jù)非傳送指令。將 8 位立即數(shù)或寄存器(operand2)按位取反后傳送到目標(biāo)寄存器(Rd),因?yàn)槠渚哂腥》垂δ埽钥梢匝b載范圍更廣的立即數(shù)。指令格式如下:MVN{cond}{S} Rd,operand2 MVN指令舉例如下:MVN R1,0xFF ;R1=0xFFFFFF00MVN R1,R2 ;將 R2 取反,結(jié)果存到R1算術(shù)邏輯運(yùn)算指令◆ ADD加法運(yùn)算指令。將 operand2 數(shù)據(jù)與 Rn 的值相加,結(jié)果保存到 Rd 寄存器。指令格式如下:ADD{cond}{S} Rd,Rn,operand2 ADD指令舉例如下:ADDS R1,R1,1 ;R1=R1+1ADD R1,R1,R2 ;R1=R1+R2ADDS R3,R1,R2,LSL 2 ;R3=R1+R2<<2◆ SUB減法運(yùn)算指令。用寄存器 Rn 減去 operand2。結(jié)果保存到 Rd 中。指令格式如下: SUB{cond}{S} Rd,Rn,operand2SUB 指令舉例如下SUBS R0,R0,1 ;R0=R01SUBS R2,R1,R2 ;R2=R1R2SUB R6,R7,0x10 ;R6=R70x10◆ RSB逆向減法指令。用寄存器 operand2 減法 Rn,結(jié)果保存到 Rd 中。指令格式如下: RSB{cond}{S} Rd,Rn,operand2SUB 指令舉例如下:RSB R3,R1,0xFF00 ;R3=0xFF00R1RSBS R1,R2,R2,LSL 2 ;R1=R2<<2R2=R23RSB R0,R1,0 ;R0=R1◆ ADC帶進(jìn)位加法指令。將 operand2 的數(shù)據(jù)與 Rn 的值相加,再加上 CPSR 中的 C 條件標(biāo)志位。結(jié)果保存到 Rd 寄存器。指令格式如下;ADC{cond}{S} Rd,Rn,operand2ADC指令舉例如下:ADDS R0,R0,R2 ADC R1,R1,R3 ;使用 ADC 實(shí)現(xiàn) 64 位加法,(RR0)=(RR0)+(RR2)◆ SBC帶進(jìn)位減法指令。用寄存器 Rn 減去 operand2,再減去 CPSR 中的 C 條件標(biāo)志位的非(即若 C 標(biāo)志清零,則結(jié)果減去 1),結(jié)果保存到 Rd 中。指令格式如下:SBC{cond}{S}Rd,Rn,operand2 SBC指令舉例如下:SUBS R0,R0,R2 SBC R1,R1,R3 ;使用 SBC 實(shí)現(xiàn) 64 位減法,(R1,R0)(R3,R2)◆ RSC帶進(jìn)位逆向減法指令。用寄存器 operand2 減去 Rn,再減去 CPSR 中的 C 條件標(biāo)志位, 結(jié)果保存到 Rd 中。指令格式如下:RSC{cond}{S} Rd,Rn,operand2RSC指令舉例如下:RSBS R2,R0,0 RSC R3,R1,0 ;使用 RSC 指令實(shí)現(xiàn)求 64 位數(shù)值的負(fù)數(shù)◆ AND邏輯與操作指令。將 operand2 值與寄存器 Rn 的值按位作邏輯與操作,結(jié)果保存到 Rd 中。指令格式如下:AND{cond}{S} Rd,Rn,operand2AND指令舉例如下:ANDS R0,R0,x01 ;R0=R0amp。0x01,取出最低位數(shù)據(jù)AND R2,R1,R3 ;R2=R1amp。R3◆ ORR邏輯或操作指令。將 operand2 的值與寄存器 Rn 的值按位作邏輯或操作,結(jié)果保存到 Rd 中。指令格式如下:ORR{cond}{S} Rd,Rn,operand2 ORR指令舉例如下:ORR R0,R0,x0F ;將 R0 的低 4 位置 1MOV R1,R2,LSR 4ORR R3,R1,R3,LSL 8 ;
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1