匯編編譯工具MASM的使用_第1頁
匯編編譯工具MASM的使用_第2頁
匯編編譯工具MASM的使用_第3頁
匯編編譯工具MASM的使用_第4頁
匯編編譯工具MASM的使用_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實驗二 匯編編譯工具MASM的使用2.1. 實驗?zāi)康膶W習如何安裝MASM;學習如何使用和使用編譯和鏈接匯編語言程序。2.2. 根底知識1、常用匯編語言工具軟件名稱運行平臺軟件說明下載地址Masm V6.11DOS微軟匯編工具 HYPERLINK Masm32Windows 98/2000/XP微軟Win32匯編工具 HYPERLINK :/ vckbase /tools/dev/masm32v6.zip Windows 98/2000/XP微軟Win32匯編工具 HYPERLINK :/ lwp.ca/masm32/masm32v8.zip HYPERLINK :/61.133.63.176/

2、ddcrack/assembler/tools/masm32v8.zip DOSBorland匯編工具 HYPERLINK :/mincer.myetang /home/tools/tasm5.zip HYPERLINK :/61.133.63.176/ddcrack/assembler/tools/tasm50.zip 2、DOS匯編與WIN32匯編在DOS下編寫匯編程序,程序員可以管理系統(tǒng)的所有資源,訪問和改動系統(tǒng)中所有的內(nèi)存,修改內(nèi)存控制塊,修改中斷向量表截獲中斷,直接對I/O端口進行讀寫。DOS是個單任務(wù)操作系統(tǒng),只有一個運行級別,任何進程和DOS操作系統(tǒng)都是同等級別的。因此,DOS系

3、統(tǒng)中各個進程會互相影響,如果某個進程死機的話,整個系統(tǒng)都會垮掉。DOS工作在實模式下,程序員可以尋址1M的內(nèi)存,通過段存放器來指定段的初始地址,每個段的大小為64K。超過1M的局部,就只能把他作為XMS使用。1M以上的內(nèi)存空間只能用作數(shù)據(jù)存放而無法在其中執(zhí)行程序。Win32是指32位的Windows操作系統(tǒng),進程有多種運行級別,操作系統(tǒng)工作在最高級別0級,而應(yīng)用程序工作在3級。在第三級別,進程無法直接訪問I/O端口,無法訪問其它進程運行的內(nèi)存,連向自己的運行代碼寫入數(shù)據(jù)都是非法的。只有對于最高級別的進程,系統(tǒng)才是全開放的。Windows工作在保護模式下,所有的資源對進程來說都是被“保護的。在內(nèi)

4、存方面,Windows使用了處理器的分頁機制,程序員不必用一個段存放器去指定段的地址,因為在保護模式下,段存放器的含義是不同的參見80386手冊方面的書籍。程序員可以直接指定一個32位的地址來尋址4GB的內(nèi)存。在程序結(jié)構(gòu)方面,Windows程序也有很大的不同,它是“基于消息的。在上面列舉的匯編工具中,一些是DOS匯編工具,一些是Win32匯編工具。初學者可以從DOS匯編入手,先掌握匯編編程的思路、根本語法和編程技巧,待入門后再學習Win32匯編。當然,學習DOS匯編并不一定需要安裝和使用DOS操作系統(tǒng)。程序員可以在Win32環(huán)境中安裝或其它16位匯編工具,在命令提示符狀態(tài)下編譯和鏈接DOS匯編

5、程序。DOS匯編程序在Win32環(huán)境中運行時,操作系統(tǒng)會模擬實模式運行16位進程。對于一些可能會影響整個操作系統(tǒng)工作的指令,Win32操作系統(tǒng)會拒絕執(zhí)行。2.3. MASM的安裝首先從Internet下載,這是一個ZIP壓縮文件??梢杂肳INZIP或WINRAR等壓縮解壓軟件指定一個目錄將其解壓,目錄名例如為F:MASM60。運行“命令提示符,在解壓目錄中運行setup程序,開始安裝MASM。在主菜單界面選擇“Install the Microsoft Macro Assembler繼續(xù)。在系統(tǒng)設(shè)置界面選擇“DOS/Windows & NT操作系統(tǒng)繼續(xù)。選擇安裝Windows有關(guān)文件,繼續(xù)。選

