彙編上機涉及檔案

2021-10-22 22:07:22 字數 2483 閱讀 3597

asm是組合語言源程式的副檔名,組合語言(assembly language)是面向機器的程式設計bai語言。組合語言是一種功能很強的程式語言,是利用計算機所有硬體特性並能直接控制硬體的語言。開啟asm檔案有兩種方法即筆記本和masmedit軟體。

在組合語言中,用助記符(memoni)代替操作碼,用位址符號(symbol)或標號(label)代替位址碼。這樣用符號代替機器語言的二進位製碼,就把機器語言變成了組合語言。因此組合語言亦稱為符號語言。

使用組合語言編寫的程式,機器不能直接識別,要由一種程式將組合語言翻譯成機器語言,這種起翻譯作用的程式叫匯程式設計序,匯程式設計序是系統軟體中語言處理系統軟體。匯程式設計序把組合語言翻譯成機器語言的過程稱為彙編。

組合語言比機器語言易於讀寫、除錯和修改,同時具有機器語言全部優點。但在編寫複雜程式時,相對高階語言**量較大,而且組合語言依賴於具體的處理器體系結構,不能通用,因此不能直接在不同處理器體系結構之間移植。

組合語言的特點

1、面向機器的低階語言,通常是為特定的計算機或系列計算機專門設計的。

2、保持了機器語言的優點,具有直接和簡捷的特點。

3、可有效地訪問、控制計算機的各種硬體裝置,如磁碟、儲存器、cpu、i/o埠等。

4、目標**簡短,占用記憶體少,執行速度快,是高效的程式語言。

5、經常與高階語言配合使用,應用十分廣泛。

組合語言源程式檔案。edit.com編譯產生

.asm檔案是bai以asm作為副檔名的du檔案zhi,是組合語言的源程式檔案。dao它是文字格式的檔案,可以用zhuan任何文shu本編輯器(如:windows下的notepad、notepad+、editplus、ultraedit,dos下的edit.com、qe.exe等)進行建立或編輯。

這種型別的檔案必須滿足微軟或borland或其他開源組織對組合語言源**的語法規則的要求。如果你寫的.asm檔案不滿足語法規則、或者存在演算法或者業務邏輯上的錯誤,前者將無法通過編譯程式的編譯,後者即使生成了可執行程式也不能得到你需要的結果。

與上節對應,.asm檔案的編譯器有微軟的masm(masm32)、borland公司的tasm、開源組織的nasm等,通過這些編譯器編譯後將生成擴充套件名為obj的目標檔案。再通過對應的鏈結程式(如link、tlink等)將obj檔案轉化為可執行的exe檔案。

masm.exe彙編產生:.obj .lst .crf檔案

masm.exe 彙編系統程式,用於將組合語言源程式(.asm)彙編成目標程式(.obj)。

.obj檔案為目標檔案,即彙編產生的目標檔案。

編譯:當前源**編譯成二進位制目標檔案bai(.obj檔案)

可以說.obj檔案是.exe檔案的前身;

1、obj裡存的是編譯後的**跟資料,並且有名稱,所以在連線時會出現未解決的外部符號一說。當連成exe後便不存在名稱的概念了,只有位址。lib就是一堆obj的組合。

編譯器會預設鏈結一些常用的庫,其它的需要你自己指定。

2、目標檔案,一般是程式編譯後的【二進位制檔案】,再通過鏈結器和資源檔案鏈結就成可執行檔案了。obj只給出了程式的【相對位址】,而可執行檔案是【絕對位址】。cpp對應的二進位制**格式obj,是未經重定位的!

3、編譯c 程式會產生obj 檔案和exe 檔案,我們都知道exe 檔案是可執行檔案,但obj 檔案是做什麼用的呢?

查了下資料發現obj 檔案和exe 檔案都是二進位制資料檔案,其中obj 檔案是coff 格式,exe 檔案時pe 格式。

那為什麼不直接讓 obj 檔案作為可執行檔案呢?

原來obj 檔案的格式是跨平台 的,通過link 可以將obj 鏈結為所使用系統能夠識別的格式,比如windows 系統中的exe 檔案。

乙個現代編譯器的主要工作流程如下:

源程式(source code)→ 預處理器(preprocessor)→ 編譯器(compiler)→ 匯程式設計序(assembler)→ 目標程式(object code)→ 聯結器(鏈結器,linker)→ 可執行程式(executables)

**.lst檔案為列表檔案,**左邊的數字是匯程式設計序的二進位制輸出,與源**行有關。即裡面是左邊為機器指令,右邊為彙編指令。

**.crf檔案為交叉索引檔案,**它負責記錄符號名定義的行號以及引用的行號。

link.exe連線產生:.exe .map檔案

link.exe 連線程式,用於將彙編後的目標檔案(.obj)連線生成可執行檔案(.exe)。以下是它的格式:

link obj[,exe[,map[,lib]]]
.exe檔案是可執行檔案。

.map檔案是列表映像檔案,負責記錄段的開始、結束位址以及段的長度。

cref.exe交叉索引產生檔案:ref

.ref檔案為交叉列表檔案,用於記錄源程式符號名定義和引用位置行數。

彙編 上機實驗一

一 實驗任務 1.實現人機對話程式設計 給出人機對話的具體程式要求 data segment pars db 100,100 dup mesg db what is your name?data ends stack segment para stack stack db 100 dup stack...

彙編 上機實驗二

實驗任務 1.實現迴圈結構程式設計 陣列累加求和以及排序程式設計 data segment n dw 5 sum dw data ends code segment main proc far assume cs code,ds data start push ds mov ax,0 push ax...

彙編上機操作

用文字編輯程式寫程式,形成.asm檔案進行彙編,形成.obj檔案,再用連線程式對.obj檔案進行連線,形成.exe檔案。需要檔案 編輯程式 edit.com 匯程式設計序 masm.exe 連線程式 link.exe 除錯程式 debug.exe 常用dos命令 盤 c e 選擇碟符 cd 選擇目錄...