❶ 匯編語言的編譯器是用什麼寫的呢
編譯器一般是用c寫的,最初的東西肯定是用機器語言寫的,我老師曾經用在紙帶上穿孔的辦法寫過程序。
他當時的願望是用鍵盤敲一個A就能輸入一個A,而不是出來一排孔。
❷ 匯編語言編譯器的TASM的用法
TASM是Borland公司推出的匯編編譯器,也是一種使用很廣泛的編譯器,和MASM相比,TASM的升級沒有這么頻繁。TASM早在1.0版本就有了對80386處理器指令的完全支持(MASM要到5.0版本才支持80386指令),1989年推出的1.01版本修正了1.0版的一些錯誤;早期的版本還有TASM 3.0和TASM 4.0,其中4.0版是TASM系列編譯器編寫DOS程序使用最廣泛的版本。
到目前為止,TASM的最後一個版本是5.0版,這個版本支持Win32編程,並單獨為Win32編程附帶有一整套的32位程序:32位的編譯器TASM32.EXE、鏈接器TLINK32.EXE和資源編譯器BRC32.EXE。與這些32位程序對應的16位工具在軟體包中依然存在,文件名為TASM.EXE,TLINK.EXE和BRC.EXE等。
TASM 5.0命令行的使用方法是:
TASM32 [選項] 源文件名[,[目標文件名],[列表文件名],[索引文件名]][;]
在Win32編程時TASM的常用選項如下表所示。
選 項
簡 介
/ml,/mx,/mu
對大小寫是否敏感:ml=全部敏感,mx=全局變數大小寫敏感,mu=不敏感,Win32編程中必須用ml選項
/m#
允許第#次編譯掃描時可以向前引用,一般使用/m2
/i路徑
設定include文字所在的路徑
/l,/la
lst文件的格式:/l為正常格式,/la為擴充格式
/zi,/zd,/zn
符號調試信息的控制:/zi為全部,/zd為僅有行號,/zn為不產生調試信息
TASM和MASM之間的導入庫和目標文件等不能通用,程序員無法用Microsoft的鏈接器來鏈接TASM產生的obj文件,反之亦然,這是因為TASM的庫文件和obj文件一直是OMF格式,與Microsoft使用的COFF格式不兼容
❸ 匯編程序是怎麼編譯的
匯編語言是一種低級語言,匯編語言是匯編指令集、偽指令集和使用它們規則的統稱,使用具有一定含義的符號為助憶符,用指令助憶符、符號地址等組成的符號指令稱為匯編格式指令。
過程:
編輯:用編輯軟體(EDIT.EXE或記事本)形成源程序(.ASM)
匯編:用匯編程序(MASM.EXE)對源程序進行匯編,形成目標文件(.OBJ),格式如下:MASM LX.ASM;
連接:用連接程序(LINK.EXE)對目標程序進行連接,形成可執行文件(.EXE),格式如下:LINK LX.OBJ;
執行:如果結果在屏幕在顯示,則直接執行可執行文件。
調試:用調試程序(LINK.EXE)對可執行文件進行調試,格式如下:DEBUG LX.EXE
匯編語言中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址碼。匯編程序(如MASM)的原理實際上就是把匯編的代碼轉成電腦可以識別的二進制碼
❹ c語言編譯器如何運行
編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。
1、預處理階段:
主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)
2、匯編階段:
插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。
3、編譯階段:
將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。
4、鏈接階段:
在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。
❺ 匯編語言中 LEA DX,S MOV AH,9 INT 21H具體意思是什麼,請大師指教。
LEA DX,S;裝載s的有效地址到dx,該語句可以用mov;
dx,s代換,把S單元的地址裝到DX,因為下一條指令要用到S的地址;
MOV AH,9 INT 21H;調用DOS功能,該功能為顯示DS:DX地址處的字元;
匯編語言
MOV AH 0BH
INT 21H是86單片機的DOS調用中斷
完成的功能是:檢驗鍵盤狀態
返回值:AL=00,有輸入
AL=FF,無輸入
(5)匯編語言編譯器使用擴展閱讀:
用匯編語言等非機器語言書寫好的符號程序稱為源程序,匯編語言編譯器的作用是將源程序翻譯成目標程序。目標程序是機器語言程序,當它被安置在內存的預定位置上後,就能被計算機的CPU處理和執行。
匯編的調試環境總的來說比較少,也很少有非常好的編譯器。編譯器的選擇依賴於目標處理器的類型和具體的系統平台。一般來說,功能良好的編譯器用起來應當非常方便,比如,應當可以自動整理格式、語法高亮顯示,集編譯、鏈接和調試為一體,方便實用。
❻ 匯編語言的編譯器是用什麼語言寫的,為什麼
直接用指令碼寫出第一個匯編語言編譯器,然後就可以用匯編語言寫新的編譯器,其實很多語言都可以寫匯編編譯器
比如第一個C語言編譯器可能是用匯編寫的,但是以後的C編譯器都可以用C語言來寫,神奇吧,哈哈
❼ 匯編語言編譯器的MASM編譯器介紹
MASM是Microsoft公司推出的匯編編譯器。它的版本從低到高經過了很多次的升級(微軟的通病,升級補丁多如牛毛)。每次升級除了例行的錯誤修正外都增加了一些新的功能,以至於到最後高版本和低版本的語法和功能相差很多,向下兼容性也不好。低版本的MASM固然無法編譯高版本的源程序,但高版本的MASM也可能無法正常編譯低版本的源程序,如MASM 4.0寫的源程序常常無法在MASM 6.x上編譯成功。在使用MASM系列編譯器時,如果不先搞清楚特定的語法和編譯選項可以在哪個版本上用,編譯中就會錯誤連篇。所以在這里有必要了解一下MASM各版本的演變過程
下表列出了不同版本MASM編譯器的區別。
版 本
簡 介
MASM 4.00
這是最先廣泛使用的一個MASM版本,適用於DOS下的匯編編程。它很精巧,但使用起來不是很智能化,需要用戶自己一板一眼地寫出所有的東西。很多教科書上講的8086匯編語法都是針對這個版本的,對程序員來說。它只比用Debug方便一點點。
MASM 5.00
MASM 5.00比4.00在速度上快了很多,並將段定義的偽指令簡化為類似 .code與.data之類的定義方式,同時增加了對80386處理器指令的支持,對4.00版本的兼容性很好
MASM 5.10
對程序員來說,這個版本最大的進步是增加了對@@標號的支持。這樣,程序員可以不再為標號的起名花掉很多時間。另外,MASM 5.10增加了對OS/2 1.x的支持
MASM 5.10B
1989年推出,比上一個版本更穩定、更快,它是傳統的DOS匯編編譯器中最完善的版本
MASM 6.00
1992年發布,有了很多的改進。編譯器可以使用擴展內存,這樣可以編譯更大的文件,可執行文件名相應從Masm.exe改為Ml.exe。從這個版本開始可以在命令行上用*.asm同時編譯多個源文件,源程序中數據結構的使用和命令行參數的語法也更像C的風格。最大的改進之一是開始支持 .if/.endif這樣的高級語法,這樣,使用復雜的條件分支時和用高級語言書寫一樣簡單,可以做到幾千行的代碼中不定義一個標號;另外增加了invoke偽指令來簡化帶參數的子程序調用。這兩個改進使匯編代碼的風格越來越像C,可讀性和可維護性提高了很多
MASM6.00A
未發售的版本
MASM 6.00B
最後一個支持OS/2的MASM版本,修正了上一版本中的一些錯誤
MASM 6.10
修正了一些錯誤,同時增加了/Sc選項,可以在產生的list文件中列出每條指令使用的時鍾周期數
MASM6.10A
1992年發布,修正了一些內存管理方面的問題
MASM 6.11
1993年11月發布,支持Windows NT,可以編寫Win32程序,同時支持Pentium指令,但不支持MMX指令集
MASM6.11C
1994年發布,增加了對Windows 95 VxD的支持
MASM 6.12
1997年8月發布,增加 .686,.686P,.MMX聲明和對相應指令的支持
MASM 6.13
1997年12月發布,增加了 .K3D聲明,開始支持AMD處理器的3D指令
MASM 6.14
這是一個很完善的版本,它在 .XMM中增加了對Pentium III的SIMD指令集的支持,相應增加了OWORD(16位元組)的變數類型
MASM 6.15
❽ 匯編語言編譯器怎麼使用
這個問題很不好跟你解釋
能夠在屏幕上顯示結果並不是編譯器做的事
而是你程序代碼與你自己來做的事
編譯器只會把匯編指令翻譯成機器語言指令
去下載AndASM環境編譯器 有語法檢測功能,高亮顯示。以及環境搭建
多學指令的運用以及編程最新咨詢消息,去了解哪些要學哪些要學精
❾ 匯編語言編譯器是怎麼編寫的
最開始的編譯器是機器語言寫的,然後寫出來支持部分之後,就可以用這部分繼續編譯其他部分的。