6、擇安裝PWDProgrammers WorkBench,繼續(xù)。無須安裝“Brief compatibility常見編輯器兼容,繼續(xù)。選擇復(fù)制微軟鼠標驅(qū)動器“Microsoft Mouse Driver,繼續(xù)。選擇安裝MASM工具,繼續(xù)。選擇安裝幫助文件,繼續(xù)。選擇安裝例程sample program,繼續(xù)。選擇系統(tǒng)的安裝目錄,例如將系統(tǒng)安裝在E盤。接下來是詢問各局部程序的安裝目錄,一般情況下由系統(tǒng)自行決定即可。參數(shù)設(shè)置完畢后最后檢查一次。檢查如果無需改動,那么選擇“NO CHANGES開始安裝。安裝完畢后系統(tǒng)會提示與版本有一些區(qū)別,具體的內(nèi)容可以觀看安裝菜單中的“Special Note fo

7、r MASM v5.1 users,或者編程指南中的附錄A。設(shè)置MASM的DOS操作系統(tǒng)環(huán)境參數(shù)需要修改和兩個文件,MASM提供了和兩個文件作為參考。如果MASM安裝在Windows 98/NT/2000/XP操作系統(tǒng)環(huán)境下,需要參考文件的內(nèi)容進行設(shè)置,設(shè)置方式稍后介紹。接下來是操作系統(tǒng)環(huán)境下的設(shè)置要求。如果安裝在操作系統(tǒng)中,需要參考文件修改系統(tǒng)環(huán)境配置文件。如果安裝在32位Windows中,無須理會的內(nèi)容。然后是關(guān)于PWDProgrammers WorkBench的設(shè)置,安裝系統(tǒng)會提供一個參考文件。最后是有關(guān)內(nèi)存方面的設(shè)置。當MASM工作在非DOS環(huán)境下時,不需要理會這些方面的內(nèi)容。在安裝結(jié)

8、束前最好看一看“Special Note for CodeView users、“Special Note for MASM v5.1 users、“和“的內(nèi)容。最后再退出安裝。2.3. WIN32操作系統(tǒng)中MASM的環(huán)境參數(shù)設(shè)置安裝完MASM后,需要設(shè)置一下MASM的環(huán)境參數(shù)。步驟如下:在桌面“我的電腦上點擊鼠標右鍵,在彈出式菜單上選擇“屬性項,在“系統(tǒng)屬性窗口里翻開“高級頁。點擊“環(huán)境變量按鈕。在“環(huán)境變量窗口的系統(tǒng)變量列表中選擇“PATH項,再點擊系統(tǒng)變量列表下的“編輯按鈕。在“編輯環(huán)境變量窗口的“變量值欄里追加MASM的BIN、BINB、INCLUDE目錄的路徑參數(shù)。例如:當MASM安

9、裝在E:MASM611目錄,那么在“變量值欄里追加“; E:MASM611BINR; E:MASM611BIN。除此之外,還需要增加以下環(huán)境變量:LIB=E:MASM611LIBINCLUDE=E:MASM611INCLUDEINIT=E:MASM611INITHELPFILES=E:MASM611HELP*.HLPASMEX=E:MASM611SAMPLES說明:環(huán)境參數(shù)改變后需要重新啟動計算機才能生效。有些機房在計算機中使用了磁盤保護卡,一旦重新啟動所有安裝的文件和設(shè)置的參數(shù)都將消失。在這種情況下,可以在DOS命令行模式中輸入一些臨時命令設(shè)置MASM的環(huán)境參數(shù)。假設(shè)MASM安裝在E:MAS

