剛學習彙編,菜鳥乙個。記下學習筆記
mov指令:
mov 目標運算元,源運算元;
(類似c語言的等於號)
拷貝 源運算元 到 目標運算元。
例如mov eax,ebx
前後的位數(寬度)必須是相同的,8位對應8位,16對應16, 32位對應32位。
(彙編有三種運算元:暫存器運算元,儲存器運算元,立即數。暫存器運算元就是暫存器中的數,儲存器運算元就是記憶體單元中的數,立即數類似高階語言的常量)。
如果源運算元是立即數 ,寫的不是對應的寬度, 會在前面自動補0。
例如mov ax,0x1
實際 是 0x0001
源 和 目標 不能同時是 記憶體單元。
目標運算元是 儲存器運算元(即記憶體單元時) 應該註明要操作的大小 例如mov word/dword ptr ds:[記憶體位址],源運算元
。 word 可以換成 byte,dword,(dword是32位,word是16位,byte是8位)
幾種定址方式: [ ]內 可以是 立即數,8種通用暫存器,8種暫存器加立即數,8種暫存器×1或者2或者4 (只能是1或者2或者4),或者8種暫存器×1或者2或者4 再加上立即數。
mov指令不改變標誌暫存器的值
add 指令 和 sub 指令:
前後的寬度可以不一樣。
and 指令 ,or 指令 ,xor指令:
將數字轉化為二進位制,對應的位( 每個位)進行 and,or 運算。
and 只有都是 1 結果才是1,or 只要有乙個為1,結果就是1 。
lea(load effect address的縮寫)指令 :
取位址,lea ax,dword ptr ds:[記憶體位址]
,是將這個記憶體位址送到 ax 中。
inc (increase的縮寫)自增 dec (decrease的縮寫) 自減
類似 c語言 自增自減 inc ax就是 ax加1(十進位制)
push指令 pop指令
push r32/r16/m16/m32/imm8/imm16/imm32
(立即數可以是8位的) (r為暫存器,m為記憶體)
pop r32/r16/m16/m32
push或者pop乙個立即數,則esp減或者加 4,
如果 push ,pop 後面跟的是乙個容器(比如暫存器),esp要根據容器的寬度減,比如push ax
,則 esp減2., 或者push dword ptr ds:[address]
則esp減4。
pushad 和popad指令
pushad 是將八個通用暫存器的值放到堆疊中。
popad將存在堆疊中的八個暫存器的值恢復給8個通用暫存器。
adc指令(帶進製的加法指令,c是carry)。
相當於add 目標運算元,源運算元+cf標誌的值
。
目標和源不能同時是記憶體單元,兩天寬度得相等
sbb指令(帶借位的減法,b是borrow)
相當於sub 目標,源+cf
(不能同時是記憶體單元,寬度得相同)
xchg指令 (交換目標和源的值)
兩邊得是容器,兩邊可以同時是記憶體單元。
movs指令
類似mov指令 兩邊可以是記憶體單元,但是寬度必須一樣。
movs word ptr ds:[edi],word ptr ds:[esi]
可以縮寫為 movsw
乙個位元組的 可以縮寫為 movsb
雙字的可以縮寫為 movsd。
執行後,edi 和esi 分別 加 或者減 (根據df標誌,如果df是0則加,df為1則減)位元組數,如果是word 就加或者減 2,byte 就是1 dword 就是4.
stos(store string data)指令
將al, ax, eax中的值存到 存到 es:di 中,需要指明 寬度。執行後會根據 df標誌 ,edi 的值 會增加或者減少。
cmp(compare)指令
cmp指令相當於減法,但是運算結果並不儲存。
例如cmp ax,bx
相當於 ax-bx ,但是減後的結果不並儲存(即ax的值不變),但是運算結果會影響標誌暫存器的值,通過標誌暫存器的值判斷兩者的大小關係。
test 指令 。
按位(化為二進位制數後)進行 and運算(結果並不儲存,但是會影響標誌暫存器的值)。
常用來判斷 某個暫存器的值是否是0.
例如test ax,ax
如果ax 是0,則 zf位是1.
彙編指令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依...