資料介紹
5.3 單寄存器的Load/Store指令
Load/Store內存訪問指令在ARM寄存器和存儲器之間傳送數據。ARM指令中有3種基本的數據傳送指令。
?、?單寄存器Load/Store指令(Single Register)
這些指令在ARM寄存器和存儲器之間提供更靈活的單數據項傳送方式。數據項可以是字節、16位半字或32位字。
② 多寄存器Load/Store內存訪問指令
這些指令的靈活性比單寄存器傳送指令差,但可以使大量的數據更有效地傳送。它們用于進程的進入和退出、保存和恢復工作寄存器以及拷貝存儲器中的一塊數據。
③ 單寄存器交換指令(Single Register Swap)
這些指令允許寄存器和存儲器中的數值進行交換,在一條指令中有效地完成Load/Store操作。它們在用戶級編程中很少用到。它的主要用途是在多處理器系統中實現信號量(Semaphores)的操作,以保證不會同時訪問公用的數據結構。
5.3.1 字數據傳送指令
這種指令用于把單一的數據傳入或者傳出一個寄存器。支持的數據類型有字節(8位)、半字(16位)和字(32位)。
表5.1總結了所有單寄存器的Load/Store指令。
表5.1 單寄存器Load/Store指令
指 令作 用操 作
LDR把一個字裝入一個寄存器Rd←mem32[address]
STR將存儲器中的字保存到寄存器Rd→mem32[address]
LDRB把一個字節裝入一個寄存器Rd←mem8[address]
STRB將寄存器中的低8位字節保存到存儲器Rd→mem8[address]
LDRH把一個半字裝入一個寄存器Rd←mem16[address]
STRH將寄存器中的低16位半字保存到存儲器Rd→mem16[address]
LDRBT用戶模式下將一個字節裝入寄存器Rd←mem8[address] under user mode
STRBT用戶模式下將寄存器中的低8位字節保存到存儲器Rd→mem8[address] under user mode
LDRT用戶模式下把一個字裝入一個寄存器Rd←mem32[address]under user mode
STRT用戶模式下將存儲器中的字保存到寄存器Rd→mem32[address] ]under user mode
LDRSB把一個有符號字節裝入一個寄存器Rd←sign{mem8[address]}
LDRSH把一個有符號半字裝入一個寄存器Rd←sign{mem16[address]}
1.LDR指令
?。?)指令編碼格式
LDR指令用于從內存中將一個32位的字讀取到目標寄存器。
指令的編碼格式如圖5.3所示。

圖5.3 LDR指令編碼格式
LDR指令根據《addr_mode》所確定的地址模式將一個32位字讀取到指令中的目標寄存器《Rd》。如果指令中的尋址方式確定的地址不是字對齊的,則讀出的數值要進行循環右移。所移位數為尋址方式確定的地址bits[1∶0]8的倍,也就是說處理器將取到的數值作為字的最低位處理。
如果設置了L位,則進行裝載,否則進行存儲。
如果設置了P位,則使用預先變址尋址,否則使用過后變址尋址。
如果設置了U位,則給出的偏移量被加到基址寄存器上,否則從中減去偏移量。
如果設置了B位,傳送內存的一個字節,否則傳送一個字。這在助記符末尾添加后綴“B”,如MOV r7,r5變為MOVB r7,r5。
W位的解釋依賴于使用的地址模式。
· 對于預先變址尋址,設置W位強制把它用做地址轉換的最終地址寫回基址寄存器中(例如,傳送的副作用是Rn:= Rn +/-offset。這在匯編器中表示為給指令加上后綴“!”。)。
· 對于過后變址尋址,地址總是寫回,設置 W 位指示在進行傳送之前強制地址轉換。這在匯編器中表示為給指令加上后綴“T”。
當PC作為LDR的目的寄存器《Rd》時,從存儲器取得的數據將被當作目標地址值,程序將跳轉到目標地址開始執行。
(2)指令的語法格式
LDR{《cond》} 《Rd》,《addr_mode》
?、?《cond》
為指令編碼中的條件域。它指示LDR指令在什么條件下執行。當《cond》忽略時,指令為無條件執行(cond=AL(Alway))。
② 《Rd》
確定使用哪個通用寄存器作為目標寄存器。
③ 《addr_mode》
它確定了指令編碼中的I、P、U、W、Rn和《addr_mode》位。所有的尋址模式中,都會確定一個基址寄存器Rn。
Load/Store內存訪問指令在ARM寄存器和存儲器之間傳送數據。ARM指令中有3種基本的數據傳送指令。
?、?單寄存器Load/Store指令(Single Register)
這些指令在ARM寄存器和存儲器之間提供更靈活的單數據項傳送方式。數據項可以是字節、16位半字或32位字。
② 多寄存器Load/Store內存訪問指令
這些指令的靈活性比單寄存器傳送指令差,但可以使大量的數據更有效地傳送。它們用于進程的進入和退出、保存和恢復工作寄存器以及拷貝存儲器中的一塊數據。
③ 單寄存器交換指令(Single Register Swap)
這些指令允許寄存器和存儲器中的數值進行交換,在一條指令中有效地完成Load/Store操作。它們在用戶級編程中很少用到。它的主要用途是在多處理器系統中實現信號量(Semaphores)的操作,以保證不會同時訪問公用的數據結構。
5.3.1 字數據傳送指令
這種指令用于把單一的數據傳入或者傳出一個寄存器。支持的數據類型有字節(8位)、半字(16位)和字(32位)。
表5.1總結了所有單寄存器的Load/Store指令。
表5.1 單寄存器Load/Store指令
指 令作 用操 作
LDR把一個字裝入一個寄存器Rd←mem32[address]
STR將存儲器中的字保存到寄存器Rd→mem32[address]
LDRB把一個字節裝入一個寄存器Rd←mem8[address]
STRB將寄存器中的低8位字節保存到存儲器Rd→mem8[address]
LDRH把一個半字裝入一個寄存器Rd←mem16[address]
STRH將寄存器中的低16位半字保存到存儲器Rd→mem16[address]
LDRBT用戶模式下將一個字節裝入寄存器Rd←mem8[address] under user mode
STRBT用戶模式下將寄存器中的低8位字節保存到存儲器Rd→mem8[address] under user mode
LDRT用戶模式下把一個字裝入一個寄存器Rd←mem32[address]under user mode
STRT用戶模式下將存儲器中的字保存到寄存器Rd→mem32[address] ]under user mode
LDRSB把一個有符號字節裝入一個寄存器Rd←sign{mem8[address]}
LDRSH把一個有符號半字裝入一個寄存器Rd←sign{mem16[address]}
1.LDR指令
?。?)指令編碼格式
LDR指令用于從內存中將一個32位的字讀取到目標寄存器。
指令的編碼格式如圖5.3所示。

