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

正文內容

匯編及嵌入式c語言—第二章-資料下載頁

2025-01-22 00:05本頁面
  

【正文】 加載半字數據,放入 Rd中,高 16位清零 STR{cond}H Rd,地址 。存儲半字數據,要存儲的數據在 Rd,最低 16位有效 說明:帶符號位半字 /字節(jié)加載是指符號位 擴展到 32位;無符號位半字加載是指零擴 展到 32位 舉例如下: LDRSB R1,[R0,R3] ; R1 ← [R0+R3]字節(jié)數據 ,高 24位用符號位擴展 LDRSH R1,[R9] ; R0 ← [R9]半字數據 , 高 16位用符號位擴展 LDRH R6,[R2], 2 ; R6 ← [R2]半字數據 ,高 16位用零擴展, R2=R2+2 STRH R1,[R0,2]! ; [R0+2] ← R1,只存儲低 2位字節(jié)數據 , R0=R0+2 ? 這類 LDR/STR指令可以 加載 /存儲兩個相鄰的寄存器, 64位雙字 。指令格式如下: LDR{cond}D Rd,地址 。加載指定地址上的數據放入 Rd中,加載(指定地址 +4)地址上的數據放入 R( d+1)中 STR{cond}D Rd,地址 。 將 Rd的數據存儲到指定地址上,將 R(d+1)的數據存儲到(指定地址 +4)的地址上 注意: Rd 加載 /存儲寄存器中的一個,另一個是 R( d+1)。 Rd必須是偶數寄存器,且不是 R14。 舉例如下: LDRD R6,[R11] ; R6 ← [R11], R7 ← [R11+4] STRD R4,[R9,24] ; R4 → [R9+24], R5 → [R9+28] LDRD R0,[R2], 2 ; R0 ← [R2], R1 ← [R2+4], R2=R2+2 STRD R2,[R0,2]! ; [R0+2] ← R2, [R0+6] ← R3, R0=R0+2 批量 Load/Store指令的尋址方式 ? 多寄存器加載 /存儲指令可以實現在一組寄存器或一塊連續(xù)的內存單元之間傳輸數據。LDM為加載多個寄存器; STM為存儲多個寄存器。允許一條指令傳送 16個寄存器的任何子集或所有寄存器。它們主要用于現場保護、數據復制、常數傳遞等。 ? 指令格式如下: LDM{cond}模式 Rn{!}, reglist{^} STM{cond}模式 Rn{!}, reglist{^} cond:指令執(zhí)行的條件; 模式:控制地址的增長方式,一共有 8種模式; !:表示在操作結束后,將最后的地址寫回Rn中; reglist :表示寄存器列表,可以包含多個寄存器,它們使用“ ,”隔開,如 {R1,R2,R6R9},寄存器由小到大排列; ? 指令格式如下: LDM{cond}模式 Rn{!}, reglist{^} STM{cond}模式 Rn{!}, reglist{^} ^:可選后綴,允許在用戶模式或系統(tǒng)模式下使用。它有以下兩個功能: 1)若是 LDM且寄存器列表包含 PC時,那么除了正常的數據傳送外,還將 SPSR也復制到 CPSR中。可用于異常處理返回。 2)數據傳入或傳出的是用戶模式下的寄存器,而不是當前模式下的寄存器。 ? 多寄存器加載 /存儲指令的 8種模式如下表所示,右邊四種為堆棧操作、左邊四種為數據傳送操作。 模式 說明 模式 說明 IA 每次傳送后地址加 4 FD 滿遞減堆棧 IB 每次傳送前地址加 4 ED 空遞減堆棧 DA 每次傳送后地址減 4 FA 滿遞增堆棧 DB 每次傳送前地址減 4 EA 空遞增堆棧 數據塊傳送操作 堆棧操作 批量 Load/Store指令的尋址方式 進行數據復制時,先設置好源數據指針和目標指針,然后使用塊拷貝尋址指令LDMIA/STMIA、 LDMIB/STMIB、 LDMDA/STMDA、LDMDB/STMDB進行讀取和存儲 。 進行堆棧操作操作時,要先設置堆棧指針( SP),然后使用堆棧尋址指令STMFD/LDMFD 、 STMED/LDMED、 STMFA/LDMFA和 STMEA/LDMEA實現堆棧操作。 批量 Load/Store指令的尋址方式 數據塊傳送指令操作過程如下圖所示 ,其中 R1為指令執(zhí)行前的基址寄存器 , R1’則為指令執(zhí)行后的基址寄存器 。 R5 R6 R7 R1 ? R1’ ? 指令 STMIA R1!,{R5R7} 4008H 4004H 4000H 4014H 4010H 400CH R5 R6 R7 R1 ? R1’ ? 指令 STMDA R1!,{R5R7} 4008H 4004H 4000H 4014H 4010H 400CH R5 R6 R7 R1 ? R1’ ? 指令 STMIB R1!,{R5R7} 4008H 4004H 4000H 4014H 4010H 400CH R5 R6 R7 R1’ ? R1 ? 指令 STMDB R1!,{R5R7} 4008H 4004H 4000H 4014H 4010H 400CH 批量 Load/Store指令的尋址方式 向上生長 向下生長 滿 空 滿 空 增加 之前 STMIB LDMIB STMFA LDMED 之后 STMIA LDMIA STMEA LDMFD 減少 之前 LDMDB STMDB LDMEA STMFD 之后 LDMDA STMDA LDMFA STMED 批量 Load/Store指令的尋址方式 舉例如下: LDMIA R0,{R1R4} ; R1 ← [R0], R2 ← [R0+4], R3 ← [R0+8], R4 ← [R0+12] LDMIA R0! ,{R1R4} ; R1 ← [R0], R2 ← [R0+4], R3 ← [R0+8], R4 ← [R0+12] R0=R0+16 STMDB R0,{R1R4} ; [R04] ← R4, [R08] ← R3, [R012] ← R2, [R016] ← R1 STMIA R0,{R1R4} ; [R0] ← R1, [R0+4] ← R2, [R0+8] ← R3, [R0+12] ← R4 批量 Load/Store指令的尋址方式 舉例如下: STMEA R13,{R5R8} ; [R13] ← R5, [R13+4] ← R6, [R13+8] ← R7, [R13+12] ← R8 STMED R13,{R5R8} ; [R13] ← R8, [R134] ← R7, [R138] ← R6, [R1312] ← R5 STMFD R13,{R5R8} ; [R134] ← R8, [R138] ← R7, [R1312] ← R6, [R1316] ← R5 LDMED R13,{R5R8} ; R5 ← [R13+4], R6 ← [R13+8], R7 ← [R13+12], R8 ← [R13+16] LDMFA R13,{R5R8} ; R8 ← [R13], R7 ← [R134], R6 ← [R138], R5 ← [R1312] 批量 Load/Store指令的尋址方式 兩段代碼的執(zhí)行結果是一樣的 , 但是使用堆棧指令的壓棧和出棧操作編程很簡單 ( 只要前后一致即可 ) , 而使用數據塊指令進行壓棧和出棧操作則需要考慮空與滿 、 加與減對應的問題 。 。使用數據塊傳送指令進行堆棧操作 STMDA R0!,{R5R6} . . . LDMIB R0!,{R5R6} 。使用堆棧指令進行堆棧操作 STMED R13!,{R5R6} . . . LDMED R13!,{R5R6} 批量 Load/Store指令的尋址方式 寫出下面程序執(zhí)行的過程: LDR SP,=0x3ff0000 LDR R0,=0x1 LDR R1,=0x2 LDR R2,=0x3 STMEA R13!,{R0R2} LDR R0,[R3],R2,LSL 2 LDR R2,[R0,3] LDMEA R13!,{R0R2} ARM指令集介紹 跳轉指令 ? 在 ARM中有兩種方式可以實現程序的跳轉,一種是使用跳轉指令,另一種則是直接向 PC寄存器寫入跳轉地址值。 跳轉指令有以下四種: – 跳轉指令 B; – 帶返回的跳轉指令 BL; – 帶狀態(tài)切換的跳轉指令 BX; – 帶返回和狀態(tài)切換的跳轉指令 BLX。 跳轉指令 ? 分支指令 —— B指令,該指令跳轉范圍限制在當前指令的 177。 32M字節(jié)地址內 (ARM指令為字對齊,最低 2位地址固定為 0)。指令格式如下: B{cond} Label 應用示例: B WAITA 。 跳轉到 WAITA標號處 B 0x1234 。 跳轉到絕對地址 0x1234處 跳轉指令 ? 帶返回的跳轉指令 —— BL指令,適用于子程序調用,使用該指令跳轉之前,下一條指令的地址被拷貝到 R14(即 LR) 連接寄存器中,然后跳轉到指定地址運行程序。指令格式如下: BL{cond} Label BL Label xxx xxx Label xxx MOV PC,LR Addr1 Addr2 xxx xxx LR PC Addr1 LabelAddr2 Addr2 BL跳轉指令時,硬件將下一條指令的地址 Addr2裝入 LR寄存器,并把跳轉地址裝入程序計數器( PC) 2. 程序跳轉到目標地址Label繼續(xù)執(zhí)行,當子程序執(zhí)行結束后,將 LR寄存器內容存入 PC,返回調用函數繼續(xù)執(zhí)行 跳轉指令 ? 帶狀態(tài)切換的跳轉指令 —— BX指令,該指令可以根據跳轉地址( Rm)的最低位來切換處理器狀態(tài)。指令格式如下: BX{cond} Rm 跳轉地址 Rm[0] 跳轉后 CPSR標志 T位 處理器狀態(tài) 0 0 ARM 1 1 Thumb 跳轉指令 ? 帶返回和狀態(tài)切換的跳轉指令 —— BLX指令,該指令跳轉到指令中所指定的目標地址時,將處理器的工作狀態(tài)由 ARM狀態(tài)切換到Thumb狀態(tài),使用該指令跳轉之前,下一條指令的地址被拷貝到 R14(即 LR) 連接寄存器中。指令格式如下: BLX Label BLX{cond} Rm 數據處理指令 ? 數據處理指令的作用是通過寄存器來對操作數進行計算,大致可分為 3類: – 數據傳送指令; – 算術邏輯運算指令; – 比較指令。 數據處理指令只能對寄存器的內容進行操作,而不能對內存中的數據進行操作。所有 ARM數據處理指令均可選擇使用 S后綴,以影響狀態(tài)標志。比較指令 CMP、
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1