組合語言第四章總結

2022-06-05 05:45:05 字數 1647 閱讀 6080

第四章結束後,我們可以開始編寫完整程式了。

第一步:編寫彙編源程式。使用文字編輯器(如edit、 記事本等),用組合語言編寫彙編源程式。這一步工作的結果是產生了乙個儲存源程式的文字檔案。

第二步:對源程式進行編譯連線。

使用組合語言編譯程式對源程式檔案中的源程式進行編譯,產生目標檔案;再用連線程式對目標檔案進行連線,生成可在作業系統中直接執行的可執行檔案。可執行檔案包含兩部分內容。程式(從源程式中的彙編指令翻譯過來的機器碼)和資料(源程式中定義的資料)

相關的描述資訊(比如,程式有多大、要占用多少記憶體空間等) 這一步工作的結果:產生了乙個可在作業系統中執行的可執行檔案。

第三步:執行可執行檔案中的程式。在作業系統中,執行可執行檔案中的程式。作業系統依照可執行檔案中的描述資訊,將可執行檔案中的機器碼和資料加載入記憶體,並進行相關的初始化(比如設定cs:ip 指向第一條要執行的指令), 然後由cpu執行程式。在組合語言源程式中,包含兩種指令,一種是彙編指令, 一種是偽指令。彙編指令是有對應的機器碼的指令,可以被編譯為機器指令,最終為cpu所執行。而偽指令沒有對應的機器指令,最終不被cpu所執行。那麼誰來執行偽指令呢?偽指令是由編譯器來執行的指令,編譯器根據偽指令來進行相關的編譯工作。

segment和ends是一對成對使用的偽指令,這是在寫可被編譯器編譯的匯程式設計序時,必須要用到的一對偽指令。segment 和ends的功能是定義乙個段,segment 說明乙個段開始,ends 說明乙個段結束。乙個段必須有乙個名稱來標識,使用格式為:

段名segment

段名ends

乙個匯程式設計序是由多個段組成的,這些段被用來存放**、資料或當作棧空間來使用。我們在前面的課程中所講解的段的概念,在彙編源程式中得到了應用與體現,乙個源程式中所有將被計算機所處理的資訊:指令、資料、棧,被劃分到了不同的段中。乙個有意義的匯程式設計序中至少要有乙個段,這個段用來存放**。

end是乙個匯程式設計序的結束標記,編譯器在編譯匯程式設計序的過程中,如果碰到了偽指令end,就結束對源程式的編譯。所以,在我們寫程式的時候,如果程式寫完了,要在結尾處加_上偽指令end。否則,編譯器在編譯程式時,無法知道程式在何處結束。不要搞混了end和ends, ends是和segment成對使用的,標記乙個段的結束,ends的含義可理解為「endsegment"。這裡的end的作用是標記整個程式的結束。

assume這條偽指令的含義為「假設」。它假設某一段暫存器和程式中的某乙個用segment..ends定義的段相關聯。通過assume 說明這種關聯,在需要的情況下,編譯程式可以將段暫存器和某乙個具體的段相聯絡。assume並不是一條非要深入理解不可的偽指令,以後我們程式設計時,記著用assume將有特定用途的段和相關的段暫存器關聯起來即可。

用組合語言寫的源程式,包括偽指令和彙編指令,我們程式設計的最終目的是讓計算機完成一定的任務。源程式中的彙編指令組成了最終由計算機執行的程式,而源程式中偽指令是由編譯器來處理的,它們並不實現我們程式設計的最終目的。這裡所說的程式就是指源程式中最終由計算機執行、處理的指令或資料。

彙編源程式中,除了彙編指令和偽指令外,還有一些標號,比如codeg"。乙個標號指代乙個位址。 比如codes在segment的前面,作為乙個段的名稱,這個段的名稱最終將被編譯、連線程式處理為乙個段的段位址。在前3章中,我們都是通過直接在debug中寫入彙編指令來寫匯程式設計序,對於十分簡短的程式這樣做的確方便。可對於大一些的程式,就不能如此了。我們需要寫出能讓編譯器進行編譯的源程式,這樣的源程式應該具備起碼的結構。

組合語言學習筆記(第四章)

1.組合語言源程式包含彙編指令和偽指令兩種指令。偽指令沒有對應的機器指令,最終不被cpu執行。偽指令是由編譯器來執行的指令,編譯器根據偽指令來進行相關的編譯工作。2.segments和ends是寫可被編譯器編譯的匯程式設計序時必須要用到的一對偽指令。它們的功能是定義乙個段,乙個段必須有乙個名稱來標識...

組合語言讀書筆記 第四章

assume cs codesg codesg segment mov ax,0123h mov bx,0456h add ax,bx add ax,bx mov ax,4c00h int 21h codesg ends end定義乙個 段 segment endsend組合語言的結束標記 assu...

第四章總結

1.對貪心演算法的認識 貪心演算法在求解問題時,不從整體上考慮,而是得到某種意義上的區域性最優解,做出當前看來是最好的選擇。每次的選擇都會依賴之前作出的選擇,而對後面的選擇不會產生影響。它具有最優子結構的性質,即問題的最優解包含其子問題的最優解。但貪心演算法不是對於所有的問題都能得到整體最優解,最重...