国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM

這篇具有很好參考價(jià)值的文章主要介紹了寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

有的時(shí)候,CPU可能會(huì)遇到 a++; b++; c++,這個(gè)時(shí)候?yàn)榱颂嵘?,CPU可能會(huì)一次將多個(gè)寄存器里的變量保存到內(nèi)存中。這個(gè)時(shí)候之前介紹的 LDR / STR 指令雖然也能實(shí)現(xiàn),但只能操作一個(gè)寄存器的讀寫(xiě)。

因此,考慮到這點(diǎn),下面介紹多個(gè)寄存器的讀寫(xiě)指令

  • 多個(gè)寄存器的數(shù)據(jù)寫(xiě)入到內(nèi)存? ? ? ? ? ? ? —— STM指令
  • 從內(nèi)存中讀取數(shù)據(jù)保存到多個(gè)寄存器? ? ? ?—— LDM指令?

? ? ? ? ? 目錄

1、基本讀寫(xiě)指令

(1) STM 指令

(2) LDM 指令

2、多寄存器的內(nèi)存讀寫(xiě)方式

(1) 后綴 IA(默認(rèn))

(2) 后綴 IB

(3) 后綴 DA

(4) 后綴 DB


1、基本讀寫(xiě)指令

(1) STM 指令

STM指令的作用是將多個(gè)寄存器的數(shù)據(jù)依次保存到內(nèi)存中的某一個(gè)位置。

指令格式:

  • STM 第一操作寄存器,? {起始寄存器 - 末尾寄存器}
  • STM 第一操作寄存器,? {寄存器1,??寄存器2, ...}?
MOV R1, #0x1
MOV R2, #0x2
MOV R3, #0x3
MOV R4, #0x4
MOV R11, #0x40000000

STM R11, {R1-R4}      @ 將R1-R4寄存器中的數(shù)據(jù)保存到以R11為起始位置的內(nèi)存中(R11地址不隨內(nèi)存自增)

STM R11, {R1, R2, R3, R4} @ 與上面等價(jià)(R11地址不隨內(nèi)存自增,即R11就是起始地址)

STM R11!, {R1, R2, R3, R4}  @ 在R11的后面加上“ ! ”可以讓R11中的地址隨內(nèi)存的存儲(chǔ)位置自增變化

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM

注意:花括號(hào){ }中的寄存器編號(hào)順序建議是升序,即便是亂序或者是降序,會(huì)優(yōu)先將寄存器編號(hào)較小的保存到內(nèi)存。

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM

?

(2) LDM 指令

LDM指令的作用是將內(nèi)存中一段地址的數(shù)據(jù)保存到多個(gè)寄存器。(類(lèi)似用法及注意事項(xiàng)可以參考STM指令)?

指令格式:

  • LDM??第一操作寄存器,? {起始寄存器 - 末尾寄存器}
  • LDM??第一操作寄存器,? {寄存器1,??寄存器2, ...}
MOV R1, #0x1
MOV R2, #0x2
MOV R3, #0x3
MOV R4, #0x4
MOV R11, #0x40000000
STM R11, {R1-R4}      

LDM R11, {R6-R9}        @ 將內(nèi)存中以R11為起始地址的數(shù)據(jù)讀取到 R6-R9 寄存器
LDM R11, {R6, R7,R8,R9} @ 與上述寫(xiě)法等價(jià)

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM

?注意:讀取的字節(jié)大小看有多少個(gè)寄存器,每個(gè)寄存器默認(rèn)保存4個(gè)字節(jié)的數(shù)據(jù)。

2、多寄存器的內(nèi)存讀寫(xiě)方式

默認(rèn)情況下,是以某一個(gè)寄存器指向的地址為起始地址,自低地址向高地址寫(xiě)入 / 讀取??梢酝ㄟ^(guò)在上述基本指令的后面加后綴來(lái)改變內(nèi)存的讀寫(xiě)方式,比如自高地址向低地址寫(xiě)入從起始位置的下一個(gè)地址開(kāi)始寫(xiě)入。

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM

下面以寫(xiě)內(nèi)存為例。

MOV R1, #0x1
MOV R2, #0x2
MOV R3, #0x3
MOV R4, #0x4
MOV R11, #0x40000020
STM R11, {R1-R4}     @ 起始地址為 R11

(1) 后綴 IA(默認(rèn))

IA 表示 Increase After,先將數(shù)據(jù)保存到內(nèi)存,然后再讓地址自增。STM默認(rèn)采用的方式與STMIA達(dá)到的效果是一樣的。

