bc彙編指令用法 3 3 常用彙編指令

2021-10-13 01:38:07 字數 1074 閱讀 3850

如何閱讀反彙編檔案? 以下是乙個例子

4bc: e3a0244e   mov r2, #1308622848

4c0: e3a0344e   mov r3, #1308622848

4c4: e5933000   ldr r3, [r3]

像4bc這些是**執行的位址, e3a0244e是機器碼

那常用的彙編指令有哪些?

b, bl

這兩條指令為跳轉指令,不同之處在於bl指令除了跳轉之外,還將返回位址儲存在lr暫存器中。

mov這個指令可以把乙個暫存器的值賦給另乙個暫存器,或者把乙個常熟賦給暫存器。常數必須能用立即數來表示

當不能用立即數來表示時可以使用ldr命令來賦值。ldr是偽指令,它不是真實存在的指令,編譯器會把它擴充套件成真正的命令。

ldr r1, =label

當它的第二個引數前有=號時,表示偽指令,否則表示記憶體訪問指令

ldr r1, [r2, #4] 將位址r2+4的記憶體單元資料讀取到r1中

ldr r1, [r2] 將位址為r2的記憶體單元的資料讀取到r1中

ldr r1, [r2], #4 將位址為r2的記憶體單元資料讀取到r1中,然後r2 = r2+4

str r1, [r2, #4] 將r1的資料儲存到位址為r2+4的記憶體單元中

str r1, [r2] 將r1的資料儲存到位址為r2的記憶體單元中

str r1, [r2], #4 將r1的資料儲存在位址為r2的記憶體單元中,然後r2=r2+4

add、sub

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

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

msr mrs

msr cpsr, r0 複製r0到cpsr中

mrs r0, cpsr 複製cpsr到r0

arm有r0-r15 16個暫存器

r15 表示程式計數器,也就是pc

r14表示lr,連線暫存器

r13表示sp,資料棧指標

一般來說,當引數不超過4個時,使用r0-r3這4個暫存器來傳遞引數;如果引數個數超過4個,剩餘的引數通過資料棧來傳遞

對於一般的返回結果用a0-a3來傳遞

彙編指令msr STM 常用彙編指令

在嵌入式開發中,匯程式設計序常常用於非常關鍵的地方,比如系統啟動時初始化,進出中斷時 的環境保護,恢復等對效能有要求的地方。arm指令集可以分為六大類,分別為資料處理指令 load store 指令 跳轉指令 程式狀態 暫存器處理指令 協處理器指令和異常產生指令。arm指令使用的基本格式如下 opc...

常用彙編指令

1 加減指令 2 adr指令 adr是小範圍的位址讀取偽指令,ldr是大範圍的讀取位址偽指令。可實際上adr是將基於pc相對偏移的位址值或基於暫存器相對位址值讀取的為指令,而ldr用於載入32為立即數或乙個位址到指定的暫存器中。到這兒就會看到其中的區別了。如果在程式中想載入某個函式或者某個在聯接時候...

常用彙編指令

一 資料傳輸指令 它們在存貯器和 暫存器 寄存 器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依...