彙編學習記錄之五

資料來源:彙編語言第二版-王爽

1.段的綜述

我們可以將一段內存定義爲一個段,用一個段地址指示段,用偏移地址訪問段內的單元,這完全是我們自己的安排。

我們可以用一個段來存放數據,將它定義爲“數據段”,將它的段地址放在數據段寄存器ds中,用mov,add,sub等訪問內存單元的指令時,CPU就會將我們定義的數據段中的內容當作數據來進行訪問。

我們可以用一個段來存放代碼,將它定義爲“代碼段”,將它的段地址放在代碼段寄存器cs中,將代碼段中第一條指令的偏移地址放在指令指針寄存器ip中,CPU就會將我們定義的代碼段中的內容當作代碼指令來執行。

我們可以用一個段當作棧,將它定義爲“棧段”,將它的段地址放在棧段寄存器ss中,將棧頂單元的偏移地址放在棧頂指針寄存器sp中,這樣CPU在執行push、pop指令時就會將我們定義的棧段當作棧空間來使用。

不管我們如何安排,CPU將內存中的某段內容當作代碼,是因爲cs:ip指向了那裏;CPU將標段內存當作棧空間,是因爲ss:sp指向了那裏。

我們一定要清楚,什麼是我們的安排,以及如何讓CPU按照我們的安排行事。要非常的清楚CPU的工作原理,才能在控制CPU來按照我們的安排運行的時候做到遊刃有餘。

2.Debug的使用

(1)什麼是Debug?

Debug是Dos、Windows都提供的實模式(8086方式)程序的調試工具。使用它可以查看CPU各種寄存器中的內容、內存的情況和在機器碼級跟蹤程序的運行。

(2)常用的Debug功能指令

r 指令查看、改變CPU寄存器的內容

d 指令查看內存中的內容(數據)

e 指令改寫內存中的內容(數據)

u 指令將內存中的機器指令翻譯成彙編指令

t 指令執行一條機器指令

a 指令以彙編指令的格式在內存中寫入一條機器指令

p 指令退出程序或者快速執行循環體

3.一個彙編源程序從寫出到執行的過程

(1)編寫彙編源程序:

在文本編輯器中使用彙編語言編寫彙編源程序,生成一個存儲彙編源程序文本文件(.asm)。

(2)對彙編源程序進行編譯鏈接:

使用彙編語言編譯程序對彙編源程序文件中的源程序進行編譯,產生目標文件;

再用連接程序對目標文件進行連接,生成可以在操作系統中直接運行的可執行文件。

可執行文件中包含兩部分內容:

(2.1)程序(從源程序中的彙編指令翻譯過來的機器碼)和數據(源程序中定義的數據)

(2.2)相關的描述信息(比如,程序有多大、要佔用多少內存空間等)

(3)執行可執行文件中的程序。

在操作系統中,執行可執行文件中的程序。操作系統依照可執行文件中的描述信息,將可執行文件中的機器碼和數據加載入內存,並進行相關的初始化(比如設置cs:ip指向第一條要執行的指令),然後由CPU執行程序。

 

有錯誤請指正,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章