【自用】彙編初學筆記 #1
寫在前面
- 80x86架構一般是小端儲存模式,又稱作小尾儲存,即低位資料存在地址低位,高位資料存在地址高位
- intel 架構下,指令的右引數為源資料,左引數為目標資料
- 1位元組(byte) = 8位(bit)
- 1字 = 2位元組
- r代表通用暫存器
- m代表記憶體
- imm代表立即數
- 暫存器當中E代表32位,X代表16位,L代表低八位,H代表高八位
常用暫存器
標誌暫存器(EFL)
D位/DF位
- 為0時,MOVS執行後"+"
- 為1時,MOVS執行後"-"
計數暫存器(ECX)
- 用於指定重複執行次數,需與REP指令搭配使用
- 需要注意的是,儲存的值是十六進位制,執行的次數也應當由十六進位制換算
堆疊
常用匯編指令
(以左為主,操作結果均存到左)
ADD
- 左加右,存到左
SUB
- 左減右,存到左
MOVS
- 將ESI中的值視為記憶體地址,將該記憶體地址當中的值,轉存到另一個記憶體當中(此記憶體的地址為EDI暫存器的值)
- 只能使用ESI和EDI
- 執行完成後,ESI和EDI的值均會自動+1/-1||+2/-2||+4/-4
- 加(0)/減(1)由標誌暫存器D位決定
- 加減的多少由資料寬度決定
#(destination,source)
movs byte ptr es:[EDI],byte ptr ds:[ESI] 簡寫為MOVSB
movs word [EDI],[ESI]
movs dword [EDI],[ESI]
MOV
- 只能從記憶體到暫存器,或暫存器到記憶體,暫存器到暫存器,不能從記憶體到記憶體
STOS
- 書寫形式
STOS byte ptr es:[EDI] // 簡寫為 STOSB
- 作用:將AL/AX/EAX中的值儲存到[EDI]指定的記憶體單元
- 執行結束後[EDI]加/減 1/2/4
REP
- 將該指令加在其他指令之前,從而將其他指令重複執行0x[ECX]次
相關文章
- iOS逆向學習筆記 - 彙編(一) - 初識彙編iOS筆記
- 彙編學習筆記筆記
- 彙編基礎學習筆記筆記
- 自用筆記筆記
- 學習筆記分享之彙編---2.彙編指令/語法筆記
- 彙編學習筆記之轉移指令筆記
- 逆向之彙編筆記筆記
- LevelDB學習筆記 (1):初識LevelDB筆記
- Solidity語言學習筆記————38、Solidity彙編Solid筆記
- Java小白的學習日記一(自用筆記)Java筆記
- 初識彙編
- 彙編初步瞭解筆記筆記
- substrate學習筆記1:Substrate初體驗筆記
- Java多執行緒學習筆記(自用)Java執行緒筆記
- Solidity語言學習筆記————39、獨立彙編Solid筆記
- python初學筆記Python筆記
- 彙編筆記(持續更新中)筆記
- 彙編學習筆記07——BCD碼及調整指令筆記
- 逆向學習筆記3——暫存器與彙編指令筆記
- 《Kafka筆記》1、Kafka初識Kafka筆記
- 初學Golang的筆記Golang筆記
- 強化初學筆記筆記
- Solidity語言學習筆記————1、初識Solidity語言Solid筆記
- 彙編學習小記(三)-查表
- CSRF&SSRF練習(自用筆記)筆記
- C++類初學筆記C++筆記
- 初學linux的fork筆記Linux筆記
- [寒假學習筆記](二)Python初學筆記Python
- 【Python學習筆記1】Python網路爬蟲初體驗Python筆記爬蟲
- 高速介面自用筆記:GT基礎(二)筆記
- Python 裝飾器初學筆記Python筆記
- 從Python到Go:初學筆記PythonGo筆記
- 【Nginx學習筆記】-初識NginxNginx筆記
- JVM學習筆記——初識JVMJVM筆記
- 學習筆記1筆記
- 學習筆記-1筆記
- 基於docker 初學 MongoDb 學習筆記DockerMongoDB筆記
- 安卓初學基礎學習筆記安卓筆記