文章出處

匯編源程序結構
匯編指令:有對應的機器碼的指令,可以被編譯為機器指令,最終為CPU所執行。
偽指令:由編譯器來執行的指令,沒有對應的機器碼;編譯器根據偽指令來進行相關的編譯工作。
段:一個匯編程序是由多個段組成的。分別用來存放代碼、數據或當作棧空間來使用。
說明:一個有意義的匯編源程序至少要包含一個段,用來存放匯編指令代碼。
 
匯編程序設計的具體過程
編輯、編譯、連接、執行
 
編譯過程:
進入DOS,運行編譯程序masm.exe
輸入要編譯的源文件名
確定目標文件名稱(.obj)
產生列表文件(.lst)
產生交叉引用文件(.crf)
編譯結束,輸出編譯結果。
 
連接的作用
將多個源程序的目標文件連接; 
程序調用了某個庫文件中的子程序,將庫文件和目標文件連接;
編譯生成的目標文件中,有些內容還不能直接用來生成可執行文件,需要通過連接處理為最終的可執行信息。
 
說明:Command.com是 DOS 的命令解釋器程序,也就是DOS系統的shell;用Debug跟蹤程序運行時,裝入操作由Debug執行。
注意:DOS是單任務系統。
 
程序的加載過程:
磁盤訪問.exe程序; 
找到一段容量足夠的空閑內存區,該內存區的起始地址的偏移地址為0; 
在這段內存區的前256個字節創建程序段的前綴PSP; 
從內存區的256字節處開始裝入程序; 
將該內存區的段地址存入DS,初始化其他相關寄存器,設置CS:IP指向程序入口。
 
程序執行過程中Dubug跟蹤:
Debug 可以將程序加載入內存,設置CS:IP指向程序的入口,但Debug并不放棄對CPU 的控制,這樣,我們就可以使用Debug 的相關命令來單步執行程序 ,查看每條指令指令的執行結果。
 
相關命令:
debug myfile:加載程序
r:查看寄存器設置
u:查看指令序列
t:單步執行
p:執行一組指令
 
說明:Debug加載程序后,CX存放程序長度,DS與ES、CS與SS值相同,IP=0000H。
 
廢話: 這一部分牽扯到一部分操作系統和編譯原理的知識, 然而書中并沒有進行講解, 草灘小恪也并不會(但是不久后就一定會會的)。 個人感覺學匯編能使我對C/C++更深入的了解, 并且能更容易學會微機原理, 編譯原理, 操作系統等相關的知識。

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()