彙編32位暫存器和位址編號的五種書寫形式

2022-08-05 15:03:17 字數 1136 閱讀 6031

32位通用暫存器

32位:eax   ebx  ecx   edx  esp  ebp   esi  edi  每個暫存器的最大寬度是32位

16位:ax       bx     cx    dx   sp     bp    si     di

8位   :al     bl   cl      dl    ah    bh    ch    dh

想暫存器存乙個數字可以用mov指令

mov eax,1  就是把1存到eax暫存器中

程式記憶體

乙個32位的程式最大儲存空間是4g

就是從0~0xffff的取值範圍

每個值都是乙個記憶體位址都對應一塊記憶體

沒快記憶體就是8位

mov ecx,dword ptr ds:[0xc1faf8]

把記憶體0xc1faf8上的資料複製到ecx暫存器上

mov dword ptr ds:[0xc1faf8],ecx

把ecx上的資料複製到0xc1faf8

彙編位址編號的物種形式

第一種:

mov dword ptr ds:[0xc1faf8],124323

第二種:【reg】

ecx=c1faf8

mov dword ptr ds:[ecx],1234233

第三種:【reg+立即數】

ecx=c1faf4

c1faf8=1233213

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

第四種:[reg+reg*]

讀取值mov eax,c1faf4

mov ecx,2

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

寫入值mov eax,c1faf4

mov ecx,2

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

第五種:【reg+reg*+立即數】

讀取值mov eax,c1faf4

mov ecx,2

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

寫入值mov eax,c1faf4

mov ecx,2

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

64位和32位的暫存器和彙編的比較

區別有 順帶提乙個小問題,64位的彙編 在ret之前可能會加一句rep,這裡的rep沒有實際意義,只是出於amd處理器的原因,避免jmp所到達的地方直接就是ret,這樣會使得處理器執行更快一些。但是現在的棧幀經常是固定大小的,在函式呼叫的最開始就被設定,在整個呼叫期間,棧頂指標保持不變,這樣就可以通...

64位暫存器與彙編

64位暫存器分配的不同 順帶提乙個小問題,64位的彙編 在ret之前可能會加一句rep,這裡的rep沒有實際意義,只是出於amd處理器的原因,避免jmp所到達的地方直接就是ret,這樣會使得處理器執行更快一些。但是現在的棧幀經常是固定大小的,在函式呼叫的最開始就被設定,在整個呼叫期間,棧頂指標保持不...

彙編常見暫存器以及標誌位

簡寫 英文全稱 中文作用 axaccumulator 累加器存放運算元,與外部裝置 bxbase 通用暫存器 基址暫存器 計算儲存器位址時用 cxcount 通用暫存器 儲存計數值 移位指令,迴圈指令,串處理指令中用作隱含的計數器 dxdata 通用暫存器 雙字長運算時存放高位字或存放i o埠位址 ...