暫存器是什麼?大致說暫存器是cpu的部件(一般用於資訊儲存)。也可以說暫存器是我們可以進行指令讀寫的部件。
我們目前80386的cpu的每個暫存器是4個位元組的。也就是32位。(也可以說80386cpu有32條位址線)。8個通用暫存器eax ebx ecx edx esp ebp esi edi 。 也就是我們cpu每次讀取記憶體中二進位制資料的時候,每次只能讀取32個二進位制位的資料。因為我們cpu是通過資料匯流排去讀取的。80386資料匯流排32根。。
1.lea指令。
此指令是將源運算元(也就是儲存單元)的有效位址(也可以叫做偏移位址)傳送到目的運算元。。 舉例
lea
eax,
[ebp-4c]
目的運算元
源運算元
這裡有兩個注意的地方:
(1)源運算元必須是乙個儲存單元。不能是立即數。
(2)目的運算元必須是8個通用的暫存器。eax ebx ecx edx esp ebp esi edi
講解:此示例表示的儲存單元的有效位址是 ebp-4c 這個結果被傳送到eax暫存器中。
課外知識:這個指令一般被用於我們程式中子程式堆疊分配來確定儲存單元的有效位址。因為我們區域性變數分配記憶體,我們不可能確定其相應的位址,因為堆疊分配是按照你宣告區域性變數的大小來分配的。所以我們只能採用lea指令來獲取相應記憶體單元的有效位址併發送到相應的目的運算元中。
小作業:
判斷是否正確
1.lea
eax,edx
2.lea
eax, 50h
3.lea
esp,[ebp-30]
彙編基礎一日一學習3
今天我們來學習下eip暫存器。不要小看這個暫存器。它可儲存著我們cpu要讀取指令的位址,沒有了它,cpu就無法讀取下面的指令 通俗點講cpu就無法執行 如果玩過破解,跟蹤過程式的人都應該知道。每次相應彙編指令執行完相應的eip值就會增加。我大致描述一下這個暫存器的情況。因為80386cpu的定址範圍...
彙編基礎一日一學習5
那麼棧到底是什麼呢?棧是一種具有特殊的訪問方式的儲存空間。它的特殊就是在於最後進入這個空間的資料,最先出去。舉個例子,假如這時我們有3個動物。貓咪 猴子 兔子。那麼我們按先後的順序我們先把貓咪放進棧中,然後再把猴子放到棧中,最後把兔子放到棧中。那麼此時,大家可以看到。兔子現在存在棧頂。那麼此時我們取...
彙編基礎一日一學習6
執行時棧 runtimestack 我們通常稱為 堆疊 這是由我們cpu硬體直接支援的,也是實現過程的呼叫和過程返回機制的基本組成部分。不知道大家是否知道rtl是什麼意思。如果學過程式的人都應該知道這個就是執行時庫,它是我們程式執行時必須的庫。例如我們bcb中的vclrtl。我們的bcb程式必須依賴...