圖5.3 LDR指令編碼格式
LDR指令根據《addr_mode》所確定的地址模式將一個32位字讀取到指令中的目標寄存器《Rd》。如果指令中的尋址方式確定的地址不是字對齊的,則讀出的數值要進行循環右移。所移位數為尋址方式確定的地址bits[1∶0]8的倍,也就是說處理器將取到的數值作為字的最低位處理。
如果設置了L位,則進行裝載,否則進行存儲。
如果設置了P位,則使用預先變址尋址,否則使用過后變址尋址。
如果設置了U位,則給出的偏移量被加到基址寄存器上,否則從中減去偏移量。
如果設置了B位,傳送內存的一個字節,否則傳送一個字。這在助記符末尾添加后綴“B”,如MOV r7,r5變為MOVB r7,r5。
W位的解釋依賴于使用的地址模式。
· 對于預先變址尋址,設置W位強制把它用做地址轉換的最終地址寫回基址寄存器中(例如,傳送的副作用是Rn:= Rn +/-offset。這在匯編器中表示為給指令加上后綴“!”。)。
· 對于過后變址尋址,地址總是寫回,設置 W 位指示在進行傳送之前強制地址轉換。這在匯編器中表示為給指令加上后綴“T”。
當PC作為LDR的目的寄存器《Rd》時,從存儲器取得的數據將被當作目標地址值,程序將跳轉到目標地址開始執行。
(2)指令的語法格式
LDR{《cond》} 《Rd》,《addr_mode》
?、?《cond》
為指令編碼中的條件域。它指示LDR指令在什么條件下執行。當《cond》忽略時,指令為無條件執行(cond=AL(Alway))。
② 《Rd》
確定使用哪個通用寄存器作為目標寄存器。
③ 《addr_mode》
它確定了指令編碼中的I、P、U、W、Rn和《addr_mode》位。所有的尋址模式中,都會確定一個基址寄存器Rn。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- CS,IP和PC寄存器2次下载
- HELLODSP中F2812寄存器速查14次下载
- ARM的交换指令总结1次下载
- 浅谈单寄存器数据传送指令1次下载
- Thumb指令集之多寄存器数据传送指令解析0次下载
- 数据传送指令之程序状态寄存器指令简述1次下载
- ARM指令寻址方式之内存访问指令寻址1次下载
- 多寄存器Load/Store内存访问指令1次下载
- 51寄存器的所有寄存器名称,(包括寄存器每一位的作用及用法)资源详解14次下载
- 寄存器的使用技巧及定义2次下载
- 基于PIT寄存器图解7次下载
- arm程序状态寄存器访问指令0次下载
- DSP2812寄存器详解8次下载
- 间接寻址及地址寄存器指令19次下载
- 寄存器与移位寄存器59次下载
- PLC移位寄存器指令的工作过程2717次阅读
- CPSR寄存器和APSR寄存器的组成5563次阅读
- ARM通用寄存器及状态寄存器详解8264次阅读
- PLC移位寄存器指令应用举例4018次阅读
- PLC移位寄存器指令的工作原理6596次阅读
- 寄存器与内存的区别10380次阅读
- 技术 | FANUC数据寄存器和位置寄存器的运用介绍17997次阅读
- 工业机器人FANUC数据位置寄存器和位置寄存器的运用小知识分享34372次阅读
- CPU寄存器详解12036次阅读
- 寄存器操作方法_对寄存器操作的通用方法总结23853次阅读
- 逆向基础之寄存器和内存详解3149次阅读
- 移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途20657次阅读
- plc移位寄存器指令的应用19861次阅读
- 西门子plc移位寄存器指令53716次阅读
- 寄存器传输语言详解6552次阅读
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1490次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 92次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7藍牙設備在嵌入式領域的廣泛應用
- 0.63 MB | 3次下載 | 免費
- 89天練會電子電路識圖
- 5.91 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論