1.1 cpu基本功能
1.1.1 目標**
計算機系統中的cpu只能執行機器指令
由機器指令組成的程式,被稱為目標程式,也被稱為目標**
計算機系統最終執行的是目標程式
int cf11( void )
等價於:
xor ecx, ecx
xor eax, eax
inc ecx
$ll3@cf11:
mov edx, ecx
imul edx, ecx
add eax, edx
inc ecx
cmp ecx, 10
jle $ll3@cf11
ret
1.1.2基本功能
1.執行機器指令
ücpu能夠直接識別並遵照執行的指令被稱為機器指令
ücpu一條接一條地依次執行存放在儲存器中的機器指令
ü每一條機器指令的功能通常很有限
ücpu能夠執行的全部機器指令,被稱為該cpu的指令集
ücpu決定機器指令。不同種類cpu,其指令集往往不相同
ü按指令的功能來劃分,通常機器指令可分為以下幾大類:
資料傳送指令、算術邏輯運算指令、轉移指令
處理器控制指令、其他指令等
2.暫存少量資料
ü乙個目標程式中的絕大部分指令是對資料進行各種運算或者處理
ücpu有若干個暫存器,可以用於存放運算資料和運算結果,還可以給出儲存單元位址
ü利用暫存器存放運算資料和運算結果,效率最高
ü大部分指令的運算元據至少有乙個在暫存器中
ücpu內可以用於存放運算資料和運算結果的暫存器數量很有限
3.訪問儲存器
ücpu要執行目標程式,就要訪問儲存器。目標程式在儲存器中,待處理 的資料也在儲存器中。這裡儲存器是指cpu能夠直接訪問的計算機系統的物理記憶體
ü儲存器(記憶體)由一系列儲存單元線性地組成,最基本的儲存單元為乙個位元組。為了標識和訪問每乙個儲存單元,給每乙個儲存單元規定乙個編號,也就是儲存單元位址
ücpu支援以多種形式表示儲存單元的位址。一些功能較強的cpu還支援以多種方式組織管理儲存器
int x = 1;
int y = 2;
void cf12( void )
等價於:
int x = 1;
int y = 2;
void cf12( void )
1.2 組合語言概念
1.2.1 機器指令
ü把cpu能夠直接識別並遵照執行的指令稱為機器指令
ü機器指令一般由操作碼和運算元兩部分構成
ü操作碼指出要進行的操作或運算
例如,加、減、傳送等
ü運算元指出參與操作或運算的物件,也指出操作或運算結果存放的位置
例如,暫存器、儲存單元和資料等
xor ecx, ecx
xor eax, eax
inc ecx
lab1: mov edx, ecx
imul edx, ecx
add eax, edx
inc ecx
cmp ecx, 10
jle lab1
ret
等價於:
33 c9
33 c0
41
8b d1
0f af d1
03 c2
41
83 f9 0a
7e f3
c3
1.2.2 彙編格式指令
1.人們採用便於記憶、並能描述指令功能的符號來表示指令的操作碼。這些符號被稱為指令助記符
2.用符號表示運算元,如暫存器、儲存單元位址等
3.由指令助記符、操作符號和常量等表示的指令被稱為彙編格式指令
ü彙編格式指令的一般格式
[ 標號:] 指令助記符 [ 運算元表]
1.2.3 組合語言及其優缺點
組合語言
ü組合語言是一種程式語言,是機器語言的符號化
ü組合語言的語句主要是彙編格式指令和偽指令
ü由於組合語言的主體是彙編格式指令,而彙編格式指令又與機器密切相關,且功能有限,所以常把組合語言稱為低階語言
彙編和匯程式設計序
ü把用組合語言編寫的程式稱為組合語言源程式,或稱為彙編源程式,或簡稱為源程式。
ü把彙編源程式翻譯成目標程式的過程稱為彙編。
ü把完成彙編工作的工具或程式叫做匯程式設計序(彙編器)。
組合語言的優缺點
ü組合語言與機器關係密切
ü組合語言程式效率高
ü編寫組合語言源程式繁瑣
ü組合語言程式除錯困難
1.3 資料的表示和儲存
1.3.4 資料的儲存
ü以二進位制形式表示的資料和**存放在儲存器(記憶體)之中。
ü記憶體由一系列基本儲存單元線性地組成,每乙個基本儲存單元有乙個唯一的位址。通常,基本儲存單元由8個連續的位構成,可用於儲存乙個位元組的資料。所以,基本儲存單元也被稱為位元組儲存單元。
ü可以把記憶體看作為乙個很大的一維字元陣列,把位址看作為標識陣列元素的下標。
ü位元組儲存單元是基本的儲存單元。
ü乙個位元組儲存單元中8位資料的意義,根據需要可以有不同的解釋。
ü兩個連續的位元組儲存單元構成乙個字儲存單元。字儲存單元的位址是較低的位元組儲存單元的位址。「高高低低」規則。
ü四個連續的位元組儲存單元構成乙個雙字儲存單元。
#include
char buff = ; // 130=0x82
int a, b;
int main( )
逆向工程之彙編基礎
1.1 暫存器 以下是通用暫存器 除了非通用暫存器還有eip指令指標暫存器 多數字串指令通常把ecx用作計數器,把esi作為源指標,把edi作為目的指標,通常情況下棧操作會使用ebp和esp。除了通用暫存器和eip指令暫存器外還有6個16位段暫存器 段 cs 資料段 ds 棧段 ss 額外段 es ...
逆向基礎之彙編(一)
目錄 1.前言 2.進製 2.1 進製的簡寫 3.資料寬度 4.原始碼 反碼和補碼 4.1 有符號與無符號 4.1.1 無符號 4.1.2 有符號 4.2 編碼規則 4.2.1 原碼 4.2.2 反碼 4.2.3 補碼 5 位運算 5.1 與運算 5.2 或運算 5.3 異或運算 5.4 非運算 5...
彙編 逆向工程基礎篇(基礎語法)
逆向工程 一 彙編 逆向工程基礎篇 一.單元,位,位元組。1.位 bit 電腦資料量中的最小單元,即0和 1。2.位元組 byte 乙個位元組有八位。3.字 word 乙個字有兩個位元組,即十六位。雙字 double word 兩個字,三十二位。千字 kilobyte 1024 個位元組 32 32...