日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编指令:LDM、STM详解

發布時間:2025/4/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编指令:LDM、STM详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LDM:(load? much)多數據加載,將地址上的值加載到寄存器上

STM:(store much)多數據存儲,將寄存器的值存到地址上

(1)IA:(Increase After) 每次傳送后地址加4,其中的寄存器從左到右執行,例如:STMIA R0,{R1,LR} 先存R1,再存LR

(2)IB:(Increase Before)每次傳送前地址加4,同上

(3)DA:(Decrease After)每次傳送后地址減4,其中的寄存器從右到左執行,例如:STMDA R0,{R1,LR} 先存LR,再存R1

(4)DB:(Decrease Before)每次傳送前地址減4,同上

(5)FD:? 滿遞減堆棧 (每次傳送前地址減4)

(6)FA:? 滿遞增堆棧 (每次傳送后地址減4)

(7)ED:? 空遞減堆棧 (每次傳送前地址加4)

(8)EA:? 空遞增堆棧 (每次傳送后地址加4)

注意:其中在數據塊的傳輸中是STMMDB和LDMIA對應,STMMIA和LDMDB對應

而在堆棧操作是STMFD和LDMFD對應,STMFA和LDMFA對應

格式:

LDM{cond}? mode? Rn{!}, reglist{^}

STM{cond}? mode? Rn{!}, reglist{^}

其中

?Rn:基址寄存器,裝有傳送數據的起始地址,Rn不允許為R15;

?!:表示最后的地址寫回到Rn中;

?reglist:可包含多于一個寄存器范圍,用“,”隔開,如{R1,R2,R6-R9},寄存器由小到大順序排列;

?^:不允許在用戶模式和系統模式下運行

數據塊的傳輸-實例:

Ldr R1,=0x10000000????????? //傳送數據的起始地址0x10000000?????

LDMIB R1!,{R0,R4-R6}????? //從左到右加載,相當于 LDR R0,10000004? LDR R4,10000008... ...

/*傳送前地址加+4,

所以地址加4,R0=0X1000004地址里的內容,

地址加4,R4=0X10000008地址里的內容,

地址加4,R5=0X1000000C地址里的內容,

地址加4,R6=0X10000010 地址里的內容,

由于!, 最后的地址寫回到R1中,R1=0X10000010? ?*/

總結

以上是生活随笔為你收集整理的汇编指令:LDM、STM详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。