10、M611目錄SET PATH=E:MASM611BINR;E:MASM611BIN;%PATH%SET LIB=E:MASM611LIBSET INCLUDE=E:MASM611INCLUDESET INIT=E:MASM611INITSET HELPFILES=E:MASM611HELP*.HLPSET ASMEX=E:MASM611SAMPLES2用于將匯編源程序匯編成目標文件。當MASM匯編環(huán)境參數(shù)配置好之后,在“命令提示符窗口中鍵入“MASM /H指令,將顯示出MASM的使用介紹。MASM的命令格式如下:MASM option. source(.asm),out(.obj),list(

11、.lst),cref(.crf);可選局部是MASM的各種匯編參數(shù)。source(.asm)指定匯編源文件的名稱,缺省的擴展名是ASM。out(.obj)指定輸出的目標代碼文件。缺省的文件名與匯編源文件相同,擴展名改為OBJ。list(.lst)指定輸出的列表文件,缺省的擴展名是LST。缺省情況下MASM不生成列表文件。cref(.crf)指定輸出的交叉參考文件,缺省的擴展名是CRF。缺省情況下MASM不生成交叉參考文件,交叉參考文件的后綴為SBR。最后的分號表示其后的工程按缺省情況處理。以下就各個匯編參數(shù)逐個加以說明。參數(shù)名作用/C生成交叉參考文件/D=定義一個符號sym并對其賦值val/E

12、模擬浮點運算指令和IEEE格式/H顯示MASM的使用幫助/HELP顯示MASM的使用幫助/I尋找引入文件INC的目錄/L生成列表文件/La生成全部列表文件/ML區(qū)分所有標識符號的大小寫/MU將全局標識符號轉(zhuǎn)換為大寫/MX區(qū)分全局標識符號的大小寫/N隱藏列表文件中的符號表/T隱藏成功匯編時的顯示消息/W0/1/2設(shè)置告警等級0:無;1:嚴重;2:勸告/X列舉錯誤條件/Zi生成CodeView的行號信息/Zd生成CodeView的標識符號信息下面用一個匯編程序說明的使用方法。匯編程序名稱為,內(nèi)容如下:data1segmentmsgdbHello, world.,0dh,0ah,$data1ends

13、code1segmentassume cs:code1, ds:data1start:movax, data1movds, axmovdx, offset msgmovah, 9int21hmovax, 4c00hint21hcode1 endsend start輸入“masm hello;指令,指令后的分號表示一切按缺省情況進行。運行后顯示以下內(nèi)容:Microsoft (R) MASM Compatibility DriverCopyright (C) Microsoft Corp 1993. All rights reserved.Copyright (C) Microsoft Corp

14、1981-1993. All rights reserved.執(zhí)行指令,用記事本觀看生成的的內(nèi)容。2用于將目標文件鏈接成可執(zhí)行文件。當環(huán)境參數(shù)配置好之后,在“命令提示符窗口中鍵入“LINK /?指令,將顯示出LINK的參數(shù)表。LINK的命令格式如下:LINK option. ,;可選局部是LINK的各種鏈接參數(shù)。objs指定目標文件的名稱,缺省的擴展名是OBJ??梢杂卸鄠€目標文件,目標文件之間用加號或者空格間隔。exefile指定輸出的可執(zhí)行文件的名稱。缺省的文件名與目標文件相同,缺省擴展名改為EXE。mapfile指定輸出的列表文件的名稱,缺省的擴展名是MAP。缺省情況下不生成列表文件。li

15、bs指定鏈接時使用的庫文件,缺省的擴展名是LIB??梢杂卸鄠€庫文件,庫文件之間用加號或者空格間隔。缺省情況下MASM不使用庫文件。最后的分號表示其后的工程按缺省情況處理。deffile指定輸出的定義文件的名稱,缺省的擴展名是DEF。缺省情況下不生成定義文件。最后的分號表示其后的工程按缺省情況處理。以下就各個鏈接參數(shù)逐個加以說明。參數(shù)名縮寫作用/ALIGNMENT:size/A:size根據(jù)指定的大小在分段執(zhí)行文件中排列段數(shù)據(jù),不可用于DOS程序/BATCH/B隱藏庫或目標文件找不到的提示/CODEVIEW/CO參加CodeView的標識符號及列號,該選項與/EXEPACK不兼容。/CPARMA

