arm 彙編積累

1、ldr  的指令     [ Load   from   memory   into   a    register ]

從某一個地址中讀取數據到寄存器

(1)ldr R0, [R1, #8]   將地址R1 + 8的字數據讀入以R0存儲器中     :先   加  後   操作

(2)ldr R0, [R1], #8 將R1的數據讀入到R0,並將R1 + 8的值存入R1  :先  操作   後   加

應用實例:

1).  LDR   r0,=label      用於加載立即數或一個地址值到指定寄存器中

   1.1  如果label是立即數:  LDR r0,=0X123           ;將0X123存入r0中

   1.2  如果name是個標識符:  LDR   r0,=label_1    ;將label_1所指向的地址值存入r0中

2).   LDR       r0,[r1]   ;將R1中的值存到r0中

3).   LDR       r1,[r2,#16]    ;將(r2+16)地址中的內容存到r1中

4).   LDR       r1,[r2],#4    ;將r2地址中的內容存到r1中,同時r2=r2+4

 

2、str  的指令   [ Store    from    a    register    into    memory ]

從寄存器把數據寫入到某一個地址中

(1)str R0, [R1, #8]   將R0中的字數據讀入以R1 + 8爲地址的存儲器中

(2)str R0, [R1], #8   將R0的字數據讀入R1,並將R1 + 8的值存入R1

 

應用實例:

1).  STR   r1,[r2]        ; 將r1中的值存到r2所指定的地址中

2).  STR   r1,[r2,#4]   ;將r1中的值存到r2+4所指定的地址中

3).   STR   r1,[r2],#4  ;將r1中的值存到r2所指定的地址中, 同時r2=r2+4

 

3、cmp 指令

     cmp r0, #0    

 

4、跳轉指令

轉移指令(branch)
        說明:無條件轉移B,BAL
        舉例:    B      LABEL        ; LABEL爲某個位置

條件轉移
        說明:
            BEQ    相等
            BNE    不等
            BPL    非負
            BMI    負
            BCC    無進位
            BCS    有進位
            BLO    小於(無符號數)
            BHS    大於等於(無符號數)
            BHI    大於(無符號數)
            BLS    小於等於(無符號數)
            BVC    無溢出(有符號數)
            BVS    有溢出(有符號數)
            BGT    大於(有符號數)
            BGE    大於等於(有符號數)
            BLT    小於(有符號數)
            BLE    小於等於(有符號數)
 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章