x86彙編學習之第一天

2021-10-03 07:41:54 字數 1850 閱讀 2665

32位

16位8位

eaxax

alecx

cxcl

edxdx

dlebx

exbl

espsp

ahebp

bpch

esisi

dhedi

dibh

注意:

1、ax存2個位元組,正好就是eax的低兩個位元組;al存1個位元組,正好就是eax的低位元組,同樣也是ax的低位元組;bcd類似;

2、這裡esp、ebp、esi、edi比較特殊只有低兩個位元組的暫存器,並沒有乙個位元組的暫存器

mov指令:

1、立即數形式

例:mov eax , 0x113344 讀記憶體

mov 0x113355 , edx 寫記憶體

2、暫存器形式

例:mov eax,dword ptr:ds [ edx ]

mov dword ptr:ds [ eax ] , ecx

3、暫存器+立即數形式

例:mov eax,dword ptr:ds [ edx + 4 ]

mov dword ptr:ds [ eax - 4 ] , ecx

4、暫存器+暫存器x形式

例:mov eax,dword ptr:ds [ edx + ecx*4 ]

mov dword ptr:ds [eax - edx *2] , ecx

5、暫存器+暫存器x+立即數形式

例:mov eax,dword ptr:ds [ edx + ecx*4 +4]

mov dword ptr:ds [eax - edx *2 - 4 ] , ecx

儲存模式:

首先我們都知道32位系統下,每個程序會有4gb的虛擬記憶體空間,假設如下排列:

接著我們在看一下下面幾條指令:

<1> mov byte ptr ds:[0x00000000],0x20

這一條毋庸置疑,是把0x20這個乙個位元組立即數放到記憶體裡面

<2> mov byte ptr ds:[0x00000000],0x2030

那麼這個我們就會產生思考,放的是0x20,還是0x30??

<3> mov byte ptr ds:[0x00000000],0x20304050

這邊也是類似的疑問!

由此我們就可以簡單講一下大端模式和小段模式兩種計算機的儲存模式了!

兩句口訣:

1、大端模式:資料高位在低位址,資料低位在高位址

2、小端模式:資料低位在低位址,資料高位在高位址

怎麼理解呢?我們可以利用dtdebug的記憶體區來進行觀察:

敲入指令:

很明顯我們發現資料的低位元組在低位址,很明顯的小端模式!!!

注:大部分的x86架構都是小端模式,許多arm架構的為大端模式

老鐵們覺得有用的話記得給個贊哦!!!我是航行的土豆!!

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...

學習第一天

知識是學會的,不是教會的 程式設計 驗證性或體驗性 創造性 學程式設計的4個階段 1.能看懂別人的 除錯別人的 2.能修改別人的 3.能拷貝別人的 做自己的事 4.能自己設計編寫 方法 多讀 做記錄 執行 修改 執行 練習,光說不練假把式 刷oj總結 寫部落格或許是個不錯的選擇 學生和已經工作的程式...

學習python之第一天

一 系統 虛擬機器 vmware workstation 15 pro 15.5.1 build 15018445 linux系統 centos 8.1.1911 x86 64 版本號 4.18.0 147.el8.x86 64 命令 uname r linux命令 pwd 顯示當前路徑 二 由於c...