16、XALLOC:number/CP:number以16字節(jié)為單位設(shè)置程序最大分配空間/DOSSEG/DO用缺省順序排列段用于微軟高級語言/DSALLOCATE/DS從數(shù)據(jù)段的尾部開始裝入全部數(shù)據(jù),用于鏈接成EXE文件/EXEPACK/E壓縮可執(zhí)行文件的大小,與/CO和/INCR不兼容/FARCALLTRANSLATION/F優(yōu)化遠程調(diào)用,當使用/TINY時自動使用/FARCALL。當鏈接WINDOWS程序時不建議同時使用 /FARCALL和/FARCALLTRANSLATION/HELP/HE顯示簡要幫助信息/HIGH/HI執(zhí)行時盡可能地裝入高端內(nèi)存區(qū),和/DEALLOC并用。用于微軟高級語言/

17、INCREMENTAL/INC準備參加ILINK鏈接,與/EXEPACK和/TINY不兼容。/INFORMATION/INF顯示鏈接過程的信息/LINENUMBERS/LI將源文件行號和相關(guān)地址參加MAP文件,目標文件必須帶行號匯編。/MAP/M將公共標識符加到MAP文件/NODEFAULTLIBRARYSEARCH:library/NOD:library忽略指定的缺省庫/NOEXTDICTIONARY/NOE阻止LINK尋找?guī)熘械臄U展字典,當重定義標識符導(dǎo)致錯誤L2044時使用/NOE/NOFARCALLTRANSLATION/NOF禁止遠程調(diào)用/NOIGNORECASE/NOI區(qū)別大小寫字

18、母/NOLOGO/NOL隱藏版權(quán)信息/NONULLSDOSSEG/NON類似于/DOSSEG參數(shù),但是在_TEXT段前不加額外的字節(jié)/NOPACKCODE/NOP對代碼段不壓縮/PACKCODE:number/PACKC:number將相鄰的代碼段合并壓縮,指定的字節(jié)數(shù)用于設(shè)定物理段的最大值 。/PACKDATA:number/PACKD:number將相鄰的數(shù)據(jù)段合并壓縮,指定的字節(jié)數(shù)用于設(shè)定物理段的最大值 。僅用于windows/PAUSE/PAU鏈接過程中暫停以更換磁盤/PMTYPE:type/PM:type指定基于Windows的應(yīng)用程序的類型。類型為PM表示是Windows API;

19、類型為VIO表示是Windows Compat;類型為NOVIO表示不是Windows Compat;/QUICKLIBRARY/Q建立Quick Basic程序庫/SEGMENTS:number/SE:number設(shè)置鏈接時的段總數(shù),缺省值為127/STACK:number/ST:number設(shè)置棧段的最大字節(jié)數(shù),不超過64K/TINY/T生成小模式的COM文件,與/INCR不兼容/?/?顯示簡要幫助信息下面將剛剛用匯編出來的目標程序進行鏈接。目標程序名稱為。輸入“l(fā)ink hello;指令,指令后的分號表示一切按缺省情況進行。運行后顯示以下內(nèi)容:Microsoft (R) Segmente

20、d Executable Linker Version 5.31.009 Jul 13 1992Copyright (C) Microsoft Corp 1984-1992. All rights reserved.LINK : warning L4021: no stack segment鏈接警告沒有定義棧段,這不影響程序的運行。接下來可以運行,看看顯示結(jié)果是不是“Hello, world.。2的功能相當于和的總和,可以將匯編語言源程序匯編和鏈接后直接生成可執(zhí)行文件。當環(huán)境參數(shù)配置好之后,在“命令提示符窗口中鍵入“ML /?指令,將顯示出ML的參數(shù)表。ML的命令格式如下:ML /option

