您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 实验1指导实验环境的建立和程序的编译
实验1指导:实验环境的建立和程序的编译、调试和运行一、实验环境的建立(一)下载工具文件下载工具软件:请上或者下载以下两个压缩文件:(1)编译器MASM6.15(MASM615.rar)(2)编辑工具TextPad(TextPad.rar)分别对上述文件进行解压缩。其中编译器解压到MASM615文件夹内;TextPad解压到TextPad文件夹内。(二)编译器的安装我们上机安装的编译工具为:MicrosoftMacroAssemblerversion6.15。安装的步骤只需将MASM615该文件夹及其所有文件移动到E:\内即可。注意,实验室内将所有的程序都安装到E:\盘。(三)编辑工具的安装和设置1TextPad的安装安装的过程相当简单,只需安装的提示进行缺省安装即可,但是值得注意的是安装路径设置为E:\盘。我们设定的安装目录为:E:\ProgramFiles\TextPad42编辑环境的设置:我们希望TextPad能够提供和VisualC++差不多的编辑环境,下面我们动手来完成。预备工作:将TextPad解压文件夹内有一个文件为:MASM6.syn,把该文件复制到E:\ProgramFiles\TextPad4\System中。从Configure菜单中,选择NewDocumentClass…,弹出添加设置向导,设置如下图所示,输入MASM。在下一步中,输入*.asm。选择复制到System目录下的文件名MASM6.syn。下一步,设置完成。最后,我们可以从ConfigurePreference中找到对应的文件类别,设置编辑时显示的字号大小等。最后,利用我们得到的编辑环境效果,如下图所示。3编译调试环境的设置我们希望TextPad能够提供调出Dos窗口、编译和调试的工具菜单,这样对编写程序就方便多了。(1)工具Tools菜单中设定“Compile16-bitMASM”编译菜单从Configure菜单选择Preferences从面板的左侧选择Tools,点击Add按钮,选择DOSCommand…从弹出的对话框上,填写如下的内容:E:\Masm615\make16.bat$BaseName确定完成后,点击应用按钮。将上图方框内名称,改成“Compile16-bitMASM”。做法,左键点击一次后,停1秒,再次点击,变为可修改的状态即可。注意,不可输入汉字!对属性的设置如下图。至此,对应的自定义的编译菜单就可以从Tools菜单中找到。和上述的过程步骤相同,添加运行菜单和调试菜单。下面仅仅列举了上述不同的步骤。(2)运行菜单“Run16-bitMASM”的设置从弹出的对话框上,填写如下的内容:$BaseName确定完成后,点击应用按钮。然后,菜单名称改成“Run16-bitMASM”。做法,左键点击一次后,停1秒,再次点击,变为可修改的状态即可。注意,不可输入汉字!(3)调试菜单“Debug16-bitMASM”的设置:从弹出的对话框上,填写如下的内容:E:\Masm615\runCV.bat$BaseName确定完成后,点击应用按钮。然后,菜单名称改成“Debug16-bitMASM”。做法,左键点击一次后,停1秒,再次点击,变为可修改的状态即可。注意,不可输入汉字!(4)调出DOS窗口菜单“MSDos”的设置:从弹出的对话框上,填写如下的内容:cmd确定完成后,点击应用按钮。然后,菜单名称改成“MSDos”。做法,左键点击一次后,停1秒,再次点击,变为可修改的状态即可。注意,不可输入汉字!最后,安装上述的过程设置完成后,Tools菜单变为如下图所示。二、程序的编译、调试和运行(一)编辑程序利用设置好的编程工具TextPad,编辑如下的程序:步骤如下:(1)新建文件test1.asm,注意文件名的后缀为.asm。(2)编辑输入,大家可以看到输入时语句各个部分的颜色变化,提示你输入是否正确。程序输入的过程中,注意保存。TITLEmoveandaddoperations;---------------------------------------------STACKSEGMENTPARASTACK'Stack'DW32DUP(0)STACKENDS;----------------------------------------------DATASEGSEGMENTPARA'Data'FLDDDW215FLDEDW125FLDFDW?DATASEGENDS;-----------------------------------------------CODESEGSEGMENTPARA'Code'MAINPROCFARASSUMESS:STACK,DS:DATASEG,CS:CODESEGMOVAX,DATASEG;SetaddressofdataMOVDS,AX;segmentinDSMOVAX,FLDD;Move0215toAXADDAX,FLDE;Add0125toAXMOVFLDF,AX;StoresuminFLDFMOVAX,4C00H;EndprocessingINT21HMAINENDP;EndofprocedureCODESEGENDS;EndofsegmentENDMAIN;Endofprogram(二)编译和运行利用Tools菜单中,Compile16-bitMASM菜单编译程序,若程序出现错误,检查哪一行出现了问题,仔细排查错误。编译通过会产生相应的可执行文件,直接点击Run16-bitMASM,即可运行。对于该程序没有结果输出显示。(三)调试对于编译通过生成可执行文件,可以跟踪调试。直接点击Debug16-bitMASM进行调试即可。显示的窗口如下所示。一般缺省情况下,窗口分为3个组成部分:源代码窗口(Source,窗口号3):负责展示源程序代码,跟踪当前正在执行的指令;寄存器窗口(reg,窗口号7):负责展示当前各个寄存器的数值和状态;debug命令窗口(command,窗口号9):负责接收用户输入的各种debug命令;注意,窗口之间地切换,快捷键为ALT+窗口号。DOS环境下的菜单,不能用鼠标点击,利用ALT+相应菜单名称的下划线的字母。例如,Alt+F,打开File菜单。下面给出比较常用的几个常用的debug命令,有助于快捷便利地调试程序。(1)单步跟踪命令T命令T执行CS:IP指向的一条指令(2)内存内容命令D其中D命令将指定起点的内存内容展示出来使用的格式:-Dstartingaddress[length]开始的地址:segment:offset采用默认DS的偏移地址offset-DCS:1000B00:0100B823010525008BD8-03D88BCB2BC82BC0.#..%.......+.+.源代码窗口当前执行指令Debug命令窗口寄存器窗口0B00:0110EBEEC3750580CF80-EBD43C0D3400EF0A...u.......4...0B00:0120013A0602967503E9-1701B23A3814751D.:...u.....:8.u.0B00:0130803EF097017503E8-23E1E85C01ACE858....u..#..\...X(3)R查看寄存器的内容-RAX=0000BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0100NVUPEIPLZRNAPENC0B05:0100B82301MOVAX,0123注意:标志寄存器的含义:OF溢出(是/否)OVNVDF方向(减量/增量)DNUPIF中断(允许/关闭)EIDISF符号(负/正)NGPLZF零(是/否)ZRNZAF辅助进位(是/否)ACNAPF奇偶(偶/奇)PEPOCF进位(是/否)CYNC由于存在寄存器窗口,所以可以不用此命令。练习:针对上述的例子,跟踪程序的执行,查看相应的内存单元的数据变化和寄存器的变化。(4)P进行命令Proceed格式:P[=address][value]该命令与前面提到的跟踪命令T极其相似,也是用于跟踪和调试程序中的各条指令的命令,同样可以用于单条命令的跟踪,和多条命令的跟踪,不同的只是该命令对于任何指令(包括过程调用指令)均当成一条指令来处理,因此对于调试一些诸如象包括有子程序调用,BIOS、DOS功能调用等指令的程序的时候特别好用。(5)运行命令G(Go)格式:G[=address1][address2[address3]...]]说明:address1为要开始调试的程序的首地址,address2、address3...为要调试的程序的各断点(可省略),如省略,系统将执行到程序结束;如系统正常结束,则在屏幕上显示“Programterminatednormally”,同时系统复位;若系统非正常结束,则可能出现各种不可预料的后果,如系统进入死循环、重新启动等。若带有断点参数(注意:每个断点都应该是每条指令的首地址),则每当执行到该断点位置时就停下来,同时显示程序运行到断点位置时各寄存器的状态。
本文标题:实验1指导实验环境的建立和程序的编译
链接地址:https://www.777doc.com/doc-915261 .html