所以今天早上我發佈了一個關於程序集的混淆問題,我收到了一些很棒的真正幫助,我非常感謝。程序集 - .data,.code和寄存器...?
現在我開始進入彙編,並開始瞭解它是如何工作的。
事情,我覺得我的理解好嗎包括堆棧,中斷,二進制/十六進制,一般大多數基本操作做(JMP,推,MOV等)。
概念,我掙扎理解並願與低於幫助 - 這將是一個巨大的幫助,如果你能解決所有的以下內容:
- 究竟是在.data段發生什麼?我們宣佈的是那些變量嗎?
- 如果是這樣,我們可以稍後在代碼段聲明變量嗎?如果不是,爲什麼不呢?如果是這樣,如何,以及爲什麼我們使用數據部分呢?
- 什麼是註冊簿?它與變量相比如何?我的意思是我知道這是一個存儲一小塊信息的位置......但這聽起來像是一個變數。
- 如何製作數組?我知道這似乎是隨機的,但我很好奇我會如何去做這樣的事情。
- 是否有一個列表應該用於每個寄存器的常用實踐的列表?我仍然沒有完全得到它們,但已經注意到一些人說,例如,應該使用某個寄存器來存儲程序中的「返回值」 - 是否存在一個全面的或至少提供了這些實踐的信息清單?
- 我正在學習大會的一個原因是爲了更好地理解我的高級代碼背後發生了什麼。考慮到這一點 - 當我用C++編程時,我經常考慮堆棧和堆。在彙編中,我知道堆棧是什麼 - '堆'在哪裏?
一些信息:我使用的是WinAsm作爲IDE的masm32,我正在使用Windows 7.我有很多以前的高級語言編程經驗,如C++/java。
編輯:感謝大家的幫助,非常翔實的照常!好東西!最後一件事 - 我想知道堆棧指針和基本指針或ESP和EBP之間的區別。有人可以幫我嗎?
編輯:我想我得到它現在... ESP總是指向堆棧的頂部。但是,您可以根據需要指定EBP。 ESP會自動處理,但您可以使用EBP做任何您想做的事情。例如:
push 6
push 5
push 4
mov EBP, ESP
push 3
push 2
在這種情況下,EBP現在指向拿着4的地址,但ESP現在指向控股2.
在實際應用中6,5地址,4本來是函數參數,而3和2可以是該函數內的局部變量。
我可以問你是否有書,如果你有,可能是哪本書? :) – 2010-03-01 05:07:21
不,對不起!只是互聯網。 http://stackoverflow.com/questions/2352048/assembly-32-bit-vs-64-bit - >在那篇文章中,我概述了我一直在使用的資源。我今天剛剛開始學習大會,所以隨着我收集更多資源,我將繼續在該列表上工作。 – Cam 2010-03-01 05:23:02
我開始學習大會了。有免費的PDF書名爲「從頭開始編程」,看起來相當不錯。這是我現在的主要資源。 – morgancodes 2010-12-01 15:58:59