組合語言的執行過程

2021-08-13 20:35:51 字數 876 閱讀 3546

編寫源程式 ---> 生出.asm彙編檔案  --->  編譯器編譯  ---->    生成.obj目標檔案------>聯結器鏈結 ------>生成.exe可執行檔案------>通過command載入----->送往記憶體------> cpu執行程式

源程式:包含著偽指令和彙編指令和一些標號,偽指令就是由編譯器執行的指令,編譯器根據偽指令進行相應的的編譯工作比如assume、segment、ends、end,彙編指令是由編譯器編譯為機器指令即目標檔案cpu執行

程式:源程式中最終由cpu來執行的、處理的資料和指令稱為程式

程式返回:程式執行完畢之後需要返回。程式返回的過程:乙個程式a2要想要執行必須要先有乙個已經在執行的程式a1,將a2載入到記憶體之後,將cpu的控制權交給a2,這樣a2才可以被執行。a2開始執行之後,a1暫停執行。當a2執行完之後將cpu控制權交還給a1,a1繼續執行,這個過程稱為程式的返回,在末尾加兩句mov ax,4c00int 21h,這時程式就返回,暫時不需要理解這兩句指令是什麼意思,在這裡面的a1其實就是dos裡面的command(命令直譯器),command來執行使用者輸入的dir、cd等指令,當在command中輸入可執行檔案的名稱的時候,command根據檔名找到可執行檔案,將它載入到記憶體當中去,將cs:ip執行到程式的入口,之後command暫停執行,一直等程式執行完之後,在回到碟符下,等待使用者繼續輸入。

編譯和連線源程式:編譯最後形成了乙個機器**,就是目標檔案.obj,最後在對目標檔案進行連線,連線其實就是編譯時如果源程式過大的時候將源程式分為多個源程式來編譯,將每個源程式編譯成的目標檔案連線在一起,或者是程式呼叫了某個庫檔案的子檔案,需要將子檔案和程式連線在一起生成可執行檔案,程式進行了編譯之後,得到了存有機器碼的目標檔案,目標檔案裡面的檔案還不足以直接生成可執行檔案,連線程式將這些內容最終處理為可執行檔案

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

組合語言的源程式執行

end 不是ends assume 假設 debug寫入 單獨編成原始檔在編譯成可執行檔案 執行命令 g go 乙個記憶體單元描述 記憶體單元長度 型別 表示乙個記憶體單元或暫存器中的內容 學習方便的約定 描述物件 描述方法 描述物件 描述方法 ax中內容0010h ax 0010h 2000 10...

組合語言 彙編指令

功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...