匯編源程序通過編輯編譯鏈接
⑴ 把匯編源程序變成代碼程序的過程是()
把匯編源程序變成代碼程序的過程是編譯。
編譯語言不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何編程語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程序的應用有關。
編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。
(1)匯編源程序通過編輯編譯鏈接擴展閱讀:
編譯技術的發展
在早期馮諾依曼計算機時期 (20世紀40年代) 程序都是以機器語言編寫,機器語言就是實際存儲的01代碼,編寫程序是十分枯燥乏味的。
後來匯編語言代替機器語言一符號形式該處操作指令和地址編碼。但匯編語言仍有許多缺點, 閱讀理解起來很難,而且必須依賴於特定的機器,如果想使編寫好的程序在另一台計算機上運行必須重寫。
在20世紀50年代IBM的John Backus帶領一個研究小組對FORTRAN高級語言及其編譯器進行開發。編譯程序的自動生成工具初現端倪,現在很多自動生成工具已經廣泛使用例如語法分析工具LEX,語言分析程序YACC等。
在20世紀60年代人們不斷的用自編譯技術構造編譯程序,即用被編譯的語言本身來實現該語言的編譯程序,但其基本原理和結構大體相同。
⑵ C語言編輯編譯連接的作用是什麼
C語言編輯的作用是檢查語法,製作C語言的源文件和頭文件,生成匯編代碼。
C語言編輯的作用是將匯編代碼轉換機器碼。在這一步中,會對文件內部的語法語義做處理,如果編譯出錯,無法進行後續動作。
C語言鏈接的作用是將機器碼鏈接到一起生成可執行程序。這一步會對文件之間的關聯做檢查,如果出錯,將不會生成可執行程序,也就無法執行。
(2)匯編源程序通過編輯編譯鏈接擴展閱讀:
C語言鏈接時,將源文件中用到的庫函數與匯編生成的目標文件.o合並生成可執行文件。該可執行文件會變大很多,一般是調用自己電腦上的靜態庫。
靜態庫和應用程序編譯在一起,在任何情況下都能運行,而動態庫是動態鏈接,文件生效時才會調用。很多代碼編譯通過,鏈接失敗就極有可能在靜態庫和動態庫這出現了紕漏,要視情況解決。缺少相關所需文件,就會鏈接報錯。這個時候就要檢查下本地的鏈接庫是不是缺損。
⑶ C語言源程序文件經過編譯連接之後生成一個後綴為_____的文件。
如果只生成一個文件,那麼這個題目答案是B。編譯(compile)後生成目標文件,後綴:.obj。也就是機器碼。
然後鏈接器(Linker) 連接生成可執行文件,後綴:.exe。最後運行命令(go),直接運行.exe文件。
(3)匯編源程序通過編輯編譯鏈接擴展閱讀:
簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。
一個現代編譯器的主要工作流程:源代碼(source code) →預處理器(preprocessor) →編譯器(compiler) →目標代碼(object code) →鏈接器(Linker) → 可執行程序(executables)
高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。
編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。
源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言。
而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。
最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。
⑷ 為什麼要對C源程序進行編譯、鏈接
首先要說的是C語言屬於高級語言,不能直接被計算機識別而執行,所以需要一些操作來轉化。。一開始是編譯預處理,對宏,包含指令,編譯指令等進行處理,然後是詞法語法分析,將源代碼翻譯成中間代碼(一般是匯編),接著優化代碼,,然後將中間代碼翻譯成機器語言(目標文件),機器語言是計算機的基層語言,能被計算機直接識別。。接著鏈接目標文件,生成可以執行文件。。。大概就是這樣。。詳細的LZ可看這個總結。。http://bbs.zdnet.com.cn/thread-1614727-1-1.html
⑸ (1)什麼是源程序(對匯編來說)、匯編程序(編譯程序)、連接程序、目標程序、執行程序
(1)略
(2)略
(3)
數據是被定義在數據段的,函數是被定義在代碼段的
變數通過內存定址方式來獲取,比如mov ax,[1234]
函數是通過call指令來調用的,並通過ret指令返回
(4)
C的輸入輸出一般直接用函數解決
而匯編既可以通過調用系統的中斷,也可以通過操作硬體的方式來實現
比如鍵盤輸入可以預先設置int 9中斷,在其中直接讀取鍵盤的埠
顯示器輸出可以通過直接寫現存的方式實現,或者直接控制顯卡
公共資源的共享其實就是把那些數據的內存地址讓大家都知道唄
(5)
先把C的源碼編譯了,然後用反匯編軟體(DEBUG或OllyDBG)反匯編
不過這種方法有點不是讓人很愉快,因為高級語言生成的匯編指令非常多,常常會會讓你找不到北
⑹ 新手小白求助大神!!匯編程序寫完怎麼編輯鏈接運行啊!
匯編有多種。最原始的是手工匯編,就是寫出程序後對照表查到每行命令對應的二進制機器碼,然後把一系列的二進制機器碼手工敲入。這個對照表也可由電腦來查對,這樣就形成了小匯編,人只管敲源程序,敲一行電腦就自動將其匯編成機器碼。
手工匯編和小匯編所有跳轉和調用的地址都是絕對地址,在程序修改的時候務必都要照顧到,稍有遺漏就不能正常運行。所以就有了稱為「電腦語言」的匯編語言,所有跳轉和調用的地址,無論源地址還是目標地址,都可用符號來代替。但這樣一來就不能敲一行匯編一行,只能是全部源程序寫好之後再統一匯編,形成可執行的二進制機器碼。
匯編語言的源程序篇幅很長,可讀性很差,於是就有了「宏匯編」,重復出現的相似程序段可作為一個「宏」,用一個簡單的宏代號來表示。宏在匯編以後不是重復的調用,而是在序列中形成一段機器碼。
ASM就是匯編語言,MASM就是宏匯編語言。
無論什麼電腦語言,源程序都是文本格式,都可用記事本來寫,來改,但存檔時不同的語言要用不同的擴展文件名。存檔以後,解釋程序就可以在解釋環境中運行,匯編和編譯程序就必須先經過匯編或編譯以及必要的連接,然後在操作系統下運行。
⑺ 用C語言編的程序,要生成可執行文件的時候,要編譯、鏈接,編譯是什麼意思啊鏈接是什麼意思編譯和鏈接
編譯就是把C代碼轉換成CPU可執行的機器指令,每個.c文件生成一個.obj文件。
鏈接就是把生成的(多個) .obj 文件及用到的庫文件(.lib)一起組合生成可執行文件(.exe)。
⑻ 匯編源程序經過編譯後是什麼誰能提供,我想看一下。謝謝
匯編程序編寫的一般過程:
1、編輯:EDIT 文件名.ASM
2、匯編:MASM 文件名;
用.ASM(源文件)生成.OBJ(目標文件),
也可生成.LST(列表)、.CRF(交叉引用)
3、連接:LINK 文件名;
用.OBJ文件生成.EXE(可執行文件)
也可生成.MAP(存儲映象),
還可使用.LIB(庫文件)
4、調試:DEBUG 文件名.EXE
按每個模塊(子程序)的輸入輸出關系檢查
即編譯後生成obj文件,鏈接後生成exe文件
⑼ 匯編語言的那個編譯鏈接 的詳細過程 每一步驟
16位匯編:安裝MASM5.0編譯器,假設將編譯器MASM5.0文件放在c:\下,在DOS下進入c
:\MASM5.0目錄下,輸入命令masm,回車,出現"【.ASM】"會提示輸入源文件所在文件目錄及以.asm為後綴的文件名,回車,出現"【.obj】"會提示輸入目標文件名,然後回車直到結束。
然後輸入link命令,出現【.obj】會提示輸入目標文件,回車,會出現"【.exe】"提示輸入可執行文件,回車知道結束。然後輸入可執行文件名,就可以運行程序了。
⑽ 匯編程序是怎麼編譯的
匯編語言是一種低級語言,匯編語言是匯編指令集、偽指令集和使用它們規則的統稱,使用具有一定含義的符號為助憶符,用指令助憶符、符號地址等組成的符號指令稱為匯編格式指令。
過程:
編輯:用編輯軟體(EDIT.EXE或記事本)形成源程序(.ASM)
匯編:用匯編程序(MASM.EXE)對源程序進行匯編,形成目標文件(.OBJ),格式如下:MASM LX.ASM;
連接:用連接程序(LINK.EXE)對目標程序進行連接,形成可執行文件(.EXE),格式如下:LINK LX.OBJ;
執行:如果結果在屏幕在顯示,則直接執行可執行文件。
調試:用調試程序(LINK.EXE)對可執行文件進行調試,格式如下:DEBUG LX.EXE
匯編語言中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址碼。匯編程序(如MASM)的原理實際上就是把匯編的代碼轉成電腦可以識別的二進制碼