21、s filelist /link linkoptions 可選局部是ML的各種鏈接參數(shù),/link linkoptions里設(shè)定的是鏈接參數(shù),這些參數(shù)可以參照2.5 LINK的有關(guān)參數(shù)。filelist指定匯編源文件的名稱,缺省的擴展名是ASM??梢杂卸鄠€匯編源文件,文件之間用空格間隔。以下就各個鏈接參數(shù)逐個加以說明。參數(shù)名作用/AT Enable tiny model ( file)允許小模式生成COM文件/Bl Use alternate linker使用linker參數(shù)里指定的鏈接器/c Assemble without linking僅僅匯編不鏈接/Cp Preserve case o

22、f user identifiers區(qū)分用戶標識符的大小寫/Cu Map all identifiers to upper case將所有標識符映象為大寫/Cx Preserve case in publics, externs區(qū)分公共標識符和外部標識符的大小寫/D=text Define text macro用給定的名字定義文字宏/EP Output preprocessed listing to stdout生成預(yù)處理列表并輸出至屏幕/F Set stack size (bytes)設(shè)置堆棧大小/Fbfile Generate bound executable生成限制性的可執(zhí)行文件/Fe

23、Name executable設(shè)置可執(zhí)行文件的名稱/Flfile Generate listing生成匯編代碼列表文件/Fmfile Generate map生成鏈接映象文件/Fo Name object file設(shè)置目標文件的名稱/FPi Generate 80 x87 emulator encoding生成80 x87模擬代碼/Frfile Generate limited browser info生成源瀏覽文件SBR/FRfile Generate full browser info生成擴展源瀏覽文件SBR/G Generate Pascal or C calls指定匯編生成的調(diào)用格式。

24、C:pascal類型D:C類型/H Set max external name length設(shè)置擴展名的最大長度/I Add include path添加include文件的目錄/link 鏈接選項和庫/nologo Suppress copyright message取消版權(quán)信息/Sa Maximize source listing列表文件最大化/Sf Generate first pass listing生成第一遍的匯編代碼列表/Sl Set line width設(shè)置列表文件行寬/Sn Suppress symbol-table listing隱藏列表文件中的符號表/Sp Set page

25、 length設(shè)置列表文件的頁長度/Ss Set subtitle設(shè)置列表文件的子標題/St Set title設(shè)置列表文件的標題/Sx List false conditionals列表文件中列舉錯誤條件/Ta Assemble non-.ASM file匯編非ASM后綴的文件/VM Enable virtual memory啟動虛擬存儲器/w Same as /W0 /WX設(shè)置告警級別為0/WX Treat warnings as errors傳回告警的錯誤碼/W Set warning level設(shè)置告警級別1、2、3/X Ignore INCLUDE environment path忽

26、略INCLUDE環(huán)境路徑/Zd Add line number debug info在目標文件中產(chǎn)生CodeView列號/Zf Make all symbols public在目標文件中產(chǎn)生CodeView所有公共標識符/Zi Add symbolic debug info在目標文件中產(chǎn)生CodeView標識符/Zm Enable MASM 5.10 compatibility/Zpn Set structure alignment排列結(jié)構(gòu)數(shù)據(jù)的起始地址為n1、2、4的倍數(shù)/Zs Perform syntax check only只檢查語法不產(chǎn)生目標文件下面使用對ASM文件進行匯編和鏈接。匯編

27、文件的名稱為。執(zhí)行“ML hello.asm指令,如無錯誤的話將生成可執(zhí)行文件。Copyright (C) Microsoft Corp 1981-1991. All rights reserved.Copyright (C) Microsoft Corp 1984-1991. All rights reserved.Run File temp.exe: hello.exeList File NUL.MAP: NULLibraries .LIB:Definitions File NUL.DEF: ;LINK : warning L4021: no stack segment運行,看看顯示結(jié)果是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論