高階靜態分析技能基礎 X86組合語言運算指令說明

2021-10-09 20:12:31 字數 671 閱讀 2039

本節我們看看x86指令集以及x86的硬體體系架構。在組合語言中最常見的指令就是mov,他將資料從乙個地方轉移到指定位置,該指令能將資料轉移到特定位置的記憶體或是給定暫存器。mov指令的格式為(mov 目的,源頭),源頭指的是要被挪到的資料,目的是資料被挪動的目的地, 我們看幾個具體例子:

mov eax, ebx (把暫存器ebx中的資料拷貝到eax暫存器)

mov eax, 0x42 (把數值0x42賦值給eax暫存器)

mov eax, [0x4037c4](把位址為0x4037c4的4位元組資料拷貝到eax暫存器]

mov eax, [ebx] (先從暫存器ebx中獲取數值,然後找到該數值對應的記憶體位址,接著再把位址所在處4位元組資料賦值給暫存器eax)

mov eax, [ebx + esi*4] (取出ebx中的數值,取出esi暫存器中的數值,將後者乘以4後加上前者,所得結果作為記憶體位址,並把給定位址的4位元組資料拷貝到eax暫存器)

另乙個跟mov指令很像的是指令lea,lea eax, [ebx+8],其作用為把ebx暫存器的值加上8後所得結果放入eax,這裡需要注意區別,利潤mov eax, [ebx+8]是把ebx的值加上8,所得結果作為記憶體位址,然後將位址所在處的4位元組資料轉移到eax暫存器,因此指令lea eax, [ebx+8]等價於mov eax, ebx+8,這是乙個容易混淆之處,我們看下圖會更清楚一些:

170824 彙編 x86基礎

a.1625 5 王子昂 總結 2017年8月24日 連續第325天總結 b.逆向知識 資料移動分為5種方式 立即數到暫存器 立即數到記憶體 暫存器到暫存器 暫存器到記憶體或記憶體到暫存器 記憶體到記憶體 前4種是所有現代體系都支援的,第五種是x86獨有的,可以通過inc add來直接操作記憶體 另...

X86彙編指令詳解

x86彙編基本分為七大體系 分別是 1 資料傳送指令 2 算術運算指令 3 邏輯運算指令 4 串操作指令 5 控制轉移指令 6 處理器控制指令 7 保護方式指令 先介紹資料傳送指令集 1 資料傳送指令 1.mov 格式 mov destination,source 功能 將s ource中的資料傳送...

x86彙編學習筆記

debug 是dos,windows都提供的實模式 8086 方式 程式的除錯工具.windows下使用dosbox模擬dos環境,掛載所在目錄後開啟debug.exe r指令 顯示r ax 0000 bx 0000 cx 0000 dx 0000 sp 00fd bp 0000 si 0000 d...