最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

常用的匯編指令與技巧(收藏)

 更新時(shí)間:2020年01月15日 11:06:34   作者:Quincy379  
這篇文章主要介紹了常用的匯編指令與技巧,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1.數(shù)據(jù)傳送指令:mov

move r1,r2 /*r1=r2*/

move r1,#4096 /*r1=4096*/

2.大范圍的地址讀取指令:ldr

ldr r1,=0x123456789 /*r1=0x123456789*/

ldr r1,=label /*獲取絕對(duì)地址,即label的地址*/

label:

  ……

3.內(nèi)存訪問指令(當(dāng)ldr后面沒有=號(hào)時(shí)為內(nèi)存讀取指令)

讀取指令:ldr

ldr r1 ,[r2,#4] /*將內(nèi)存地址為r2+4的數(shù)據(jù)讀取到r1中,相當(dāng)于C語言中的*操作*/

ldr r1,[r2],#4 /*將內(nèi)存地址為r2的數(shù)據(jù)讀取到r1中,再將地址加4,r2=r2+4*/

ldr pc,_irq /*pc=*(_irq)將標(biāo)號(hào)中的內(nèi)容放入pc中

_irq:

  .word do_swi

存儲(chǔ)指令:str

str r1 ,[r2,#4] /*將r1的值存入地址為r2+4的內(nèi)存中*/

str r1,[r2],#4 /*將r1的值存入地址為r2的內(nèi)存中,再將地址加4,r2=r2+4*/

4.批量內(nèi)存訪問指令ldm,stm

格式:ldm {cond} <addresing_mode> <rn> {!} <register list> {^}

   stm{cond} <addresing_mode> <rn> {!} <register list> {^}

格式說明:

1){cond}:表示指令的執(zhí)行條件,根據(jù)cpsr寄存器中的條件標(biāo)志位決定是否執(zhí)行該條指令,每條ARM指令包含4bit的條件碼域,

可以定義16個(gè)執(zhí)行條件,具體如下表:

2)<addresing_mode>表示地址變化模式,具體如下:

3)<rn> 中保存內(nèi)存的地址,如果后面加上!,指令執(zhí)行完成后,rn的值會(huì)更新,等于下一個(gè)內(nèi)存的地址,否則保持初始值。

4)<register list>表示寄存器列表,對(duì)于ldm指令,從<rn>所對(duì)應(yīng)的內(nèi)存塊中讀取數(shù)據(jù)寫入這些寄存器,對(duì)于stm把這些寄存器的值寫入

<rn>對(duì)應(yīng)的內(nèi)存塊中。如果寄存器地址連續(xù),可以寫成r1-rx的格式,不連續(xù)的用逗號(hào)隔開。^符號(hào)有兩種含義:如果<register list>有pc寄存器,

它表示指令執(zhí)行后,spsr寄存中的值將自動(dòng)復(fù)制到cpsr寄存器中--這通常用于中斷處理函數(shù)的返回;如果沒有pc寄存器,那^表示操作的是

用戶模式下的寄存器,而不是當(dāng)前特權(quán)模式下的寄存器。

5)指令中<register list>與<rn>的對(duì)應(yīng)關(guān)系為:編號(hào)低的寄存器對(duì)應(yīng)內(nèi)存中低地址單元,編號(hào)高的寄存器對(duì)應(yīng)內(nèi)存中高地址單元,具體如下:

擴(kuò)展:

ldmfd

stmfd

5.算術(shù)指令

加指令:add

add r1,r2,#1 /*r1=r2+1*/

減指令:sub

sub r1,r2,#1 /*r1=r2-1*/

乘指令:mul

mul r1,r2,#4 /*r1=r2*4*/

6.程序狀態(tài)寄存器的訪問指令

msr cpsr, r0 /* s<-r,r0的值復(fù)制到cpsr中*/

mrs r0,cpsr /*r<-s,將cpsr的值復(fù)制到r0中*/

7.相對(duì)跳轉(zhuǎn)指令b,bl

1)這兩條指令的區(qū)別在于bl除了跳轉(zhuǎn)以外,還將返回地址(bl的下一條指令地址)保存在lr寄存器中

2)這兩條指令的跳轉(zhuǎn)范圍是當(dāng)前指令前后32M范圍內(nèi)

3)他們是位置無關(guān)的指令,相對(duì)跳轉(zhuǎn)

e.g:

b fun1

fun1:

  bl fun2

fun2:

  ..............

擴(kuò)展:絕對(duì)跳轉(zhuǎn) ldr pc,=xxx

