資料來源:彙編語言第二版-王爽
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執行程序。
有錯誤請指正,謝謝。