STMIA R11!, {R1-R4}     @ 保存起始地址為 R11

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM

注意:加“ ! ”了以后,寄存器中保存的地址會(huì)跟著內(nèi)存的增長(zhǎng)方向發(fā)生變化

(2) 后綴 IB

IA 表示 Increase Before,在寫(xiě)入內(nèi)存之前先讓R11自增4個(gè)字節(jié),然后再開(kāi)始存。

STMIB R11!, {R1-R4}     @ 保存起始地址為 R11 + 4

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM

?

(3) 后綴 DA

DA 表示 Decrease After,先將數(shù)據(jù)保存到內(nèi)存,然后再讓地址自減。(自高地址到低地址存儲(chǔ))

STMDA R11!, {R1-R4}     @ 保存起始地址為 R11(自低地址向高地址存儲(chǔ))

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM

?

(4) 后綴 DB

?DB 表示 Decrease Before,在寫(xiě)入內(nèi)存之前先讓R11自減4個(gè)字節(jié),然后再開(kāi)始存。

STMDB R11!, {R1-R4}     @ 保存起始地址為 R11 - 4(自低地址向高地址存儲(chǔ))

寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-468956.html

到了這里,關(guān)于寄存器內(nèi)存讀寫(xiě)指令(二) —— 多寄存器讀寫(xiě) LDM / STM的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【ARMv8 SIMD和浮點(diǎn)指令編程】NEON 存儲(chǔ)指令——如何將數(shù)據(jù)從寄存器存儲(chǔ)到內(nèi)存?

    【ARMv8 SIMD和浮點(diǎn)指令編程】NEON 存儲(chǔ)指令——如何將數(shù)據(jù)從寄存器存儲(chǔ)到內(nèi)存?

    和加載指令一樣,NEON 有一系列的存儲(chǔ)指令。比如 ST1、ST2、ST3、ST4。 1 ST1 (multiple structures) 從一個(gè)、兩個(gè)、三個(gè)或四個(gè)寄存器存儲(chǔ)多個(gè)單元素結(jié)構(gòu)。該指令將元素從一個(gè)、兩個(gè)、三個(gè)或四個(gè) SIMDFP 寄存器存儲(chǔ)到內(nèi)存,無(wú)需交錯(cuò)。每個(gè)寄存器的每個(gè)元素都被存儲(chǔ)。 無(wú)偏移 一個(gè)寄

    2024年02月07日
    瀏覽(27)
  • STM32微機(jī)系統(tǒng)框架、內(nèi)存、存儲(chǔ)器、寄存器

    STM32微機(jī)系統(tǒng)框架、內(nèi)存、存儲(chǔ)器、寄存器

    大家好,我是 杰哥嵌入式開(kāi)發(fā) 最近在出定時(shí)器系列, 但是線下班有一些學(xué)生在學(xué)習(xí)完C語(yǔ)言之后, 在51接觸各種寄存器和對(duì)軟件代碼各種操作是如何在單片機(jī)系統(tǒng)中起到作用的感到非常的不解, 經(jīng)過(guò)我的初步分析,是對(duì)嵌入式微機(jī)系統(tǒng)的大概雛形系統(tǒng)框架不熟悉導(dǎo)致。 所以

    2024年02月06日
    瀏覽(35)
  • STM32 i2c讀寫(xiě)寄存器地址8位,16位的方法

    STM32 i2c讀寫(xiě)寄存器地址8位,16位的方法

    一般常用的寄存器地址是8位的,遇到一個(gè)寄存器地址為16為的器件??偨Y(jié)一下代碼編寫(xiě)。 寄存器地址16位的為SY103,寄存器地址為8位的為L(zhǎng)T7911. 測(cè)試代碼 lt7911該位置寄存器參考手冊(cè) sy103該位置寄存器參考手冊(cè) 仿真測(cè)試 可以看到把值寫(xiě)入到相對(duì)應(yīng)的寄存器內(nèi),并且讀出。

    2024年01月19日
    瀏覽(31)
  • 【ARMv8 SIMD和浮點(diǎn)指令編程】NEON 加載指令——如何將數(shù)據(jù)從內(nèi)存搬到寄存器(其它指令)?

    【ARMv8 SIMD和浮點(diǎn)指令編程】NEON 加載指令——如何將數(shù)據(jù)從內(nèi)存搬到寄存器(其它指令)?

    除了基礎(chǔ)的 LDx 指令,還有 LDP、LDR 這些指令,我們也需要關(guān)注。 1 LDNP (SIMDFP) 加載 SIMDFP 寄存器對(duì),帶有非臨時(shí)提示。該指令從內(nèi)存加載一對(duì) SIMDFP 寄存器, 向內(nèi)存系統(tǒng)發(fā)出訪問(wèn)是非臨時(shí)的提示 。用于加載的地址是根據(jù)基址寄存器值和可選的立即偏移量計(jì)算得出的。 32-bit (

    2024年02月07日
    瀏覽(27)
  • 一、1.匯編指令、寄存器和尋址方式

    一、1.匯編指令、寄存器和尋址方式

    立即數(shù):可以立即在一條機(jī)器指令后找到具體數(shù)值的數(shù),如內(nèi)存中00位寫(xiě)著加指令,01位寫(xiě)著1100_1111,意思就是將1100_1111(十進(jìn)制207)加到某處,反之可以表示數(shù)據(jù)的地址。 低端字節(jié)序:16位寄存器數(shù)據(jù)存入內(nèi)存(內(nèi)存單位為8位),寄存器低位存入內(nèi)存低位(如00)高位存入內(nèi)

    2024年02月14日
    瀏覽(27)
  • ARM64 寄存器、常用匯編指令收集

    ARM64 有34個(gè)寄存器,包括31個(gè)通用寄存器、SP、PC、CPSR。 寄存器 位數(shù) 描述 x0-x30 64bit 通用寄存器,如果有需要可以當(dāng)做32bit使用:WO-W30 FP(x29) 64bit 保存棧幀地址(棧底指針) LR(x30) 64bit 通常稱(chēng)X30為程序鏈接寄存器,保存子程序結(jié)束后需要執(zhí)行的下一條指令 SP 64bit 保存棧指針,使用

    2023年04月20日
    瀏覽(31)
  • ARM匯編寄存器和常用指令詳解

    ARM匯編寄存器和常用指令詳解

    對(duì)于32位及其以下的ARM處理器來(lái)說(shuō),函數(shù)調(diào)用規(guī)則如下: 父函數(shù)與子函數(shù)的入口參數(shù)以此通過(guò) R0~R3 這4個(gè)寄存器傳遞。 父函數(shù)在調(diào)用子函數(shù)前先將子函數(shù)入口參數(shù)存入 R0~R3 寄存器中,若只有一個(gè)入口參數(shù)則使用 R0 寄存器傳遞,若有2個(gè)入口參數(shù)則使用 R0 和 R1 寄存器傳遞,以

    2024年02月03日
    瀏覽(30)
  • stm32的BRR寄存器和BSRR寄存器

    stm32的BRR寄存器和BSRR寄存器

    1、BRR--- ? bit ? RESET(置0)? register?? //高16位無(wú),低16位置1為0,不能寫(xiě)1 2 、BSRR--- ? bit ? SET(設(shè)置1或0) ? ? ? register?? //低16位設(shè)置1為0 BSRR:用于低16位的作用是讓指定的IO口置1;而高16位的作用是讓指定的IO口置0。 ?

    2024年02月11日
    瀏覽(30)
  • FANUC機(jī)器人的位置寄存器及運(yùn)算指令詳解

    FANUC機(jī)器人的位置寄存器及運(yùn)算指令詳解 在FANUC機(jī)器人的嵌入式編程中,位置寄存器和運(yùn)算指令起著至關(guān)重要的作用。位置寄存器用于存儲(chǔ)機(jī)器人的位置和姿態(tài)信息,而運(yùn)算指令則允許對(duì)這些位置寄存器進(jìn)行數(shù)學(xué)和邏輯運(yùn)算,從而實(shí)現(xiàn)復(fù)雜的機(jī)器人運(yùn)動(dòng)控制和路徑規(guī)劃。本文

    2024年02月02日
    瀏覽(23)
  • STM32之寄存器

    STM32之寄存器

    在學(xué)習(xí)STM32之前有必要了解一下ARM架構(gòu),以下相關(guān)ARM架構(gòu)的知識(shí)來(lái)自百度百科?:? ARM架構(gòu),曾稱(chēng)進(jìn)階精簡(jiǎn)指令集機(jī)器(Advanced?RISC?Machine)更早稱(chēng)作Acorn RISC Machine,是一個(gè)32位精簡(jiǎn)指令集(RISC)架構(gòu)。還有基于ARM設(shè)計(jì)的派生產(chǎn)品,重要產(chǎn)品包括Marvell的XScale架構(gòu)和德州儀器的

    2024年02月22日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包