彙編的作用有很多,這裡我們更偏終於對高階語言的理解,高階語言C語言、C++語言有很多概念,如果我們懂彙編,看懂每一行程式碼編譯器生成的彙編程式碼,我們就能知道這行程式碼計算機在做什麼,從本質上理解高階語言。彙編是高手的必經之路。
從事PC端、手機端開發的程式設計師,若要了解自己用高階語言編寫的程式怎樣與計算機硬體打交道的,需要掌握組合語言,瞭解機器語言(二進位制組成的語言)。如果打算從事安全相關行業的除了瞭解這些知識外,還需要了解彙編與二進位制之間對應的關係,如2-1-1圖:
圖2-1-1
【註釋:彙編與二進位制之間的關係是程式設計達人基礎課程裡PE和硬編碼課程】
【簡單介紹16位、32位、64位彙編】
彙編分為16位、32位和64位。
1、16位、32位、64位是指X86處理器。【本章節泛指處理器】
2、16位處理器內部,能夠一次性處理、傳輸、暫時存放的資料的最大長度是16位;
32位處理器內部,能夠一次性處理、傳輸、暫時存放的資料的最大長度是32位;
64位處理器內部,能夠一次性處理、傳輸、暫時存放的資料的最大長度是64位。
3、16位彙編一般是指DOS彙編(真實模式彙編);
32位和64位彙編一般是指WINDOWS彙編(保護模式彙編);
4、16位處理器內,有8個通用暫存器AX、BX 、CX、 DX、 SI、 DI、 BP、 SP,其中前四個可以拆分成獨立的8位暫存器,即AH、AL、BH、BL、CH、CL、DH、DL。
32位處理器在16位處理器基礎上,擴充套件了8個通用暫存器的長度,即EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。
64位處理器在32位處理器基礎上,擴充套件了通用暫存器的長度,即RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP。
【註釋:詳細瞭解16位、32位、64位的不同可以參考Intel白皮書】
【為什麼學習32位彙編】
目前【X86】主流處理器架構是64位,現在很少有32位的處理器,16位的處理器我們平時接觸的不多。16位彙編也就是DOS彙編,目前很少出現,現在主流是WINDOWS彙編,所以本章節就不概述16位彙編,跟隨主流講解32位下WINDOWS彙編,為什麼我們學習的是32位彙編,而不是64位彙編呢?32位彙編和64位彙編兩者沒有本質的區別都是WINDOWS彙編,64位彙編只是在32位彙編的基礎擴充套件了一些暫存器和指令。雖然作業系統支援64位,但目前很多程式都是32位的,所以我們並不能放棄32位彙編,相反,32位彙編很重要。
【win32彙編】
我們學習的32位彙編並不是win32彙編,win32彙編是宏彙編,裡面有大量的偽碼。
【這章節能讓我們學習到彙編什麼深度】
學習完彙編章節,我們能看懂C語言和C++語言及其他高階語言編寫的普通應用程式,如果要看作業系統核心、學習保護模式,請看程式設計達人相關的課程資料。
【配置彙編的學習環境】
我們需要用到的工具是DTDEBUG,可到程式設計達人官網下載,下載地址www.bcdaren.com
下載安裝後,我們雙擊開啟DTDEBUG程式,點選選單鍵:Options->Appearance->Directorics,找到安裝資料夾DTDebug下的udd資料夾,將UDD path改為udd路徑;找到plugin資料夾,將Plugin path路徑設為plugin資料夾路徑,如2-1-2圖:
圖2-1-2
配置好環境後,我們用DTDEBUG開啟一個程式,開啟的方式有兩種,一種是進入點選選單鍵:File--> open,選擇相應的程式,一種是將程式直接拖進DTDEBUG視窗中,DTDEBUG一共四個介面,左上角是組合語言,程式執行到哪一步都可以在這個視窗看到,右上角是暫存器視窗,左下角記憶體視窗,右下角是堆疊視窗。如圖2-1-3:
圖2-1-3 DTDEBUG介紹
彙編的作用有很多,這裡我們更偏終於對高階語言的理解,高階語言C語言、C++語言有很多概念,如果我們懂彙編,看懂每一行程式碼編譯器生成的彙編程式碼,我們就能知道這行程式碼計算機在做什麼,從本質上理解高階語言。彙編是高手的必經之路。
從事PC端、手機端開發的程式設計師,若要了解自己用高階語言編寫的程式怎樣與計算機硬體打交道的,需要掌握組合語言,瞭解機器語言(二進位制組成的語言)。如果打算從事安全相關行業的除了瞭解這些知識外,還需要了解彙編與二進位制之間對應的關係,如2-1-1圖:
圖2-1-1
【註釋:彙編與二進位制之間的關係是程式設計達人基礎課程裡PE和硬編碼課程】
【簡單介紹16位、32位、64位彙編】
彙編分為16位、32位和64位。
1、16位、32位、64位是指X86處理器。【本章節泛指處理器】
2、16位處理器內部,能夠一次性處理、傳輸、暫時存放的資料的最大長度是16位;
32位處理器內部,能夠一次性處理、傳輸、暫時存放的資料的最大長度是32位;
64位處理器內部,能夠一次性處理、傳輸、暫時存放的資料的最大長度是64位。
3、16位彙編一般是指DOS彙編(真實模式彙編);
32位和64位彙編一般是指WINDOWS彙編(保護模式彙編);
4、16位處理器內,有8個通用暫存器AX、BX 、CX、 DX、 SI、 DI、 BP、 SP,其中前四個可以拆分成獨立的8位暫存器,即AH、AL、BH、BL、CH、CL、DH、DL。
32位處理器在16位處理器基礎上,擴充套件了8個通用暫存器的長度,即EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。
64位處理器在32位處理器基礎上,擴充套件了通用暫存器的長度,即RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP。
【註釋:詳細瞭解16位、32位、64位的不同可以參考Intel白皮書】
【為什麼學習32位彙編】
目前【X86】主流處理器架構是64位,現在很少有32位的處理器,16位的處理器我們平時接觸的不多。16位彙編也就是DOS彙編,目前很少出現,現在主流是WINDOWS彙編,所以本章節就不概述16位彙編,跟隨主流講解32位下WINDOWS彙編,為什麼我們學習的是32位彙編,而不是64位彙編呢?32位彙編和64位彙編兩者沒有本質的區別都是WINDOWS彙編,64位彙編只是在32位彙編的基礎擴充套件了一些暫存器和指令。雖然作業系統支援64位,但目前很多程式都是32位的,所以我們並不能放棄32位彙編,相反,32位彙編很重要。
【win32彙編】
我們學習的32位彙編並不是win32彙編,win32彙編是宏彙編,裡面有大量的偽碼。
【這章節能讓我們學習到彙編什麼深度】
學習完彙編章節,我們能看懂C語言和C++語言及其他高階語言編寫的普通應用程式,如果要看作業系統核心、學習保護模式,請看程式設計達人相關的課程資料。
【配置彙編的學習環境】
我們需要用到的工具是DTDEBUG,可到程式設計達人官網下載,下載地址www.bcdaren.com
下載安裝後,我們雙擊開啟DTDEBUG程式,點選選單鍵:Options->Appearance->Directorics,找到安裝資料夾DTDebug下的udd資料夾,將UDD path改為udd路徑;找到plugin資料夾,將Plugin path路徑設為plugin資料夾路徑,如2-1-2圖:
圖2-1-2
配置好環境後,我們用DTDEBUG開啟一個程式,開啟的方式有兩種,一種是進入點選選單鍵:File--> open,選擇相應的程式,一種是將程式直接拖進DTDEBUG視窗中,DTDEBUG一共四個介面,左上角是組合語言,程式執行到哪一步都可以在這個視窗看到,右上角是暫存器視窗,左下角記憶體視窗,右下角是堆疊視窗。如圖2-1-3:
圖2-1-3 DTDEBUG介紹