直接將要執(zhí)行的指令地址存入pc中,pc為程序計(jì)數(shù)器,指向當(dāng)前指向位置

8.其他指令

比較指令:cmp

cmp r1,r2 /*根據(jù)對(duì)比的結(jié)果設(shè)置cpsr寄存器的標(biāo)志位,參考ARM指令條件碼表

邏輯指令

位與:and(相當(dāng)于&)

and r0,r1,#0xff /*r0=r1&0xff*/

位或:orr(相當(dāng)于|)

orr r0,r1,#0xff /*r0=r1|0xff*/

清零:bic

bic r0,r0,#0x03 /*將r0中的第一位和第二位清零*/

測(cè)試:tst

tst r0,#0x20 /*測(cè)試第六位是否為0,為0則將cpsr的Z位置1*/

總結(jié)

以上所述是小編給大家介紹的常用的匯編指令與技巧,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • 匯編語言指令集之條件轉(zhuǎn)移指令實(shí)現(xiàn)

    匯編語言指令集之條件轉(zhuǎn)移指令實(shí)現(xiàn)

    這篇文章主要介紹了匯編語言指令集之條件轉(zhuǎn)移指令實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 匯編語言指令集學(xué)習(xí)CMPXCHG比較并交換操作指令詳解

    匯編語言指令集學(xué)習(xí)CMPXCHG比較并交換操作指令詳解

    這篇文章主要為大家介紹了匯編語言指令集學(xué)習(xí)CMPXCHG比較并交換操作的指令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 匯編語言顯示功能實(shí)現(xiàn)教程詳解

    匯編語言顯示功能實(shí)現(xiàn)教程詳解

    這篇文章主要為大家介紹了匯編語言顯示功能的實(shí)現(xiàn)過程,文中通過問題實(shí)例分析來為大家進(jìn)行詳細(xì)的描述講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 匯編語言loop命令的具體使用

    匯編語言loop命令的具體使用

    LOOP指令是根據(jù)ECX計(jì)數(shù)器循環(huán),將語句塊重復(fù)執(zhí)行特定次數(shù),本文主要介紹了匯編語言loop命令的具體使用,感興趣的可以了解一下
    2024-03-03
  • 匯編語言中mov和lea指令的區(qū)別詳解

    匯編語言中mov和lea指令的區(qū)別詳解

    指令(instruction)是一種語句,它在程序匯編編譯時(shí)變得可執(zhí)行。本文給大家總結(jié)一下匯編語言中mov和lea指令的區(qū)別詳解,感興趣的朋友跟隨小編一起看看吧
    2020-01-01
  • VScode配置匯編語言環(huán)境的實(shí)現(xiàn)步驟

    VScode配置匯編語言環(huán)境的實(shí)現(xiàn)步驟

    本文主要介紹了VScode配置匯編語言環(huán)境的實(shí)現(xiàn)步驟,文中通過圖文的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 匯編跳轉(zhuǎn)指令使用總結(jié)

    匯編跳轉(zhuǎn)指令使用總結(jié)

    這篇文章主要介紹了匯編跳轉(zhuǎn)指令使用總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 匯編實(shí)現(xiàn)簡(jiǎn)單選擇排序的方法示例

    匯編實(shí)現(xiàn)簡(jiǎn)單選擇排序的方法示例

    這篇文章主要介紹了匯編實(shí)現(xiàn)簡(jiǎn)單選擇排序的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編語言MUL指令無符號(hào)數(shù)乘法的使用

    匯編語言MUL指令無符號(hào)數(shù)乘法的使用

    這篇文章主要介紹了匯編語言MUL指令無符號(hào)數(shù)乘法的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 匯編語言入門匯編指令及寄存器詳解教程

    匯編語言入門匯編指令及寄存器詳解教程

    這篇文章主要為大家介紹了匯編語言入門匯編指令及寄存器的詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11

最新評(píng)論

临海市| 兰西县| 沙湾县| 文成县| 确山县| 嘉兴市| 鄂伦春自治旗| 漯河市| 黄浦区| 都江堰市| 天柱县| 武义县| 冀州市| 孝义市| 和平县| 龙川县| 镇原县| 那坡县| 海兴县| 明溪县| 凯里市| 乌拉特前旗| 贵南县| 烟台市| 宁陵县| 阜平县| 浑源县| 竹溪县| 屏山县| 临猗县| 五河县| 东宁县| 疏勒县| 大新县| 资溪县| 宣恩县| 沙湾县| 阆中市| 扶沟县| 于都县| 微山县|