欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    ARM匯編程序特點:

    l所有運算處理都是發(fā)生通用寄存器(一般是R0~R14)的之中.所有存儲器空間(如C語言變量的本質(zhì)就是一個存儲器空間上的幾個BYTE).的值的處理,都是要傳送到通用寄存器來完成.因此代碼中大量看到LDR,STR指令來傳送值.

    lARM匯編語句中.當(dāng)前語句很多時候要隱含的使用上一句的執(zhí)行結(jié)果.而且上一句的執(zhí)行結(jié)果,是放在CPSR寄存器里,(比如說進位,為0,為負…)

    CMP R0,R1

    BNE

    比如上一句,BNE隱含的使用的上一句CMP執(zhí)行結(jié)果.NE后綴表示使用Z標志位.兩句合起來的意思就是,如果R0,R1的值不相等,就跳轉(zhuǎn)到處執(zhí)行.

    注意,PC=R15,CPSR=R16,

    ARM偽指令不是必須的,但是一個完整沒有偽指令幾乎很難寫出來.

    n比如一個程序至少包含 AREA和ENTRY,否則CPU都無法知道從哪里開始運行

    lARM的屬于RISC,指令并不多,但是可以帶后綴表示擴展出不同用法,這里與X86匯編完全不同風(fēng)格

    n如BNE實際上是B指令的變種,本質(zhì)還同一類指令.只是多一個對CPSR的Z標志位的判斷。

    ARM常用指令,偽指令

    ARM常用指令并不太多,因此使用閱讀ARM匯編代碼,并不太困難.以下是使用頻率最高的指令和偽指令,并不是完整的指令集的教材。詳細指令參見參考資料。

    lB,BL

    lMOV,MVN

    lLDR,STR

    lADD,SUB,ADC,SBC,MUL

    lAND,ORR,XOR,TST,BIC

    c語言有哪些偽指令_at指令 c語言 單片機_c語言鼠標點擊指令

    lCMP

    lLDM/STM

    lnop

    1.跳轉(zhuǎn)語句B,BL

    程序流程的跳轉(zhuǎn),在ARM程序中有兩種方法可以實現(xiàn)程序流程的跳轉(zhuǎn)指令用于實現(xiàn)

    l使用專門的跳轉(zhuǎn)指令B

    l直接向程序計數(shù)器PC寫入跳轉(zhuǎn)地址值

    n這是幾乎是任何一種CPU必備的機器,PC表示CPU當(dāng)前執(zhí)行語句位置,改變PC的值,相當(dāng)于實現(xiàn)程序跳轉(zhuǎn)

    n如實現(xiàn)類似C語言的語句,就是用MOV PC,LR

    n這里可以在任意4G的空間進行跳轉(zhuǎn)

    B指令()表示無條件跳轉(zhuǎn).

    B main;跳轉(zhuǎn)到標號為main地代碼處

    BL指令( with Link)表示帶返回值的跳轉(zhuǎn).

    BL比B多做一步,在跳轉(zhuǎn)前,BL會把當(dāng)前位置保存在R14(即LR寄存器),當(dāng)跳轉(zhuǎn)代碼結(jié)束后,用MOV PC,LR指令跳回來,這實際上就是C語言執(zhí)行函數(shù)的用法,

    匯編里調(diào)子程序都用BL,執(zhí)行完子函數(shù)后,可以用MOV PC,LR跳回來.

    BL delay;執(zhí)行子函數(shù)或代碼段delay ,delay可以為C函數(shù).

    與MOV PC,XXX能在4G空間跳轉(zhuǎn)不同,B語句只能32M空間跳轉(zhuǎn),(因為偏移量是一個有符號26bit的數(shù)值=32M)

    c語言有哪些偽指令_at指令 c語言 單片機_c語言鼠標點擊指令

    2.傳輸數(shù)據(jù)指令MOV,MVN

    nMOV(MOVE)指令可完成從另一個寄存器、被移位的寄存器或?qū)⒁粋€立即數(shù)加載到目的寄存器

    MOV R0,R1;把R1的值傳到R0

    MOV R3,#3;把常數(shù)3傳給R3,MOV中用#表示常數(shù),這個值不能超過

    nMVN( MOVE )取反后再傳值,比MOV多了一步取反

    MVN R0, #0;把0取反(即-1)傳給R0

    MVN R1,R2;把R2的值取反傳給R1

    3.加載/存儲指令,LDR,STR

    nLDR,STR是用于寄存器和外部存儲器交換數(shù)據(jù)指令,注意與MOV的區(qū)別,后面只在寄存器或常數(shù)交換.

    uLDR/STR可以采用多種尋址方式,以下只舉出使用頻率最高幾種用法

    nLDR(load)用于把一個32Bit的WORD數(shù)據(jù)從外部存儲空間裝入到寄存器中

    LDR R0,[R1]; R1的值當(dāng)成地址,再從這個地址裝入數(shù)據(jù)到R0 (R0=*R1)

    LDR R1,=;把地址的值裝入到R1中,LDR中用常數(shù)要用=打頭.(注意跟MOV的區(qū)別,MOV是#)

    ldrr0, =(0R1

    l立即數(shù)尋址

    即指令中的地址碼是操作數(shù)本身,可以立即取出使用,立即數(shù)前帶一個#表示,否則表示一個地址

    SUBS R0,R0,#1;R0 -1 ->R0

    c語言鼠標點擊指令_at指令 c語言 單片機_c語言有哪些偽指令

    注意與SUBS R0,R0,1區(qū)別

    l寄存器偏移尋址

    這是ARM特有的尋址模式,當(dāng)?shù)?操作數(shù)是寄存器,在執(zhí)行操作之前,可以做一次移位操作

    MOV R0,R2,LSL #3;R2的邏輯左移3位,結(jié)果放入R0,即R0=R2*8

    ANDS R1,R1,R2,LSL R3;RS的值左移R3位,然后和R1相與操作,結(jié)果放入R1

    移位操作有LSL (邏輯左移),LSR(邏輯右移) ,ASR(算術(shù)右移),ROR(循環(huán)右移)RRX帶擴展的循環(huán)右移

    l寄存器間接尋址

    即寄存器中值是一個地址,用[]來取出定位到地址當(dāng)中

    LDR R2,[R0];把R0的值當(dāng)成地址,取出相應(yīng)值,賦給R2

    l基址尋址

    把寄存器的地址值加上一個偏移量

    LDR R2,[R3,#0x0F]; R3中的值加上0x0F,從這個地址取出值賦給R@

    l相對尋址

    基址尋址的變形,由PC寄存器提供基準地址,指令中地址段作為偏移量.兩者相加即是有效地址,以下是BL采用相對尋址

    BL NEXT

    NEXT

    c語言有哪些偽指令_at指令 c語言 單片機_c語言鼠標點擊指令

    MOV PC,LR;從子程序返回

    10.ADS ARM的偽指令

    類似于C語言的宏,由匯編程序預(yù)處理.

    l符號定義指令

    全局變量定義GBLA ,GBLL,GBLS

    局域變量定義LCLA,LCLL,LCLS

    變量賦值SETA,SETL,SETS

    其中上述偽指令中,最后面的A表示給一個算術(shù)變量賦值,L表示用于給一個邏輯變量賦值,s表示給一個字符串賦值

    GBLL ;聲明一個全局的邏輯變量

    SETL{TRUE};設(shè)置變量為{TRUE}

    LCLA bitno;聲明一個算術(shù)變量

    Bitno SETA 8;設(shè)變量值為8

    l數(shù)據(jù)定義偽指令

    定義一個內(nèi)存空間,并用0初始化

    {label }SPACE expr

    SPACE 100;定義100字節(jié)長空間, char [100];

    at指令 c語言 單片機_c語言鼠標點擊指令_c語言有哪些偽指令

    nDCB定義一個連續(xù)字節(jié)內(nèi)存空間,用偽指令的表達式expr來初始化.一般可以用定義數(shù)據(jù)表格,或文字字符串.(這時等同于SETS),用于初始二進制

    {label} DCB expr{,expr …}

    Dest DCB -120,20,36,55;等同于 char Dest[]={-120,20,36,55};

    nDCU定義的一段字的內(nèi)存空間(DCB是字節(jié)),并用后面表達式初始化

    DCU Reset;等同于DWORD []={Reset};

    nMAP定一個結(jié)構(gòu)化內(nèi)存,相當(dāng)于定義一個C結(jié)構(gòu)

    定義一個結(jié)構(gòu)化內(nèi)存的成員

    MAP 0x00,R9;定義內(nèi)存表,地址為R9

    4;定義數(shù)據(jù)域Timer,長為4字

    4;定義數(shù)據(jù)域,長為4字

    100;定義數(shù)據(jù)域 ,長為100字

    相當(dāng)于C語言的定義:

    {

    DWORD Timer ;

    DWORD ;

    Char [100];

    } R9;

    11.雜項的偽指令

    n字節(jié)對齊ALIGN

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有