![MASM的使用安裝方法_第1頁](http://file4.renrendoc.com/view/4dcd530cbe71be05505a6517400954a0/4dcd530cbe71be05505a6517400954a01.gif)
![MASM的使用安裝方法_第2頁](http://file4.renrendoc.com/view/4dcd530cbe71be05505a6517400954a0/4dcd530cbe71be05505a6517400954a02.gif)
![MASM的使用安裝方法_第3頁](http://file4.renrendoc.com/view/4dcd530cbe71be05505a6517400954a0/4dcd530cbe71be05505a6517400954a03.gif)
![MASM的使用安裝方法_第4頁](http://file4.renrendoc.com/view/4dcd530cbe71be05505a6517400954a0/4dcd530cbe71be05505a6517400954a04.gif)
![MASM的使用安裝方法_第5頁](http://file4.renrendoc.com/view/4dcd530cbe71be05505a6517400954a0/4dcd530cbe71be05505a6517400954a05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
/匯編編譯工具MASM的使用2.1.實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)如何安裝MASM;學(xué)習(xí)如何使用和使用編譯和鏈接匯編語言程序.2。2.基礎(chǔ)知識(shí)1、常用匯編語言工具軟件名稱運(yùn)行平臺(tái)軟件說明下載地址MasmV6.11DOS微軟匯編工具Masm32V6.0Windows98/2000/XP微軟Win32匯編工具M(jìn)asm32V8.0Windows98/2000/XP微軟Win32匯編工具TasmV5。0DOSBorland匯編工具2、DOS匯編與WIN32匯編在DOS下編寫匯編程序,程序員可以管理系統(tǒng)的所有資源,訪問和改動(dòng)系統(tǒng)中所有的內(nèi)存,修改內(nèi)存控制塊,修改中斷向量表截獲中斷,直接對(duì)I/O端口進(jìn)行讀寫。DOS是個(gè)單任務(wù)操作系統(tǒng),只有一個(gè)運(yùn)行級(jí)別,任何進(jìn)程和DOS操作系統(tǒng)都是同等級(jí)別的。因此,DOS系統(tǒng)中各個(gè)進(jìn)程會(huì)互相影響,如果某個(gè)進(jìn)程死機(jī)的話,整個(gè)系統(tǒng)都會(huì)垮掉.DOS工作在實(shí)模式下,程序員可以尋址1M的內(nèi)存,通過段寄存器來指定段的初始地址,每個(gè)段的大小為64K.超過1M的部分,就只能把他作為XMS使用。1M以上的內(nèi)存空間只能用作數(shù)據(jù)存放而無法在其中執(zhí)行程序。Win32是指32位的Windows操作系統(tǒng),進(jìn)程有多種運(yùn)行級(jí)別,操作系統(tǒng)工作在最高級(jí)別-—0級(jí),而應(yīng)用程序工作在3級(jí)。在第三級(jí)別,進(jìn)程無法直接訪問I/O端口,無法訪問其它進(jìn)程運(yùn)行的內(nèi)存,連向自己的運(yùn)行代碼寫入數(shù)據(jù)都是非法的。只有對(duì)于最高級(jí)別的進(jìn)程,系統(tǒng)才是全開放的。Windows工作在保護(hù)模式下,所有的資源對(duì)進(jìn)程來說都是被“保護(hù)”的.在內(nèi)存方面,Windows使用了處理器的分頁機(jī)制,程序員不必用一個(gè)段寄存器去指定段的地址,因?yàn)樵诒Wo(hù)模式下,段寄存器的含義是不同的(參見80386手冊(cè)方面的書籍)。程序員可以直接指定一個(gè)32位的地址來尋址4GB的內(nèi)存。在程序結(jié)構(gòu)方面,Windows程序也有很大的不同,它是“基于消息"的.在上面列舉的匯編工具中,一些是DOS匯編工具,一些是Win32匯編工具。初學(xué)者可以從DOS匯編入手,先掌握匯編編程的思路、基本語法和編程技巧,待入門后再學(xué)習(xí)Win32匯編。當(dāng)然,學(xué)習(xí)DOS匯編并不一定需要安裝和使用DOS操作系統(tǒng)。程序員可以在Win32環(huán)境中安裝MASM6.0或其它16位匯編工具,在命令提示符狀態(tài)下編譯和鏈接DOS匯編程序。DOS匯編程序在Win32環(huán)境中運(yùn)行時(shí),操作系統(tǒng)會(huì)模擬實(shí)模式運(yùn)行16位進(jìn)程。對(duì)于一些可能會(huì)影響整個(gè)操作系統(tǒng)工作的指令,Win32操作系統(tǒng)會(huì)拒絕執(zhí)行。2.3.MASM的安裝首先從Internet下載masm60.zip,這是一個(gè)ZIP壓縮文件??梢杂肳INZIP或WINRAR等壓縮解壓軟件指定一個(gè)目錄將其解壓,目錄名例如為F:\MASM60.運(yùn)行“命令提示符”,在解壓目錄中運(yùn)行setup程序,開始安裝MASM.在主菜單界面選擇“InstalltheMicrosoftMacroAssembler”繼續(xù)。在系統(tǒng)設(shè)置界面選擇“DOS/Windows&NT”操作系統(tǒng)繼續(xù).選擇安裝Windows有關(guān)文選擇安裝PWD(Programmer'sWorkBench),繼續(xù)。無須安裝“Briefcompatibility"(常見編輯器兼容),繼續(xù)。選擇復(fù)制微軟鼠標(biāo)驅(qū)動(dòng)器“MicrosoftMouseDriver”,繼續(xù)。選擇安裝MASM工具,繼續(xù)。選擇安裝幫助文件,繼續(xù)。選擇安裝例程(sampleprogram),繼續(xù)。選擇系統(tǒng)的安裝目錄,例如將系統(tǒng)安裝在E盤。接下來是詢問各部分程序的安裝目錄,一般情況下由系統(tǒng)自行決定即可。參數(shù)設(shè)置完畢后最后檢查一次。檢查如果無需改動(dòng),則選擇“NOCHANGES"開始安裝。安裝完畢后系統(tǒng)會(huì)提示MASM6。11與5.1版本有一些區(qū)別,具體的內(nèi)容可以觀看安裝菜單中的“SpecialNoteforMASMv5.1users”,或者編程指南中的附錄A。設(shè)置MASM的DOS操作系統(tǒng)環(huán)境參數(shù)需要修改autoexec.bat和config.sys兩個(gè)文件,MASM提供了NEW-VARS。BAT和NEW—CONF。SYS兩個(gè)文件作為參考。如果MASM安裝在Windows98/NT/2000/XP操作系統(tǒng)環(huán)境下,需要參考文件NEW-VARS.BAT的內(nèi)容進(jìn)行設(shè)置,設(shè)置方式稍后介紹。接下來是Windows3.x操作系統(tǒng)環(huán)境下的設(shè)置要求。如果MASM6.11安裝在Windows3。0/3.1/3。11/3.2操作系統(tǒng)中,需要參考文件NEW—SYS。INI修改系統(tǒng)環(huán)境配置文件SYSTEM.INI.如果MASM6.11安裝在32位Windows中,無須理會(huì)NEW-SYS.INI的內(nèi)容。然后是關(guān)于PWD(Programmer’sWorkBench)的設(shè)置,安裝系統(tǒng)會(huì)提供一個(gè)參考文件TOOL.PRE.最后是有關(guān)內(nèi)存方面的設(shè)置。當(dāng)MASM工作在非DOS環(huán)境下時(shí),不需要理會(huì)這些方面的內(nèi)容。在安裝結(jié)束前最好看一看“SpecialNoteforCodeViewusers"、“SpecialNoteforMASMv5。1users”、“README.TXT"和“PACKING。TXT"的內(nèi)容。最后再退出安裝.2.3。WIN32操作系統(tǒng)中MASM的環(huán)境參數(shù)設(shè)置安裝完MASM后,需要設(shè)置一下MASM的環(huán)境參數(shù).步驟如下:在桌面“我的電腦”上點(diǎn)擊鼠標(biāo)右鍵,在彈出式菜單上選擇“屬性”項(xiàng),在“系統(tǒng)屬性"窗口里打開“高級(jí)”頁。點(diǎn)擊“環(huán)境變量”按鈕。在“環(huán)境變量窗口”的系統(tǒng)變量列表中選擇“PATH”項(xiàng),再點(diǎn)擊系統(tǒng)變量列表下的“編輯”按鈕。在“編輯環(huán)境變量窗口”的“變量值”欄里追加MASM的BIN、BINB、INCLUDE目錄的路徑參數(shù)。例如:當(dāng)MASM安裝在E:\MASM611目錄,則在“變量值”欄里追加“;E:\MASM611\BINR;E:\MASM611\BIN”.除此之外,還需要增加以下環(huán)境變量:LIB=c:MASM611\LIBINCLUDE=c:MASM611\INCLUDEINIT=c:MASM611\INITHELP\(zhòng)HELP\*。HLPASMEX=c:\ASM611\SAMPLES說明:環(huán)境參數(shù)改變后需要重新啟動(dòng)計(jì)算機(jī)才能生效。有些機(jī)房在計(jì)算機(jī)中使用了磁盤保護(hù)卡,一旦重新啟動(dòng)所有安裝的文件和設(shè)置的參數(shù)都將消失。在這種情況下,可以在DOS命令行模式中輸入一些臨時(shí)命令設(shè)置MASM的環(huán)境參數(shù)。(假設(shè)MASM安裝在E:\MASM611目錄)SETPATH=E:\MASM611\BINR;E:\MASM611\BIN;%PATH%SETLIB=E:\MASM611\LIBSETINCLUDE=E:\MASM611\INCLUDESETINIT=E:\MASM611\INITSETHELP:\MASM611\HELP\*。HLPSETASMEX=E:\MASM611\SAMPLES2。4。MASM.EXE的使用MASM。EXE用于將匯編源程序匯編成目標(biāo)文件。當(dāng)MASM匯編環(huán)境參數(shù)配置好之后,在“命令提示符”窗口中鍵入“MASM/H”指令,將顯示出MASM的使用介紹。MASM的命令格式如下:MASM[option。。。]source(.asm),[out(。obj)],[list(.lst)],[cref(。crf)][;]可選部分是MASM的各種匯編參數(shù)。source(.asm)指定匯編源文件的名稱,缺省的擴(kuò)展名是ASM。out(。obj)指定輸出的目標(biāo)代碼文件。缺省的文件名與匯編源文件相同,擴(kuò)展名改為OBJ.list(。lst)指定輸出的列表文件,缺省的擴(kuò)展名是LST。缺省情況下MASM不生成列表文件.cref(.crf)指定輸出的交叉參考文件,缺省的擴(kuò)展名是CRF。缺省情況下MASM不生成交叉參考文件,交叉參考文件的后綴為SBR.最后的分號(hào)表示其后的項(xiàng)目按缺省情況處理。以下就各個(gè)匯編參數(shù)逐個(gè)加以說明.參數(shù)名作用/C生成交叉參考文件/D〈sym〉[=〈val〉]定義一個(gè)符號(hào)sym并對(duì)其賦值val/E模擬浮點(diǎn)運(yùn)算指令和IEEE格式/H顯示MASM的使用幫助/HELP顯示MASM的使用幫助/I<path>尋找引入文件(INC)的目錄/L生成列表文件/La生成全部列表文件/ML區(qū)分所有標(biāo)識(shí)符號(hào)的大小寫/MU將全局標(biāo)識(shí)符號(hào)轉(zhuǎn)換為大寫/MX區(qū)分全局標(biāo)識(shí)符號(hào)的大小寫/N隱藏列表文件中的符號(hào)表/T隱藏成功匯編時(shí)的顯示消息/W[0/1/2]設(shè)置告警等級(jí)(0:無;1:嚴(yán)重;2:勸告)/X列舉錯(cuò)誤條件/Zi生成CodeView的行號(hào)信息/Zd生成CodeView的標(biāo)識(shí)符號(hào)信息下面用一個(gè)匯編程序說明MASM.EXE的使用方法.匯編程序名稱為HELLO。ASM,內(nèi)容如下:data1 segment??msg db?"Hello,world.",0dh,0ah,”$"dat(yī)a1 endscode1 segment assumecs:code1,ds:data1start: mov?ax,data1? mov?ds,ax?mov dx,offsetmsg mov ah,9?int 21h mov?ax,4c00h?int 21hcode1ends endstart輸入“masmhello;”指令,指令后的分號(hào)表示一切按缺省情況進(jìn)行.運(yùn)行后顯示以下內(nèi)容:Microsoft(R)MASMCompatibilityDriverCopyright(C)MicrosoftCorp1993。Allrightsreserved.Invoking:ML。EXE/I。/Zm/chello.a(chǎn)smMicrosoft(R)MacroAssemblerVersion6.11Copyright(C)MicrosoftCorp1981-1993。Allrightsreserved。Assembling:hello。asm執(zhí)行MASM/LA/ZI/ZDHELLO.ASM指令,用記事本觀看生成的HELLO.LST的內(nèi)容。2。5。LINK.EXE的使用LINK.EXE用于將目標(biāo)文件鏈接成可執(zhí)行文件.當(dāng)環(huán)境參數(shù)配置好之后,在“命令提示符"窗口中鍵入“LINK/?"指令,將顯示出LINK的參數(shù)表。LINK的命令格式如下:LINK[option...]<o(jì)bjs>,<exefile〉,<mapfile>,<libs〉,<deffile〉[;]可選部分是LINK的各種鏈接參數(shù).objs指定目標(biāo)文件的名稱,缺省的擴(kuò)展名是OBJ??梢杂卸鄠€(gè)目標(biāo)文件,目標(biāo)文件之間用加號(hào)或者空格間隔。exefile指定輸出的可執(zhí)行文件的名稱。缺省的文件名與目標(biāo)文件相同,缺省擴(kuò)展名改為EXE.mapfile指定輸出的列表文件的名稱,缺省的擴(kuò)展名是MAP.缺省情況下不生成列表文件。libs指定鏈接時(shí)使用的庫文件,缺省的擴(kuò)展名是LIB.可以有多個(gè)庫文件,庫文件之間用加號(hào)或者空格間隔。缺省情況下MASM不使用庫文件。最后的分號(hào)表示其后的項(xiàng)目按缺省情況處理。deffile指定輸出的定義文件的名稱,缺省的擴(kuò)展名是DEF。缺省情況下不生成定義文件。最后的分號(hào)表示其后的項(xiàng)目按缺省情況處理。以下就各個(gè)鏈接參數(shù)逐個(gè)加以說明。參數(shù)名縮寫作用/ALIGNMENT:size/A:size根據(jù)指定的大小在分段執(zhí)行文件中排列段數(shù)據(jù),不可用于DOS程序/BATCH/B隱藏庫或目標(biāo)文件找不到的提示/CODEVIEW/CO加入CodeView的標(biāo)識(shí)符號(hào)及列號(hào),該選項(xiàng)與/EXEPACK不兼容。/CPARMAXALLOC:number/CP:number以16字節(jié)為單位設(shè)置程序最大分配空間/DOSSEG/DO用缺省順序排列段(用于微軟高級(jí)語言)/DSALLOCATE/DS從數(shù)據(jù)段的尾部開始裝入全部數(shù)據(jù),用于鏈接成EXE文件/EXEPACK/E壓縮可執(zhí)行文件的大小,與/CO和/INCR不兼容/FARCALLTRANSLATION/F優(yōu)化遠(yuǎn)程調(diào)用,當(dāng)使用/TINY時(shí)自動(dòng)使用/FARCALL.當(dāng)鏈接WINDOWS程序時(shí)不建議同時(shí)使用/FARCALL和/FARCALLTRANSLATION/HELP/HE顯示簡要幫助信息/HIGH/HI執(zhí)行時(shí)盡可能地裝入高端內(nèi)存區(qū),和/DEALLOC并用.(用于微軟高級(jí)語言)/INCREMENTAL/INC準(zhǔn)備加入ILINK鏈接,與/EXEPACK和/TINY不兼容。/INFORMATION/INF顯示鏈接過程的信息/LINENUMBERS/LI將源文件行號(hào)和相關(guān)地址加入MAP文件,目標(biāo)文件必須帶行號(hào)匯編。/MAP/M將公共標(biāo)識(shí)符加到MAP文件/NODEFAULTLIBRARYSEARCH[:library]/NOD[:library]忽略指定的缺省庫/NOEXTDICTIONARY/NOE阻止LINK尋找?guī)熘械臄U(kuò)展字典,當(dāng)重定義標(biāo)識(shí)符導(dǎo)致錯(cuò)誤L2044時(shí)使用/NOE/NOFARCALLTRANSLATION/NOF禁止遠(yuǎn)程調(diào)用/NOIGNORECASE/NOI區(qū)別大小寫字母/NOLOGO/NOL隱藏版權(quán)信息/NONULLSDOSSEG/NON類似于/DOSSEG參數(shù),但是在_TEXT段前不加額外的字節(jié)/NOPACKCODE/NOP對(duì)代碼段不壓縮/PACKCODE:number/PACKC:number?qū)⑾噜彽拇a段合并壓縮,指定的字節(jié)數(shù)用于設(shè)定物理段的最大值./PACKDATA:number/PACKD:number?qū)⑾噜彽臄?shù)據(jù)段合并壓縮,指定的字節(jié)數(shù)用于設(shè)定物理段的最大值。僅用于windows/PAUSE/PAU鏈接過程中暫停以更換磁盤/PMTYPE:type/PM:type指定基于Windows的應(yīng)用程序的類型.類型為PM表示是WindowsAPI;類型為VIO表示是WindowsCompat;類型為NOVIO表示不是WindowsCompat(yī);/QUICKLIBRARY/Q建立QuickBasic程序庫/SEGMENTS:number/SE:number設(shè)置鏈接時(shí)的段總數(shù),缺省值為127/STACK:number/ST:number設(shè)置棧段的最大字節(jié)數(shù),不超過64K/TINY/T生成小模式的COM文件,與/INCR不兼容/?/?顯示簡要幫助信息下面將剛才用MASM.EXE匯編出來的目標(biāo)程序進(jìn)行鏈接。目標(biāo)程序名稱為HELLO。OBJ。輸入“linkhello;”指令,指令后的分號(hào)表示一切按缺省情況進(jìn)行。運(yùn)行后顯示以下內(nèi)容:Microsoft(R)SegmentedExecutableLinkerVersion5.31.009Jul131992Copyright(C)MicrosoftCorp1984—1992。Allrightsreserved.LINK:warningL4021:nostacksegment鏈接警告沒有定義棧段,這不影響程序的運(yùn)行。接下來可以運(yùn)行HELLO.EXE,看看顯示結(jié)果是不是“Hello,world。”。2。6.ML。EXE的使用ML。EXE的功能相當(dāng)于MASM。EXE和LINK.EXE的總和,可以將匯編語言源程序匯編和鏈接后直接生成可執(zhí)行文件。當(dāng)環(huán)境參數(shù)配置好之后,在“命令提示符”窗口中鍵入“ML/?"指令,將顯示出ML的參數(shù)表。ML的命令格式如下:ML[/options][/linklinkoptions]可選部分是ML的各種鏈接參數(shù),/linklinkoptions里設(shè)定的是鏈接參數(shù),這些參數(shù)可以參照2。5LINK的有關(guān)參數(shù)。指定匯編源文件的名稱,缺省的擴(kuò)展名是ASM.可以有多個(gè)匯編源文件,文件之間用空格間隔。以下就各個(gè)鏈接參數(shù)逐個(gè)加以說明。參數(shù)名作用/ATEnabletinymodel(。COMfile)允許小模式(生成COM文件)/Bl<linker〉Usealternatelinker使用linker參數(shù)里指定的鏈接器/cAssemblewithoutlinking僅僅匯編不鏈接/CpPreservecaseofuseridentifiers區(qū)分用戶標(biāo)識(shí)符的大小寫/CuMapallidentifierstouppercase將所有標(biāo)識(shí)符映象為大寫/CxPreservecaseinpublics,externs區(qū)分公共標(biāo)識(shí)符和外部標(biāo)識(shí)符的大小寫/D<name>[=text]Definetextmacro用給定的名字定義文字宏/EPOutputpreprocessedlistingtostdout生成預(yù)處理列表并輸出至屏幕/F<hex>Setstacksize(bytes)設(shè)置堆棧大小/Fb[file]Generat(yī)eboundexecutable生成限制性的可執(zhí)行文件/Fe<file>Nameexecutable設(shè)置可執(zhí)行文件的名稱/Fl[file]Generat(yī)elisting生成匯編代碼列表文件/Fm[file]Generat(yī)emap生成鏈接映象文件/Fo〈file〉Nameobjectfile設(shè)置目標(biāo)文件的名稱/FPiGenerate80x87emulatorencoding生成80x87模擬代碼/Fr[file]Generatelimitedbrowserinfo生成源瀏覽文件(SBR)/FR[file]Generatefullbrowserinfo生成擴(kuò)展源瀏覽文件(SBR)/G<c|d>Generat(yī)ePascalorCcalls指定匯編生成的調(diào)用格式。C:pascal類型D:C類型/H〈number>Setmaxexternalnamelength設(shè)置擴(kuò)展名的最大長度/I<name〉Addincludepath添加include文件的目錄/link〈linkeroptionsandlibraries〉鏈接選項(xiàng)和庫/nologoSuppresscopyrightmessage取消版權(quán)信息/SaMaximizesourcelisting列表文件最大化/SfGeneratefirstpasslisting生成第一遍的匯編代碼列表/Sl<width>Setlinewidth設(shè)置列表文件行寬/SnSuppresssymbol-tablelisting隱藏列表文件中的符號(hào)表/Sp〈length〉Setpagelength設(shè)置列表文件的頁長度/Ss〈string〉Setsubtitle設(shè)置列表文件的子標(biāo)題/St<string>Settitle設(shè)置列表文件的標(biāo)題/SxListfalseconditionals列表文件中列舉錯(cuò)誤條件/Ta<file>Assemblenon-.ASMfile匯編非ASM后綴的文件/VMEnablevirtualmemory啟動(dòng)虛擬存儲(chǔ)器/wSameas/W0/WX設(shè)置告警級(jí)別為0/WXTreatwarningsaserrors傳回告警的錯(cuò)誤碼/W〈number>Setwarninglevel設(shè)置告警級(jí)別(1、2、3)/XIgnoreINCLUDEenvironmentpath忽略INCLUDE環(huán)境路徑/ZdAddlinenumberdebuginfo在目標(biāo)文件中產(chǎn)生CodeView列號(hào)/ZfMakeallsymbolspublic在目標(biāo)文件中產(chǎn)生CodeView所有公共標(biāo)識(shí)符/ZiAddsymbolicdebuginfo在目標(biāo)文件中產(chǎn)生CodeView標(biāo)識(shí)符/ZmEnableMASM5.10compatibility與MASM5。10兼容/Zp[n]Setstructurealignment排列結(jié)構(gòu)數(shù)據(jù)的起始地址為n(1、2、4)的倍數(shù)/ZsPerformsyntaxcheckonly只檢查語法不產(chǎn)生目標(biāo)文件下面使用ML.EXE對(duì)ASM文件進(jìn)行匯編和鏈接.匯編文件的名稱為HELLO.ASM。執(zhí)行“MLhello.a(chǎn)sm"指令,如無錯(cuò)誤的話將生成可執(zhí)行文件HELLO.EXE。Microsoft(R)MacroAssemblerVersion6。00Copyright(C)MicrosoftCorp1981—1991.Allrightsreserved.Assembling:hello.asmMicrosoft(R)Segmented-ExecutableLinkerVersion5.13Copyright(C)MicrosoftCorp1984—1991。Allrightsreserved.ObjectModules[。OBJ]:hello.objRunFile[temp。exe]:"hello.exe"ListFile[NUL。MAP]:NULLibraries[。LIB]:DefinitionsFile[NUL.DEF]:;LINK:warningL4021:nostacksegment運(yùn)行HELLO.EXE,看看顯示結(jié)果是不是“Hello,world.”.2。7.用DEBUG調(diào)試可執(zhí)行文件用MASM編譯了匯編語言源文件HELLO.ASM之后,用DEBUG調(diào)試可執(zhí)行程序HELLO。EXE。具體的做法是:在“命令提示符”窗口下執(zhí)行“DEBUG<文件所在路徑+文件名〉”指令.執(zhí)行“R”指令觀看段寄存器CS和DS的值,在EXE文件中兩值應(yīng)該不同。執(zhí)行“U”指令觀看CS:IP所指地址的反匯編代碼。程序剛開始時(shí)會(huì)設(shè)置DS段寄存器的值,將其指向DATA1數(shù)據(jù)段.用跟蹤指令“P”檢查這兩條指令的執(zhí)行結(jié)果。DS段寄存器的值被修改后,執(zhí)行指令“DDS:0”繼續(xù)用指令P進(jìn)行程序跟蹤,檢查各寄存器和標(biāo)志位的修改內(nèi)容以及程序的運(yùn)行情況.程序正常結(jié)束后,用“RIP”指令修改寄存器IP的值,將其設(shè)置為0。重復(fù)第4步到第6步的工作,改用指令T而不是指令P對(duì)程序進(jìn)行跟蹤,觀看跟蹤情況。2。8.用MASM和LINK生成COM可執(zhí)行文件對(duì)于有多個(gè)數(shù)據(jù)段、棧段的匯編語言程序,建議將其匯編和鏈接成EXE文件。如果程序的代碼和數(shù)據(jù)量比較小,可以將其匯編和鏈接成COM文件.EXE文件可以有多個(gè)段,每個(gè)段的最大空間為64KB,程序在執(zhí)行需要對(duì)多個(gè)段進(jìn)行管理,所以EXE文件的結(jié)構(gòu)有些復(fù)雜.而COM文件只有一個(gè)段,執(zhí)行代碼和數(shù)據(jù)都處于一個(gè)段中,因此,COM文件比EXE文件顯得更加短小精悍。COM文件其唯一的約束就是可執(zhí)行的程序的大小不允許超過64KB。編寫如下的匯編程序,文件名定為HELLO2。ASM,內(nèi)容如下:code1?segment?assumecs:code1,ds:code1start: jmp?nextmsg? db "Hello,world.",0dh,0ah,”$"next:?mov? ax,cs? mov??ds,ax?mov dx,offsetmsg ?add? dx,100h?mov ah,9??int??21h mov??ax,4c00h? int 21hcode1ends endstart執(zhí)行以下指令對(duì)源文件進(jìn)行匯編:MASMHELLO2.ASM.執(zhí)行以下指令將目標(biāo)文件鏈接成COM文件:LINK/TINYHELLO2;。命令執(zhí)行完畢后,將生成文件,執(zhí)行HELLO2觀看運(yùn)行結(jié)果。比較一下HELLO.EXE和的大小,用DEBUG調(diào)試可執(zhí)行程序,了解它的程序結(jié)構(gòu)。=================================================================================================MASM6。11的安裝HYPERLINK"”\l"m=0&t=1&c=fks_4733"\o”默認(rèn)分類”默認(rèn)分類2009-04-2217:52:54閱讀98評(píng)論0
字號(hào):大中小
訂閱一、安裝前的準(zhǔn)備工作
1.
安裝MASM6.11的操作系統(tǒng)要求為Windows98。2。
在D∶\盤或別的硬盤上建一個(gè)文件夾。今假設(shè)在D∶\盤上建立一個(gè)如下的文件夾:“D∶\xxxxxyyyyyy",其中“xxxxx”是班級(jí)名,“yyyyyy"是本人姓名。3。
從教師機(jī)上下載文件夾“MASM611SETUP"及其內(nèi)容,并放入文件夾“D∶\xxxxxyyyyyy”。4.
在文件夾“D∶\xxxxxyyyyyy”下建立一個(gè)如下的工作目錄:“D∶\xxxxxyyyyyy\mymasm”,以備將來在工作的時(shí)候存放MASM6.11匯編語言源文件、目標(biāo)文件、可執(zhí)行文件。
二、安裝過程
1。
打開MASM611SETUP文件夾,運(yùn)行“Setup”。2。
在出現(xiàn)“Microsoft
MASM6.11
Setup”屏幕之后,按“ENTER"鍵。3。
在出現(xiàn)的“Microsoft
MASM6.11
Setup
Main
Menu”屏幕上,選中“Installthe
Microsoft
Macro
Assembler”,按“ENTER”鍵.4。
在出現(xiàn)的“Microsoft
MASM6.11
Setup
System
Configuration”屏幕上,選中“MS-DOS/Microsoft
WINDOWS”,按“ENTER”鍵。5.
在出現(xiàn)的“Microsoft
MASM6。11
Setup
Microsoft
Windows
Files”屏幕上,對(duì)于“Install
Files
for
Microsoft
Windows?",選中“Yes”,按“ENTER”鍵。6.
在出現(xiàn)的“Microsoft
MASM6.11
Setup
Programmer’s
Workbench”屏幕上,對(duì)于“Install
PWB?”,選中“Yes”,按“ENTER”鍵。7.
在出現(xiàn)的“MicrosoftMASM6.11SetupBriefCompatibility"屏幕上,對(duì)于“InstallBriefCompatibility?",選中“No”,按“ENTER"鍵。8.
在出現(xiàn)的“MicrosoftMASM6。11SetupMouseDriver”屏幕上,對(duì)于“CopytheMicrosoftMouseDriver?”,選中“Yes”,按“ENTER”鍵.9.
在出現(xiàn)的“MicrosoftMASM6。11SetupMAS.EXEUtility”屏幕上,對(duì)于“InstalltheMASM.EXEUtility?”,選中“Yes”,按“ENTER”鍵。10.
在出現(xiàn)的“MicrosoftMASM6。11SetupHelpFiles”屏幕上,對(duì)于“CopytheHelpFiles?",選中“Yes",按“ENTER”鍵。11.
在出現(xiàn)的“MicrosoftMASM6。11SetupSamplePrograms"屏幕上,對(duì)于“CopytheSamplePrograms?”,選中“Yes",按“ENTER”鍵.12.
在出現(xiàn)的“MicrosoftMASM6.11SetupDestinationDrive”屏幕上,對(duì)于“PleaseSelecttheDestinat(yī)ionDrive∶”中所列出的硬盤驅(qū)動(dòng)器,可任選其一,此處選中“HardDriveD”,按“ENTER”鍵。13.
在出現(xiàn)的“MicrosoftMASM6。11SetupExecutableFiles”屏幕上,對(duì)于“D∶MASM611\BIN”,不改變,按“ENTER"鍵.14。
在出現(xiàn)的“MicrosoftMASM6。11SetupLibraryFiles"屏幕上,對(duì)于“D∶\MASM611\LIB",不改變,按“ENTER"鍵.15.
在出現(xiàn)的“MicrosoftMASM6。11SetupIncludeFiles”屏幕上,對(duì)于“D∶\MASM611\INCLUDE”,不改變,按“ENTER”鍵.16.
在出現(xiàn)的“MicrosoftMASM6。11SetupInitializationFiles”屏幕上,對(duì)于“D∶MASM611\INIT”,不改變,按“ENTER”鍵。17。
在出現(xiàn)的“MicrosoftMASM6。11SetupHelpFiles”屏幕上,對(duì)于“D∶MASM611\HELP",不改變,按“ENTER”鍵.18。
在出現(xiàn)的“MicrosoftMASM6.11SetupSampleFiles"屏幕上,對(duì)于“D∶MASM611\SAMPLES”,不改變,按“ENTER"鍵。19。
此后,出現(xiàn)“MicrosoftMASM6。11SetupConfirmYourChoices”屏幕,列出了前面各步所做出的各項(xiàng)選擇的清單,供用戶校核。如果發(fā)現(xiàn)有選擇不當(dāng)?shù)捻?xiàng)目,依然可以進(jìn)行修改。修改的方法是:先用箭頭鍵選中欲修改的項(xiàng)目,按“ENTER”鍵,然后再用箭頭鍵選中“Yes”或“No”,最后再按“ENTER”鍵。如果校核無誤,可以按“ENTER"鍵,以給出確認(rèn)信息。20.
此后,出現(xiàn)“MicrosoftMASM6。11SetupInstalling”屏幕,安裝程序進(jìn)行拷貝文件的操作,此時(shí)僅需等待一會(huì)兒。21.
拷貝文件操作結(jié)束之后,出現(xiàn)“MicrosoftMASM6.11SetupInstallationComplete"屏幕,按“CTRL+C”鍵,退出安裝.
5.2
MASM6.11的啟動(dòng)
MASM6.11的人機(jī)操作接口有兩類窗口:一類是PWB(Programmer’sWorkBench)窗口,支持用戶進(jìn)行匯編語言源程序文件的編輯、匯編和鏈接操作.另一類是CodeView窗口,支持用戶進(jìn)行各種調(diào)試操作。MASM6.11的啟動(dòng)過程是:首先啟動(dòng)PWB的主窗口,然后通過PWB的主窗口,再啟動(dòng)PWB的其他子窗口和啟動(dòng)CodeView類窗口。PWB主窗口的啟動(dòng)方法如下:1.
打開“D∶MASM611\INIT”,把其中的文件“Tools.pre”改名為“Tools.ini”。2。
打開“D∶MASM611\BIN”,運(yùn)行其中的文件“PWB。EXE",屏幕上即會(huì)出現(xiàn)PWB的主窗口。
5.3
MASM6。11PWB的設(shè)置
通常在使用PWB以前,需要進(jìn)行設(shè)置,請(qǐng)按以下過程對(duì)MASM6。11PWB進(jìn)行設(shè)置:
三、
“EditorSettings”項(xiàng)目的設(shè)置
在PWB的主窗口中,單擊“Options”.然后,在彈出的選單上,單擊“EditorSettings”.此后,會(huì)彈出“EditorSettings”窗口。接著,在“EditorSettings”窗口中,應(yīng)進(jìn)行開關(guān)“autosave"、“envcursave”和“envprojsave"的修改設(shè)置,即把它們由“no”改為“yes”,方法如下:1.
在“SwitchList”項(xiàng)目下列出的開關(guān)清單上,單擊欲修改設(shè)置的開關(guān)。2.
在“Switch”項(xiàng)目下,進(jìn)行開關(guān)的狀態(tài)修改,每次一個(gè)開關(guān)。3.
單擊“SetSwitch"。4.
重復(fù)A、B、C三步,直至把欲修改設(shè)置的開關(guān)全部完成為止。5。
單擊“Save”。6。
在彈出的“SaveEditorSettings”窗口中,檢查“ModifiedSwitchesList”項(xiàng)目下所列出的開關(guān)清單應(yīng)正確無誤,之后單擊“OK"。7。
單擊“EditorSettings"窗口中的“OK”。8.
結(jié)束。
四、
“EnvironmentVariables”項(xiàng)目的設(shè)置
在PWB的主窗口中,單擊“Options"。然后,在彈出的選單上,單擊“EnvironmentVariables"。此后,會(huì)彈出“EnvironmentVariables”窗口。接著,在EnvironmentVariables”窗口中,在原有的“PATH="行上增加“D∶\mymasm”和“D∶\MASM611\BIN"兩項(xiàng),從而把原有的“PATH="行修改為:PATH=D∶\mymasm;D∶\MASM611\BIN;C∶\WINDOWS;C∶\WINDOWS\COMMAND,其中的“D∶\mymasm”,為用戶在啟動(dòng)PWB之前自建的工作目錄.增加如下項(xiàng)目:LIB=D∶\MASM611\LIB,INCLUDE=D∶\MASM611\INCLUDE,INIT=D∶\MASM611\INITHELP∶\MASM611\HELP\(zhòng)*.HLP,ASMEX=D∶\MASM611\SAMPLES.修改和增加項(xiàng)目的方法如下:1.
在“Variable"項(xiàng)目下輸入欲修改或增加的項(xiàng)目。2。
單擊“SetVariable”。3.
重復(fù)A、B兩步,直至欲修改和增加的項(xiàng)目全部完成為止.4.
單擊“OK”。5。
結(jié)束。
五、
“BuildOptions"項(xiàng)目的設(shè)置
在PWB的主窗口中,單擊“Options”。然后,在彈出的選單上,單擊“BuildOptions”。此后,會(huì)彈出“BuildOptions”窗口。接著,在“BuildOptions”窗口中,選中“UseDebugOptions”。單擊“OK”。結(jié)束。===========================================================================================masm32v8.2的官方網(wǎng)站是===不用設(shè)置些什么選項(xiàng),因?yàn)槟銊傞_始學(xué),不用包含些什么文件,直接用記事本寫程序保存到你masm所在目錄里,然后在msdos里masm
你的程序名;,然后link
程序名。obj;就可以了,在masm目錄里就能找到你所編寫的程序的可執(zhí)行文件,masm611好像應(yīng)該是ml,不是masm吧?我也不太清楚,因?yàn)槲覜]用611,我用的是5.0的然后在bin文件家中找到masm.exe
link.exe把他們復(fù)制到系統(tǒng)路徑下即可=家伙放在C盤的一個(gè)文件里,然后把文件路徑加到系統(tǒng)環(huán)境變量pat(yī)h里,就可以直接在cmd里==============================匯編語言masmwinasmmasm32分類:匯編語言前言MASM(MicrosoftMacroAssembler)是微軟推出的匯編語言編譯器。因?yàn)樗唵我子?,開發(fā)環(huán)境容易搭建,用它作為匯編語言學(xué)習(xí)和對(duì)計(jì)算機(jī)組成原理的深入理解是非常合適的。它最新版本是MASM8。x系列。主要增加了x64(AMD64,Intel64/EM64T)架構(gòu)處理器的支持。本教程仍然使用MASM6.x系列,目標(biāo)架構(gòu)是IA—32系列處理器。閱讀本教程您需要一些結(jié)構(gòu)化計(jì)算機(jī)語言特別是C語言的經(jīng)驗(yàn)。最好對(duì)計(jì)算機(jī)組成原理有一定的了解??偟膩碚f,匯編語言已經(jīng)退出了編程第一線,任何可以用更高級(jí)語言如C語言實(shí)現(xiàn)的場合,應(yīng)該選擇更高級(jí)的語言。在一些特定的場合,匯編語言仍然有一定的用處,例如:對(duì)程序中一些使用頻率非常高的模塊,用匯編語言來做優(yōu)化。逆向工程,分析無源代碼的軟件,包括病毒等等。編寫BIOS/PCIBIOS,在操作系統(tǒng)引導(dǎo)之前的程序等CPU的實(shí)模式(real—addressmode)程序。深入理解計(jì)算機(jī)組成原理,理解程序被操作系統(tǒng)處理,被CPU執(zhí)行的過程。本教程需要您自己搭建一個(gè)開發(fā)環(huán)境,推薦MASM32搭配WinAsm。MASM32是一個(gè)開發(fā)包,包括了MASM用到的各種工具如程序的鏈接器等和一些例子程序以及幫助文檔。他是非官方的,提供了一個(gè)完整的MASM的開發(fā)環(huán)境.WinAsm是一個(gè)IDE(集成開發(fā)環(huán)境,IntegratedDevelopmentEnvironment)。他可以和MASM32集成在一起使用。第一章大環(huán)境匯編語言很顯著的特點(diǎn)是編程的時(shí)候,你必須時(shí)刻考慮到CPU處理你程序的過程。也就是它和具體硬件非常相關(guān).所以,在了解匯編語言之前,有必要了解一下他大的執(zhí)行環(huán)境。分為三節(jié)。第一節(jié),介紹匯編語言程序的執(zhí)行環(huán)境。第二節(jié),介紹處理器的內(nèi)存管理模式.第三節(jié),介紹匯編程序從編輯到運(yùn)行的過程。第一、二節(jié)對(duì)理解MASM語言非常有必要.不過,特別是CPU實(shí)模式下的編程。第一節(jié)匯編語言程序的執(zhí)行環(huán)境。通常我們看CPU組成是分層次的,主要有三層:數(shù)字邏輯層(DigitalLogicLevel)、微內(nèi)核層(Microarchitecturelevel)、ISA層(InstructionsetArchitectruelevel).ISA層里的各種組成元素就是一個(gè)匯編語言程序的執(zhí)行環(huán)境.時(shí)下比較出名的ISA層的名字有:IA—32,x64,IA-64,SUN的SPARC,IBM的POWER等,這層是軟件和硬件交互的標(biāo)準(zhǔn),或者說一個(gè)接口.微內(nèi)核層是CPU廠商用來實(shí)現(xiàn)特定ISA層的方法。這層比較見CPU廠商的功力,不同的實(shí)現(xiàn)方式會(huì)帶來不同的性能。但它對(duì)軟件是透明的.所以,不管微內(nèi)核層怎么重新設(shè)計(jì),只要ISA層兼容,都能保持軟件的兼容性。比較出名的微內(nèi)核層的名字有:IntelPentium4系列CPU的“IntelNetBurstMicroarchitecture”和Intel最新Core系列CPU的“IntelCoreMicroarchitecture”IA-32CPU的ISA層主要由如下組成:CPU操作模式(modeofoperation)內(nèi)存地址空間(addressspace)基本的程序執(zhí)行寄存器協(xié)處理器寄存器MMX指令寄存器棧(stack)以上為基本元素,為普通程序使用,以下為系統(tǒng)級(jí)程序使用的比如操作系統(tǒng):I/O端口控制寄存器,也就是決定CPU操作模式的寄存器內(nèi)存管理寄存器Debug寄存器內(nèi)存區(qū)域類型寄存器等等。IA—32是所謂的CISC(復(fù)雜指令集計(jì)算機(jī),complicatedinstructionsetcomputer)架構(gòu)的ISA。相對(duì)于RISC(精簡指令集計(jì)算機(jī),reducedinstructionsetcomputer,例如SUN的SPARC和IBM的POWER)來說,他的指令系統(tǒng)復(fù)雜而多.處理器的結(jié)構(gòu)因而復(fù)雜,再加上為了兼容而提出的所謂操作模式,內(nèi)存管理模式等等的概念使得對(duì)它的編程工作非常困難。所以掌握了對(duì)它的匯編程序的開發(fā),別的系統(tǒng),你會(huì)覺得非常輕松。提到IA—32,不得不提它的工作模式的概念。這個(gè)概念,初學(xué)者容易犯暈。IA—32有四個(gè)工作模式,其中兩個(gè)要知道:保護(hù)模式(protectdmode)和實(shí)模式(real—addressmode)。計(jì)算機(jī)為每個(gè)Byte的內(nèi)存空間都定了一個(gè)地址。CPU的工作需要尋址,就是尋指令的相關(guān)參數(shù)的地址。而后到這個(gè)地址,把它們抓進(jìn)CPU,配合指令來執(zhí)行。16位CPU8088實(shí)際20位地址線,可以尋址1M,可是寄存器是16位的.也就是說一個(gè)寄存器不足以確定一個(gè)物理地址。Intel提出了段(segment)的概念。把一個(gè)尋址過程分兩步?;蛘哒f人為的把物理地址分成段.即:先指定一個(gè)段地址,而后指定在這個(gè)段里的偏移地址(offset)。此為段的第一個(gè)意義。這個(gè)意義下,段可以理解“為一個(gè)20位物理地址的前幾位"。隨著IntelCPU真的實(shí)現(xiàn)了32位,段的這個(gè)意義或者作用。不過為了兼容以前的程序,Intel提出了模式的概念,那就是為了兼容以前的16位的CPU,32位的CPU可以模擬成一個(gè)老CPU,這是32位CPU的實(shí)模式同時(shí)32位CPU還可以工作在另外一個(gè)可以充分發(fā)揮其32位性能的模式,也就是保護(hù)模式。保護(hù)模式不但是32位的,而且此時(shí)還加進(jìn)了為操作系統(tǒng)提供些好處的功能。特別是能夠保護(hù)操作系統(tǒng)的代碼不被操作系統(tǒng)之上的應(yīng)用程序破壞的功能。這就是所謂的保護(hù)二字的涵義。還有對(duì)多任務(wù)的支持等。CPU工作在保護(hù)模式下,又分出了4個(gè)特權(quán)級(jí)別,目的是便于操作系統(tǒng)對(duì)其上的應(yīng)用程序進(jìn)行管理.所謂的ring0~ring3。windows操作系統(tǒng)只用到了兩個(gè),ring0和ring3。ring0下的代碼可以讓CPU做任何可以做的事兒,ring3有很多限制。操作系統(tǒng)引導(dǎo)后,搶先把自己置成ring0狀態(tài),同時(shí),對(duì)操作系統(tǒng)之上的程序他有選擇的設(shè)置他們的級(jí)別。例如設(shè)備驅(qū)動(dòng),一般它們被操作系統(tǒng)置成ring0,而普通的應(yīng)用程序被置成ring3.在這里要樹立一個(gè)概念.從程序員角度來看,操作系統(tǒng)可以看成對(duì)CPUISA層的一個(gè)擴(kuò)展.即:操作系統(tǒng)為ISA層增加了新的“指令"和功能。事實(shí)上,很多操作系統(tǒng)是固定在硬件里的,例如網(wǎng)絡(luò)交換機(jī)和有些路由器等。有了這個(gè)概念,就很容易理解以后MASM為何要分對(duì)“ISA層"編程還是對(duì)“ISA加操作系統(tǒng)”編程。第二節(jié),介紹處理器的內(nèi)存管理模式早期的CPU無所謂內(nèi)存管理模式,程序指定絕對(duì)的內(nèi)存地址,處理器到這個(gè)地址抓指令參數(shù)。現(xiàn)在CPU都不這樣了(當(dāng)然,CPU工作在實(shí)模式下,仍然是這樣).這樣對(duì)內(nèi)存沒有任何處理,既不利于
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年勞動(dòng)爭議一次性賠償協(xié)議書標(biāo)準(zhǔn)格式
- 2025年共創(chuàng)未來戰(zhàn)略性框架協(xié)議樣本
- 2025年標(biāo)準(zhǔn)服裝模特合作合同范本
- 2025年兼職工作人員雇傭合同模板
- 2025年冬季旅行社聯(lián)營協(xié)議
- 2025年企業(yè)增股擴(kuò)資協(xié)議
- 2025年制造業(yè)產(chǎn)品交貨時(shí)間協(xié)議導(dǎo)則
- 2025年交通道路標(biāo)線施劃任務(wù)合同
- 2025年共同投資水資源保護(hù)項(xiàng)目協(xié)議
- 2025年公共照明亮化項(xiàng)目合同書
- 【非正式組織對(duì)企業(yè)人力資源管理的影響8700字(論文)】
- 2024拳擊比賽計(jì)劃書
- 管道直飲水系統(tǒng)技術(shù)和方案
- 培養(yǎng)幼兒的時(shí)間觀念
- 肉山羊規(guī)模飼養(yǎng)生產(chǎn)技術(shù)規(guī)程
- 婦產(chǎn)科國家臨床重點(diǎn)專科驗(yàn)收匯報(bào)
- 繪本故事PPT課件之我不敢說我怕被罵
- 社區(qū)干部培訓(xùn)班交流發(fā)言(通用6篇)
- 小學(xué)語文-5 對(duì)韻歌教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 【課件】免疫系統(tǒng)組成和功能(人教版2019選擇性必修1)
- 采購部組織結(jié)構(gòu)圖
評(píng)論
0/150
提交評(píng)論