電腦系統之彙編---IA32處理器資料格式及資料操作
電腦系統之彙編---IA32處理器資料格式及資料操作
IA32資料格式:
Intel用術語“字”表示16位元據類型,因此,稱32位元為“雙字”,稱64位元為“四字”。
Char*這裡指的是所有指標類型,注意:c語言新增加的long long是八位元組,但是硬體IA32不支援這個類型。
寄存器(8個32位的寄存濃ky"http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcsvvnS1CVlv6rNtyk8YnI+CiVlYXihoiVlY3ihoiVlZHijurX308PV37GjtOYoyv2+3Sm8xLTmxvejrLWxuf2zzHC199PDcaOscb/J0tS4srjH1eLQqbzEtObG96OstavKx7K7u+G4xLHkcNbQtcTK/b7doaM8YnI+CiVlYnihoiVlc2mhoiVlZGmjurG7tffTw9XfsaO05ijK/b7dKbzEtObG96OstbG5/bOhcLX308Nxo6xxsdjQ69TauLK4x9Xi0Km8xLTmxvfK/b7dx7CjrNKqsNHL/MPHsaO05rW91bujrDxicj4KsqLU2rX308O94cr4t7W72Mqxu9a4tMv8w8ejrNXi0KnK/b7dcLvyxuTL+7n9s8zQ6NKqy/zDx6GjPGJyPgolZXNwoaIlZWJwo7rT0LnY1bvWuNXrtcQ8YnI+CjxwPjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20150317/2015031710042224.png" alt="\">
大多數指令有一個或多個運算元,指示出執行一個操作中要引用的來源資料值,以及放置結果的目標位置。來源資料值可以以常數形式給出,或從寄存器或儲存空間中讀出,結果可以儲存放在寄存器或儲存空間中。
運算元分三種:
>>>1. 立即數即常數,用$開頭,後面加一個整數表示;
>>>2. 寄存器數,對字操作而言表示某個寄存器中的儲存的值;對位元組操作而言是8個單位元組寄存器中的 一個,比如:%al(eax寄存器中的低8位)
>>>3. 儲存空間引用,根據計算出的有效地址來訪問儲存空間的某個位置;包括四部分:立即數位移(lmm)、基底位址暫存器 Eb、變址寄存器 Ei、比例因素s。 有效地址被計算為 Imm + R[Eb] + R[Ei] * s。 (R[Eb]表示寄存器Eb的值,R[Ei]表示寄存器Ei的值,s的值只能是1,2,4或者8) 下表中Mb[addr] 表示對儲存空間在儲存空間中從地址addr開始的b個位元組值的引用。
有關運算元格式表
例如:地址0x100的值是56,那麼運算元0x100的值就是56,屬於絕對定址;$0x100的值0x100,是立即數定址;