MASM的使用安装方法_第1页
MASM的使用安装方法_第2页
MASM的使用安装方法_第3页
MASM的使用安装方法_第4页
MASM的使用安装方法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.汇编编译工具MASM的使用2.1.实验目的学习如何安装MASM;学习如何使用和使用编译和链接汇编语言程序。2.2.根底知识1、常用汇编语言工具软件名称运行平台软件说明下载地址MasmV6.11DOS微软汇编工具Masm32Windows98/2000/*P微软Win32汇编工具Windows98/2000/*P微软Win32汇编工具DOSBorland汇编工具2、DOS汇编与WIN32汇编在DOS下编写汇编程序,程序员可以管理系统的所有资源,访问和改动系统中所有的内存,修改内存控制块,修改中断向量表截获中断,直接对I/O端口进展读写。DOS是个单任务操作系统,只有一个运行级别,任何进程和DOS操作系统都是同等级别的。因此,DOS系统中各个进程会互相影响,如果*个进程死机的话,整个系统都会垮掉。DOS工作在实模式下,程序员可以寻址1M的内存,通过段存放器来指定段的初始地址,每个段的大小为64K。超过1M的局部,就只能把他作为*MS使用。1M以上的内存空间只能用作数据存放而无法在其中执行程序。Win32是指32位的Windows操作系统,进程有多种运行级别,操作系统工作在最高级别——0级,而应用程序工作在3级。在第三级别,进程无法直接访问I/O端口,无法访问其它进程运行的内存,连向自己的运行代码写入数据都是非法的。只有对于最高级别的进程,系统才是全开放的。Windows工作在保护模式下,所有的资源对进程来说都是被"保护〞的。在内存方面,Windows使用了处理器的分页机制,程序员不必用一个段存放器去指定段的地址,因为在保护模式下,段存放器的含义是不同的〔参见80386手册方面的书籍〕。程序员可以直接指定一个32位的地址来寻址4GB的内存。在程序构造方面,Windows程序也有很大的不同,它是"基于消息〞的。在上面列举的汇编工具中,一些是DOS汇编工具,一些是Win32汇编工具。初学者可以从DOS汇编入手,先掌握汇编编程的思路、根本语法和编程技巧,待入门后再学习Win32汇编。当然,学习DOS汇编并不一定需要安装和使用DOS操作系统。程序员可以在Win32环境中安装或其它16位汇编工具,在命令提示符状态下编译和链接DOS汇编程序。DOS汇编程序在Win32环境中运行时,操作系统会模拟实模式运行16位进程。对于一些可能会影响整个操作系统工作的指令,Win32操作系统会拒绝执行。2.3.MASM的安装首先从Internet下载,这是一个ZIP压缩文件。可以用WINZIP或WINRAR等压缩解压软件指定一个目录将其解压,目录名例如为F:\MASM60。运行"命令提示符〞,在解压目录中运行setup程序,开场安装MASM。在主菜单界面选择"InstalltheMicrosoftMacroAssembler〞继续。在系统设置界面选择"DOS/Windows&NT〞操作系统继续。选择安装Windows有关文选择安装PWD〔Programmer’sWorkBench〕,继续。无须安装"Briefcompatibility〞〔常见编辑器兼容〕,继续。选择复制微软鼠标驱动器"MicrosoftMouseDriver〞,继续。选择安装MASM工具,继续。选择安装帮助文件,继续。选择安装例程〔sampleprogram〕,继续。选择系统的安装目录,例如将系统安装在E盘。接下来是询问各局部程序的安装目录,一般情况下由系统自行决定即可。参数设置完毕后最后检查一次。检查如果无需改动,则选择"NOCHANGES〞开场安装。安装完毕后系统会提示与版本有一些区别,具体的内容可以观看安装菜单中的"SpecialNoteforMASMv5.1users〞,或者编程指南中的附录A。设置MASM的DOS操作系统环境参数需要修改和两个文件,MASM提供了和两个文件作为参考。如果MASM安装在Windows98/NT/2000/*P操作系统环境下,需要参考文件的内容进展设置,设置方式稍后介绍。接下来是操作系统环境下的设置要求。如果安装在操作系统中,需要参考文件修改系统环境配置文件。如果安装在32位Windows中,无须理会的内容。然后是关于PWD〔Programmer’sWorkBench〕的设置,安装系统会提供一个参考文件。最后是有关内存方面的设置。当MASM工作在非DOS环境下时,不需要理会这些方面的内容。在安装完毕前最好看一看"SpecialNoteforCodeViewusers〞、"SpecialNoteforMASMv5.1users〞、"〞和"〞的内容。最后再退出安装。2.3.WIN32操作系统中MASM的环境参数设置安装完MASM后,需要设置一下MASM的环境参数。步骤如下:在桌面"我的电脑〞上点击鼠标右键,在弹出式菜单上选择"属性〞项,在"系统属性〞窗口里翻开"高级〞页。点击"环境变量〞按钮。在"环境变量窗口〞的系统变量列表中选择"PATH〞项,再点击系统变量列表下的"编辑〞按钮。在"编辑环境变量窗口〞的"变量值〞栏里追加MASM的BIN、BINB、INCLUDE目录的路径参数。例如:当MASM安装在E:\MASM611目录,则在"变量值〞栏里追加";E:\MASM611\BINR;E:\MASM611\BIN〞。除此之外,还需要增加以下环境变量:LIB=c:MASM611\LIBINCLUDE=c:MASM611\INCLUDEINIT=c:MASM611\INITHELPFILES=c:MASM611\HELP\*.HLPASME*=c:\ASM611\SAMPLES说明:环境参数改变后需要重新启动计算机才能生效。有些机房在计算机中使用了磁盘保护卡,一旦重新启动所有安装的文件和设置的参数都将消失。在这种情况下,可以在DOS命令行模式中输入一些临时命令设置MASM的环境参数。〔假设MASM安装在E:\MASM611目录〕SETPATH=E:\MASM611\BINR;E:\MASM611\BIN;%PATH%SETLIB=E:\MASM611\LIBSETINCLUDE=E:\MASM611\INCLUDESETINIT=E:\MASM611\INITSETHELPFILES=E:\MASM611\HELP\*.HLPSETASME*=E:\MASM611\SAMPLES2用于将汇编源程序汇编成目标文件。当MASM汇编环境参数配置好之后,在"命令提示符〞窗口中键入"MASM/H〞指令,将显示出MASM的使用介绍。MASM的命令格式如下:MASM[option...]source(.asm),[out(.obj)],[list(.lst)],[cref(.crf)][;]可选局部是MASM的各种汇编参数。source(.asm)指定汇编源文件的名称,缺省的扩展名是ASM。out(.obj)指定输出的目标代码文件。缺省的文件名与汇编源文件一样,扩展名改为OBJ。list(.lst)指定输出的列表文件,缺省的扩展名是LST。缺省情况下MASM不生成列表文件。cref(.crf)指定输出的穿插参考文件,缺省的扩展名是CRF。缺省情况下MASM不生成穿插参考文件,穿插参考文件的后缀为SBR。最后的分号表示其后的工程按缺省情况处理。以下就各个汇编参数逐个加以说明。参数名作用/C生成穿插参考文件/D<sym>[=<val>]定义一个符号sym并对其赋值val/E模拟浮点运算指令和IEEE格式/H显示MASM的使用帮助/HELP显示MASM的使用帮助/I<path>寻找引入文件〔INC〕的目录/L生成列表文件/La生成全部列表文件/ML区分所有标识符号的大小写/MU将全局标识符号转换为大写/M*区分全局标识符号的大小写/N隐藏列表文件中的符号表/T隐藏成功汇编时的显示消息/W[0/1/2]设置告警等级〔0:无;1:严重;2:劝告〕/*列举错误条件/Zi生成CodeView的行号信息/Zd生成CodeView的标识符号信息下面用一个汇编程序说明的使用方法。汇编程序名称为,内容如下:data1 segmentmsg db "Hello,world.",0dh,0ah,"$"data1 endscode1 segmentassumecs:code1,ds:data1start: mov a*,data1mov ds,a* mov d*,offsetmsgmov ah,9 int 21hmov a*,4c00h int 21hcode1ends endstart输入"masmhello;〞指令,指令后的分号表示一切按缺省情况进展。运行后显示以下内容:Microsoft(R)MASMCompatibilityDriverCopyright(C)MicrosoftCorp1993.Allrightsreserved.Invoking:ML.E*E/I.Copyright(C)MicrosoftCorp1981-1993.Allrightsreserved.执行指令,用记事本观看生成的的内容。2用于将目标文件链接成可执行文件。当环境参数配置好之后,在"命令提示符〞窗口中键入"LINK/?〞指令,将显示出LINK的参数表。LINK的命令格式如下:LINK[option...]<objs>,<e*efile>,<mapfile>,<libs>,<deffile>[;]可选局部是LINK的各种链接参数。objs指定目标文件的名称,缺省的扩展名是OBJ。可以有多个目标文件,目标文件之间用加号或者空格间隔。e*efile指定输出的可执行文件的名称。缺省的文件名与目标文件一样,缺省扩展名改为E*E。mapfile指定输出的列表文件的名称,缺省的扩展名是MAP。缺省情况下不生成列表文件。libs指定链接时使用的库文件,缺省的扩展名是LIB。可以有多个库文件,库文件之间用加号或者空格间隔。缺省情况下MASM不使用库文件。最后的分号表示其后的工程按缺省情况处理。deffile指定输出的定义文件的名称,缺省的扩展名是DEF。缺省情况下不生成定义文件。最后的分号表示其后的工程按缺省情况处理。以下就各个链接参数逐个加以说明。参数名缩写作用/ALIGNMENT:size/A:size根据指定的大小在分段执行文件中排列段数据,不可用于DOS程序/BATCH/B隐藏库或目标文件找不到的提示/CODEVIEW/CO参加CodeView的标识符号及列号,该选项与/E*EPACK不兼容。/CPARMA*ALLOC:number/CP:number以16字节为单位设置程序最大分配空间/DOSSEG/DO用缺省顺序排列段〔用于微软高级语言〕/DSALLOCATE/DS从数据段的尾部开场装入全部数据,用于链接成E*E文件/E*EPACK/E压缩可执行文件的大小,与/CO和/INCR不兼容/FARCALLTRANSLATION/F优化远程调用,当使用/TINY时自动使用/FARCALL。当链接WINDOWS程序时不建议同时使用/FARCALL和/FARCALLTRANSLATION/HELP/HE显示简要帮助信息/HIGH/HI执行时尽可能地装入高端内存区,和/DEALLOC并用。〔用于微软高级语言〕/INCREMENTAL/INC准备参加ILINK链接,与/E*EPACK和/TINY不兼容。/INFORMATION/INF显示链接过程的信息/LINENUMBERS/LI将源文件行号和相关地址参加MAP文件,目标文件必须带行号汇编。/MAP/M将公共标识符加到MAP文件/NODEFAULTLIBRARYSEARCH[:library]/NOD[:library]忽略指定的缺省库/NOE*TDICTIONARY/NOE阻止LINK寻找库中的扩展字典,当重定义标识符导致错误L2044时使用/NOE/NOFARCALLTRANSLATION/NOF制止远程调用/NOIGNORECASE/NOI区别大小写字母/NOLOGO/NOL隐藏版权信息/NONULLSDOSSEG/NON类似于/DOSSEG参数,但是在_TE*T段前不加额外的字节/NOPACKCODE/NOP对代码段不压缩/PACKCODE:number/PACKC:number将相邻的代码段合并压缩,指定的字节数用于设定物理段的最大值。/PACKDATA:number/PACKD:number将相邻的数据段合并压缩,指定的字节数用于设定物理段的最大值。仅用于windows/PAUSE/PAU链接过程中暂停以更换磁盘/PMTYPE:type/PM:type指定基于Windows的应用程序的类型。类型为PM表示是WindowsAPI;类型为VIO表示是WindowsCompat;类型为NOVIO表示不是WindowsCompat;/QUICKLIBRARY/Q建立QuickBasic程序库/SEGMENTS:number/SE:number设置链接时的段总数,缺省值为127/STACK:number/ST:number设置栈段的最大字节数,不超过64K/TINY/T生成小模式的COM文件,与/INCR不兼容/"/"显示简要帮助信息下面将刚刚用汇编出来的目标程序进展链接。目标程序名称为。输入"linkhello;〞指令,指令后的分号表示一切按缺省情况进展。运行后显示以下内容:Microsoft(R)SegmentedE*ecutableLinkerVersionJul131992Copyright(C)MicrosoftCorp1984-1992.Allrightsreserved.LINK:warningL4021:nostacksegment链接警告没有定义栈段,这不影响程序的运行。接下来可以运行,看看显示结果是不是"Hello,world.〞。2的功能相当于和的总和,可以将汇编语言源程序汇编和链接后直接生成可执行文件。当环境参数配置好之后,在"命令提示符〞窗口中键入"ML/?〞指令,将显示出ML的参数表。ML的命令格式如下:ML[/options]filelist[/linklinkoptions]可选局部是ML的各种链接参数,/linklinkoptions里设定的是链接参数,这些参数可以参照2.5LINK的有关参数。filelist指定汇编源文件的名称,缺省的扩展名是ASM。可以有多个汇编源文件,文件之间用空格间隔。以下就各个链接参数逐个加以说明。参数名作用/ATEnabletinymodel(file)允许小模式〔生成COM文件〕/Bl<linker>Usealternatelinker使用linker参数里指定的链接器/cAssemblewithoutlinking仅仅汇编不链接/CpPreservecaseofuseridentifiers区分用户标识符的大小写/CuMapallidentifierstouppercase将所有标识符映象为大写/C*Preservecaseinpublics,e*terns区分公共标识符和外部标识符的大小写/D<name>[=te*t]Definete*tmacro用给定的名字定义文字宏/EPOutputpreprocessedlistingtostdout生成预处理列表并输出至屏幕/F<he*>Setstacksize(bytes)设置堆栈大小/Fb[file]Generatebounde*ecutable生成限制性的可执行文件/Fe<file>Namee*ecutable设置可执行文件的名称/Fl[file]Generatelisting生成汇编代码列表文件/Fm[file]Generatemap生成链接映象文件/Fo<file>Nameobjectfile设置目标文件的名称/FPiGenerate80*87emulatorencoding生成80*87模拟代码/Fr[file]Generatelimitedbrowserinfo生成源浏览文件〔SBR〕/FR[file]Generatefullbrowserinfo生成扩展源浏览文件〔SBR〕/G<c|d>GeneratePascalorCcalls指定汇编生成的调用格式。C:pascal类型D:C类型/H<number>Setma*e*ternalnamelength设置扩展名的最大长度/I<name>Addincludepath添加include文件的目录/link<linkeroptionsandlibraries>链接选项和库/nologoSuppresscopyrightmessage取消版权信息/SaMa*imizesourcelisting列表文件最大化/SfGeneratefirstpasslisting生成第一遍的汇编代码列表/Sl<width>Setlinewidth设置列表文件行宽/SnSuppresssymbol-tablelisting隐藏列表文件中的符号表/Sp<length>Setpagelength设置列表文件的页长度/Ss<string>Setsubtitle设置列表文件的子标题/St<string>Settitle设置列表文件的标题/S*Listfalseconditionals列表文件中列举错误条件/Ta<file>Assemblenon-.ASMfile汇编非ASM后缀的文件/VMEnablevirtualmemory启动虚拟存储器/wSameas/W0/W*设置告警级别为0/W*Treatwarningsaserrors传回告警的错误码/W<number>Setwarninglevel设置告警级别〔1、2、3〕/*IgnoreINCLUDEenvironmentpath忽略INCLUDE环境路径/ZdAddlinenumberdebuginfo在目标文件中产生CodeView列号/ZfMakeallsymbolspublic在目标文件中产生CodeView所有公共标识符/ZiAddsymbolicdebuginfo在目标文件中产生CodeView标识符/ZmEnableMASM5.10compatibility/Zp[n]Setstructurealignment排列构造数据的起始地址为n〔1、2、4〕的倍数/ZsPerformsynta*checkonly只检查语法不产生目标文件下面使用对ASM文件进展汇编和链接。汇编文件的名称为。执行"MLhello.asm〞指令,如无错误的话将生成可执行文件。Copyright(C)MicrosoftCorp1981-1991.Allrightsreserved.Copyright(C)MicrosoftCorp1984-1991.Allrightsreserved.RunFile[temp.e*e]:"hello.e*e"ListFile[NUL.MAP]:NULLibraries[.LIB]:DefinitionsFile[NUL.DEF]:;LINK:warningL4021:nostacksegment运行,看看显示结果是不是"Hello,world.〞。2.7.用DEBUG调试可执行文件用MASM编译了汇编语言源文件之后,用DEBUG调试可执行程序。具体的做法是:在"命令提示符〞窗口下执行"DEBUG<文件所在路径+文件名>〞指令。执行"R〞指令观看段存放器CS和DS的值,在E*E文件中两值应该不同。执行"U〞指令观看CS:IP所指地址的反汇编代码。程序刚开场时会设置DS段存放器的值,将其指向DATA1数据段。用跟踪指令"P〞检查这两条指令的执行结果。DS段存放器的值被修改后,执行指令"DDS:0”继续用指令P进展程序跟踪,检查各存放器和标志位的修改内容以及程序的运行情况。程序正常完毕后,用"RIP〞指令修改存放器IP的值,将其设置为0。重复第4步到第6步的工作,改用指令T而不是指令P对程序进展跟踪,观看跟踪情况。2.8.用MASM和LINK生成COM可执行文件对于有多个数据段、栈段的汇编语言程序,建议将其汇编和链接成E*E文件。如果程序的代码和数据量比拟小,可以将其汇编和链接成COM文件。E*E文件可以有多个段,每个段的最大空间为64KB,程序在执行需要对多个段进展管理,所以E*E文件的构造有些复杂。而COM文件只有一个段,执行代码和数据都处于一个段中,因此,COM文件比E*E文件显得更加短小精悍。COM文件其唯一的约束就是可执行的程序的大小不允许超过64KB。编写如下的汇编程序,文件名定为,内容如下:code1 segment assumecs:code1,ds:code1start: jmp ne*tmsg db "Hello,world.",0dh,0ah,"$"ne*t: mov a*,csmov ds,a* mov d*,offsetmsgadd d*,100h mov ah,9int 21h mov a*,4c00hint 21hcode1ends endstart执行以下指令对源文件进展汇编:。执行以下指令将目标文件链接成COM文件:LINK/TINYHELLO2;。命令执行完毕后,将生成HELL2文件,执行HELLO2观看运行结果。比拟一下和HELL2的大小,用DEBUG调试可执行程序HELLO2,了解它的程序构造。=================================================================================================\o"默认分类"默认分类2009-04-2217:52:54阅读98评论0

字号:大中小订阅一、安装前的准备工作1.

安装MASM6.11的操作系统要求为Windows98。2.

在D∶\盘或别的硬盘上建一个文件夹。今假设在D∶\盘上建立一个如下的文件夹:"D∶\*****yyyyyy〞,其中"*****〞是班级名,"yyyyyy〞是本人姓名。3.

从教师机上下载文件夹"MASM611SETUP〞及其内容,并放入文件夹"D∶\*****yyyyyy〞。4.

在文件夹"D∶\*****yyyyyy〞下建立一个如下的工作目录:"D∶\*****yyyyyy\mymasm〞,以备将来在工作的时候存放MASM6.11汇编语言源文件、目标文件、可执行文件。二、安装过程1.

翻开MASM611SETUP文件夹,运行"Setup〞。2.

在出现"Microsoft

MASM6.11

Setup〞屏幕之后,按"ENTER〞键。3.

在出现的"Microsoft

MASM6.11

Setup

Main

Menu〞屏幕上,选中"Installthe

Microsoft

Macro

Assembler〞,按"ENTER〞键。4.

在出现的"Microsoft

MASM6.11

Setup

System

Configuration〞屏幕上,选中"MS-DOS/Microsoft

WINDOWS〞,按"ENTER〞键。5.

在出现的"Microsoft

MASM6.11

Setup

Microsoft

Windows

Files〞屏幕上,对于"Install

Files

for

Microsoft

Windows?〞,选中"Yes〞,按"ENTER〞键。6.

在出现的"Microsoft

MASM6.11

Setup

Programmer’s

Workbench〞屏幕上,对于"Install

PWB?〞,选中"Yes〞,按"ENTER〞键。7.

在出现的"MicrosoftMASM6.11SetupBriefCompatibility〞屏幕上,对于"InstallBriefCompatibility?〞,选中"No〞,按"ENTER〞键。8.

在出现的"MicrosoftMASM6.11SetupMouseDriver〞屏幕上,对于"CopytheMicrosoftMouseDriver?〞,选中"Yes〞,按"ENTER〞键。9.

在出现的"MicrosoftMASM6.11SetupMAS.E*EUtility〞屏幕上,对于"InstalltheMASM.E*EUtility?〞,选中"Yes〞,按"ENTER〞键。10.

在出现的"MicrosoftMASM6.11SetupHelpFiles〞屏幕上,对于"CopytheHelpFiles?〞,选中"Yes〞,按"ENTER〞键。11.

在出现的"MicrosoftMASM6.11SetupSamplePrograms〞屏幕上,对于"CopytheSamplePrograms?〞,选中"Yes〞,按"ENTER〞键。12.

在出现的"MicrosoftMASM6.11SetupDestinationDrive〞屏幕上,对于"PleaseSelecttheDestinationDrive∶〞中所列出的硬盘驱动器,可任选其一,此处选中"HardDriveD〞,按"ENTER〞键。13.

在出现的"MicrosoftMASM6.11SetupE*ecutableFiles〞屏幕上,对于"D∶MASM611\BIN〞,不改变,按"ENTER〞键。14.

在出现的"MicrosoftMASM6.11SetupLibraryFiles〞屏幕上,对于"D∶\MASM611\LIB〞,不改变,按"ENTER〞键。15.

在出现的"MicrosoftMASM6.11SetupIncludeFiles〞屏幕上,对于"D∶\MASM611\INCLUDE〞,不改变,按"ENTER〞键。16.

在出现的"MicrosoftMASM6.11SetupInitializationFiles〞屏幕上,对于"D∶MASM611\INIT〞,不改变,按"ENTER〞键。17.

在出现的"MicrosoftMASM6.11SetupHelpFiles〞屏幕上,对于"D∶MASM611\HELP〞,不改变,按"ENTER〞键。18.

在出现的"MicrosoftMASM6.11SetupSampleFiles〞屏幕上,对于"D∶MASM611\SAMPLES〞,不改变,按"ENTER〞键。19.

此后,出现"MicrosoftMASM6.11SetupConfirmYourChoices〞屏幕,列出了前面各步所做出的各项选择的清单,供用户校核。如果发现有选择不当的工程,依然可以进展修改。修改的方法是:先用箭头键选中欲修改的工程,按"ENTER〞键,然后再用箭头键选中"Yes〞或"No〞,最后再按"ENTER〞键。如果校核无误,可以按"ENTER〞键,以给出确认信息。20.

此后,出现"MicrosoftMASM6.11SetupInstalling〞屏幕,安装程序进展拷贝文件的操作,此时仅需等待一会儿。21.

拷贝文件操作完毕之后,出现"MicrosoftMASM6.11SetupInstallationComplete〞屏幕,按"CTRL+C〞键,退出安装。MASM6.11的人机操作接口有两类窗口:一类是PWB(Programmer’sWorkBench)窗口,支持用户进展汇编语言源程序文件的编辑、汇编和链接操作。另一类是CodeView窗口,支持用户进展各种调试操作。MASM6.11的启动过程是:首先启动PWB的主窗口,然后通过PWB的主窗口,再启动PWB的其他子窗口和启动CodeView类窗口。PWB主窗口的启动方法如下:1.

翻开"D∶MASM611\INIT〞,把其中的文件"Tools.pre〞改名为"Tools.ini〞。2.

翻开"D∶MASM611\BIN〞,运行其中的文件"PWB.E*E〞,屏幕上即会出现PWB的主窗口。5.3

MASM6.11PWB的设置通常在使用PWB以前,需要进展设置,请按以下过程对MASM6.11PWB进展设置:三、

"EditorSettings〞工程的设置在PWB的主窗口中,单击"Options〞。然后,在弹出的选单上,单击"EditorSettings〞。此后,会弹出"EditorSettings〞窗口。接着,在"EditorSettings〞窗口中,应进展开关"autosave〞、"envcursave〞和"envprojsave〞的修改设置,即把它们由"no〞改为"yes〞,方法如下:1.

在"SwitchList〞工程以下出的开关清单上,单击欲修改设置的开关。2.

在"Switch〞工程下,进展开关的状态修改,每次一个开关。3.

单击"SetSwitch〞。4.

重复A、B、C三步,直至把欲修改设置的开关全部完成为止。5.

单击"Save〞。6.

在弹出的"SaveEditorSettings〞窗口中,检查"ModifiedSwitchesList〞工程下所列出的开关清单应正确无误,之后单击"OK〞。7.

单击"EditorSettings〞窗口中的"OK〞。8.

完毕。四、

"EnvironmentVariables〞工程的设置在PWB的主窗口中,单击"Options〞。然后,在弹出的选单上,单击"EnvironmentVariables〞。此后,会弹出"EnvironmentVariables〞窗口。接着,在EnvironmentVariables〞窗口中,在原有的"PATH=〞行上增加"D∶\mymasm〞和"D∶\MASM611\BIN〞两项,从而把原有的"PATH=〞行修改为:PATH=D∶\mymasm;D∶\MASM611\BIN;C∶\WINDOWS;C∶\WINDOWS\COMMAND,其中的"D∶\mymasm〞,为用户在启动PWB之前自建的工作目录。增加如下工程:LIB=D∶\MASM611\LIB,INCLUDE=D∶\MASM611\INCLUDE,INIT=D∶\MASM611\INITHELPFILES=D∶\MASM611\HELP\*.HLP,ASME*=D∶\MASM611\SAMPLES。修改和增加工程的方法如下:1.

在"Variable〞工程下输入欲修改或增加的工程。2.

单击"SetVariable〞。3.

重复A、B两步,直至欲修改和增加的工程全部完成为止。4.

单击"OK〞。5.

完毕。五、

"BuildOptions〞工程的设置在PWB的主窗口中,单击"Options〞。然后,在弹出的选单上,单击"BuildOptions〞。此后,会弹出"BuildOptions〞窗口。接着,在"BuildOptions〞窗口中,选中"UseDebugOptions〞。单击"OK〞。完毕。===========================================================================================masm32v8.2的官方网站是movsd.===link.e*e把他们复制到系统路径下即可=家伙放在C盘的一个文件里,然后把文件路径加到系统环境变量path里,就可以直接在cmd里==============================汇编语言masmwinasmmasm32分类:汇编语言前言MASM(MicrosoftMacroAssembler)是微软推出的汇编语言编译器。因为他简单易用,开发环境容易搭建,用它作为汇编语言学习和对计算机组成原理的深入理解是非常适宜的。它最新版本是MASM8.*系列。主要增加了*64〔AMD64,Intel64/EM64T〕架构处理器的支持。本教程仍然使用MASM6.*系列,目标架构是IA-32系列处理器。阅读本教程您需要一些构造化计算机语言特别是C语言的经历。最好对计算机组成原理有一定的了解。总的来说,汇编语言已经退出了编程第一线,任何可以用更高级语言如C语言实现的场合,应该选择更高级的语言。在一些特定的场合,汇编语言仍然有一定的用处,例如:对程序中一些使用频率非常高的模块,用汇编语言来做优化。逆向工程,分析无源代码的软件,包括病毒等等。编写BIOS/PCIBIOS,在操作系统引导之前的程序等CPU的实模式(real-addressmode)程序。深入理解计算机组成原理,理解程序被操作系统处理,被CPU执行的过程。本教程需要您自己搭建一个开发环境,推荐MASM32搭配WinAsm。MASM32是一个开发包,包括了MASM用到的各种工具如程序的链接器等和一些例子程序以及帮助文档。他是非官方的,提供了一个完整的MASM的开发环境。WinAsm是一个IDE(集成开发环境,IntegratedDevelopmentEnvironment)。他可以和MASM32集成在一起使用。第一章大环境汇编语言很显著的特点是编程的时候,你必须时刻考虑到CPU处理你程序的过程。也就是它和具体硬件非常相关。所以,在了解汇编语言之前,有必要了解一下他大的执行环境。分为三节。第一节,介绍汇编语言程序的执行环境。第二节,介绍处理器的内存管理模式。第三节,介绍汇编程序从编辑到运行的过程。第一、二节对理解MASM语言非常有必要。不过,特别是CPU实模式下的编程。第一节汇编语言程序的执行环境。通常我们看CPU组成是分层次的,主要有三层:数字逻辑层〔DigitalLogicLevel〕、微内核层〔Microarchitecturelevel〕、ISA层〔InstructionsetArchitectruelevel〕。ISA层里的各种组成元素就是一个汇编语言程序的执行环境。时下比拟知名的ISA层的名字有:IA-32,*64,IA-64,SUN的SPARC,IBM的POWER等,这层是软件和硬件交互的标准,或者说一个接口。微内核层是CPU厂商用来实现特定ISA层的方法。这层比拟见CPU厂商的功力,不同的实现方式会带来不同的性能。但它对软件是透明的。所以,不管微内核层怎么重新设计,只要ISA层兼容,都能保持软件的兼容性。比拟知名的微内核层的名字有:IntelPentium4系列CPU的"IntelNetBurstMicroarchitecture〞和Intel最新Core系列CPU的"IntelCoreMicroarchitecture〞IA-32CPU的ISA层主要由如下组成:CPU操作模式(modeofoperation)内存地址空间〔addressspace〕根本的程序执行存放器协处理器存放器MM*指令存放器栈(stack)以上为根本元素,为普通程序使用,以下为系统级程序使用的比方操作系统:I/O端口控制存放器,也就是决定CPU操作模式的存放器内存管理存放器Debug存放器内存区域类型存放器等等。IA-32是所谓的CISC〔复杂指令集计算机,complicatedinstructionsetcomputer〕架构的ISA。相对于RISC〔精简指令集计算机,reducedinstructionsetcomputer,例如SUN的SPARC和IBM的POWER〕来说,他的指令系统复杂而多。处理器的构造因而复杂,再加上为了兼容而提出的所谓操作模式,内存管理模式等等的概念使得对它的编程工作非常困难。所以掌握了对它的汇编程序的开发,别的系统,你会觉得非常轻松。提到IA-32,不得不提它的工作模式的概念。这个概念,初学者容易犯晕。IA-32有四个工作模式,其中两个要知道:保护模式(protectdmode)和实模式(real-addressmode)。计算机为每个Byte的内存空间都定了一个地址。CPU的工作需要寻址,就是寻指令的相关参数的地址。而后到这个地址,把它们抓进CPU,配合指令来执行。16位CPU8088实际20位地址线,可以寻址1M,可是存放器是16位的。也就是说一个存放器缺乏以确定一个物理地址。Intel提出了段〔segment〕的概念。把一个寻址过程分两步。或者说人为的把物理地址分成段。即:先指定一个段地址,而后指定在这个段里的偏移地址〔offset〕。此为段的第一个意义。这个意义下,段可以理解"为一个20位物理地址的前几位〞。随着IntelCPU真的实现了32位,段的这个意义或者作用。不过为了兼容以前的程序,Intel提出了模式的概念,那就是为了兼容以前的16位的CPU,32位的CPU可以模拟成一个老CPU,这是32位CPU的实模式同时32位CPU还可以工作在另外一个可以充分发挥其32位性能的模式,也就是保护模式。保护模式不但是32位的,而且此时还加进了为操作系统提供些好处的功能。特别是能够保护操作系统的代码不被操作系统之上的应用程序破坏的功能。这就是所谓的保护二字的涵义。还有对多任务的支持等。CPU工作在保护模式下,又分出了4个特权级别,目的是便于操作系统对其上的应用程序进展管理。所谓的ring0~ring3。windows操作系统只用到了两个,ring0和ring3。ring0下的代码可以让CPU做任何可以做的事儿,ring3有很多限制。操作系统引导后,抢先把自己置成ring0状态,同时,对操作系统之上的程序他有选择的设置他们的级别。例如设备驱动,一般它们被操作系统置成ring0,而普通的应用程序被置成ring3.在这里要树立一个概念。从程序员角度来看,操作系统可以看成对CPUISA层的一个扩展。即:操作系统为ISA层增加了新的"指令〞和功能。事实上,很多操作系统是固定在硬件里的,例如网络交换机和有些路由器等。有了这个概念,就很容易理解以后MASM为何要分对"ISA层〞编程还是对"ISA加操作系统〞编程。第二节,介绍处理器的内存管理模式早期的CPU无所谓内存管理模式,程序指定绝对的内存地址,处理器到这个地址抓指令参数。现在CPU都不这样了〔当然,CPU工作在实模式下,仍然是这样〕。这样对内存没有任何处理,既不利于对CPU之上操作系统对程序的控制,同时,也不利于程序的编程和移植。所以IA-32CPU增加了内存管理模块,即:M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论