久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

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

這篇文章主要介紹了常用的匯編指令與技巧,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

1.數據傳送指令:mov

move r1,r2 /*r1=r2*/

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

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

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

ldr r1,=label /*獲取絕對地址,即label的地址*/

label:

  ……

3.內存訪問指令(當ldr后面沒有=號時為內存讀取指令)

讀取指令:ldr

ldr r1 ,[r2,#4] /*將內存地址為r2+4的數據讀取到r1中,相當于C語言中的*操作*/

ldr r1,[r2],#4 /*將內存地址為r2的數據讀取到r1中,再將地址加4,r2=r2+4*/

ldr pc,_irq /*pc=*(_irq)將標號中的內容放入pc中

_irq:

  .word do_swi

存儲指令:str

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

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

4.批量內存訪問指令ldm,stm

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

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

格式說明:

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

可以定義16個執行條件,具體如下表:

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

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

4)<register list>表示寄存器列表,對于ldm指令,從<rn>所對應的內存塊中讀取數據寫入這些寄存器,對于stm把這些寄存器的值寫入

<rn>對應的內存塊中。如果寄存器地址連續,可以寫成r1-rx的格式,不連續的用逗號隔開。^符號有兩種含義:如果<register list>有pc寄存器,

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

用戶模式下的寄存器,而不是當前特權模式下的寄存器。

5)指令中<register list>與<rn>的對應關系為:編號低的寄存器對應內存中低地址單元,編號高的寄存器對應內存中高地址單元,具體如下:

擴展:

ldmfd

stmfd

5.算術指令

加指令: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.程序狀態寄存器的訪問指令

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

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

7.相對跳轉指令b,bl

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

2)這兩條指令的跳轉范圍是當前指令前后32M范圍內

3)他們是位置無關的指令,相對跳轉

e.g:

b fun1

fun1:

  bl fun2

fun2:

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

擴展:絕對跳轉 ldr pc,=xxx

直接將要執行的指令地址存入pc中,pc為程序計數器,指向當前指向位置

8.其他指令

比較指令:cmp

cmp r1,r2 /*根據對比的結果設置cpsr寄存器的標志位,參考ARM指令條件碼表

邏輯指令

位與:and(相當于&)

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

位或:orr(相當于|)

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

清零:bic

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

測試:tst

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

總結

以上所述是小編給大家介紹的常用的匯編指令與技巧,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對html5模板網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

這篇文章主要介紹了asm基礎——匯編指令之in/out指令,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習
這篇文章主要介紹了C 表達式中的匯編指令,需要的朋友可以參考下
dup它有多種意義,包括Linux c 函數、C語言函數DUP、匯編指令、化學物質DUP。這篇文章主要介紹了匯編語言 dup偽指令的相關知識,需要的朋友可以參考下
主站蜘蛛池模板: 91深夜福利视频 | 国产成人精品久久二区二区 | 国产精品免费观看视频 | 日韩欧美在线观看视频 | 翔田千里一区二区 | 中文在线播放 | 亚洲狠狠 | 欧美日韩国产中文 | 91精品久久久久久久久久入口 | 日韩高清www | 午夜三区 | 亚洲精品国产电影 | 精品一区二区三区视频在线观看 | 中文字幕在线视频一区二区三区 | 亚洲成av人片在线观看无码 | 亚洲精品久久久久久下一站 | 在线三级电影 | 天天操夜夜爽 | 欧美一级片在线观看 | 毛片一区二区三区 | 日本免费视频在线观看 | 2019天天操| 国产三级 | 一区二区三区四区国产 | 丁香综合| 91视频.| 日日骚网 | 精品国产一区二区三区久久久蜜月 | 日韩中文字幕久久 | 黄色大片视频 | 粉嫩国产精品一区二区在线观看 | 色播99| 亚洲第一天堂 | 龙珠z国语版在线观看 | 国产精品日日做人人爱 | 国产成人精品一区二 | 国产一区二区三区四区 | 黄网站涩免费蜜桃网站 | 亚洲二区精品 | 日韩三区 | 亚洲一区综合 |