当前位置:文档之家› 工程学院汇编语言程序设计实验教程

工程学院汇编语言程序设计实验教程

汇编语言实验教程一、常用DOS命令1. 进入虚拟DOS选中开始菜单中的“运行”命令,输入cmd 后按确定,可以进入虚拟DOS环境。

如图所示:打开窗口后,可以在属性中修改字体大小、颜色和窗口大小。

并且可以用组合键ALT+ENTER进行窗口最大化。

2. 常用DOS命令(1)查看目录命令DIRC:\>dirC:\>dir/w(2)显示文件内容命令TYPEC:\>type test.asm(3)文件拷贝命令COPYC:\>copy sa.asm sd.asm 将文件sa.asm拷贝为sd.asm(4)改变盘符命令C:\>e:结果为:E:\>(5)进入下一级目录C:\>cd 子目录名例如:C:\>cd masm5得:C:\masm5>(6)改变目录例如:C:\>cd windows\temp得:C:\>windows\temp>(7)退到上级目录例如:C:\>masm5>abc>cd..得:C:\>masm5(8)退到根目录例如:C:\>masm5>cd\得:C:\>(9)清屏例如:C:\>cls3. DOS下常用快捷健(1)清除当前命令行:ESC(2)输入上次输入的命令:F5(3)显示曾经输入的所有命令供选择并执行:F7(4)搜索命令的历史记录,循环显示所有曾经输入的命令,直到按下回车键为止:F8 【技巧1】虚拟DOS下复制粘贴方法在窗口上点击鼠标右键,选择“标记”后可以用鼠标选择需要复制的字符,点一下右键,然后在光标处点右键选“粘贴”即可。

【技巧2】虚拟DOS窗口增加滚动条在虚拟DOS窗口中选属性->布局-> 屏幕缓冲区大小->将“高度”改为80以上。

二、程序的编辑、编译和链接下面我们完整的完成一个实验,实验要求为在计算机屏幕上显示一个字符串“HELLO!”,具体步骤如下。

1. 调用文本编辑软件建立源程序.ASM文件。

利用Windows2000操作系统附件中的“记事本”编辑以下源程序。

命名为:Test1.ASM,该程序的功能是在计算机屏幕上显示一个字符串“HELLO!”。

DATA SEGMENTS1 DB ‘HELLO!’,‘$’DATA ENDSSTACK SEGMENT PARA STACKDB 64 DUP(?)STACK ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AH,09HMOV DX,OFFSET S1INT 21HRETMAIN ENDPCODE ENDSEND S TART2. 调用汇编程序MASM对源程序汇编产生.OBJ文件。

在C:〉提示符下键入MASM Test1.ASM(回车)执行上述操作命令之后将在屏幕上显示如下信息:Microsoft(R) Macro Assembler Version 5.00Copyright(C) Mirosoft Corp 1981-1985,1987.All rights reservedObject filename[Test1.OBJ]:(回车)Source listing[NUL.LST]:(回车)Cross reference[NUL.CRF]:(回车)50678 + 410090 Bytes symbol space free0 warning Errors0 Severe Errors在汇编过程中,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。

在汇编过程中还会产生列表文件和交叉引用文件。

列表文件的后缀为.LST,主要用于给出源程序和机器代码程序的清单,以供检查程序使用。

交叉引用文件的后缀为.CRF,它是一个为源程序所引用的各种符号进行前后对照的文件,主要用于给出不同程序段中互相引用的全部符号列表。

这两个文件是可有可无的,如果不需要生成这两个文件,可以在汇编过程中直接按回车跳过。

列表文件有两部分内容。

在第一部分源程序中,最左列是数据或指令在该段从0开始的相对偏移地址,向右依次是指令的机器代码字节个数、机器代码和汇编语言语句。

机器代码后有字母"R"表示该指令的立即数/位移量现在不能确定或是只是相对地址,它将在程序连接或进入主存时才能定位。

带有“*”的处理器指令是由前面一条伪指令产生的,采用/Sg选项时的列表文件才罗列。

如果陈序中有错误(ERROR)或警告(W ARMING),也会会在相应位置提示。

列表文件的第二部分是标示符使用情况。

对段名和组名给出他们的名字(NAME)、尺寸(Size)、长度(Length)、定位(Align)、组合(Combine)和类别(Class)属性;对符号给出他们的名字、类型(Type)、数值(Value)和属性(Attr)。

采用简化段定义格式,有许多汇编系统的预定义标示符,例如@DATA等。

【小技巧】输入“MASM test1; ”(后面加个分号)可以省去中间文件生成的3次提示而直接生成.obj文件3. 调用链接程序LINK对目标文件进行链接产生可执行文件。

在C:〉提示符下键入LINK Test1(回车)执行上述命令后将在屏幕上显示如下信息:Microsoft(R) Overlay Linker Version 3.6Copyright(C) Mirosoft Corp 1983-1987.All rights reservedRun File[Test1.EXE]List File[NUL.MAP]:Libraries[.LIB]:在汇编过程中形成了目标文件(.OBJ),但是在该文件中,只是将源程序的操作码部分变成了机器码,而地址操作数还是可浮动的相对地址,不是实际地址,浮动地址需要再定位。

只有经过链接过程才能形成最后的可执行文件。

链接程序的功能就是把一个或多个目标文件合并成一个可执行文件,其后缀为.EXE。

其实在链接过程中一共形成两个文件:第一个是可执行文件(.EXE)。

默认的可执行文件名字与源程序文件相同,也可以根据用户要求进行修改可执行文件的名字。

链接过程中形成的第二个文件是内存映像文件(.MAP),它给出了每个段的地址分配情况和长度。

如果不需要该文件则可以在链接命令执行时直接键入回车键。

在链接过程中还与一个库文件(.LIB文件)相关。

一般的汇编程序不需要库文件。

但是当汇编语言与高级语言(如C语言)接口时需要用到库文件。

此时输入相应的库文件名字即可。

映像文件也是一种文本文件,含有每段在存储器中的分配情况。

映像文件中首先给出了该程序各个逻辑段的起点(Start)、终点(sTOP)、长度(Length)、段名(Name)和类别(Class);然后是段组(GROUP)位置和组名;最后提示程序开始执行的逻辑地址。

注意,这里的起点、终点和段地址是以该程序文件开头而言的相对地址,实际的绝对地址需要在程序进入主存后确定。

【小技巧】输入“LINK test1; ”(后面加个分号)可以省去中间文件生成的2次提示而直接生成可执行文件4. 运行可执行文件。

在C:〉提示符下键入Test1(回车),在屏幕上将显示出“1”这个数字。

三、调试工具DEBUG介绍1.调试程序DEBUG的特点如果汇编语言的源程序中存在一些语法或格式上的错误,在汇编和链接过程中都可以发现并得到纠正。

但是如果在源程序中存在着算法错误和逻辑错误,那就只有在调试过程中才能发现并纠正了。

常用的调试工具软件是DEBUG。

DEBUG提供了修改寄存器、内存单元内容的命令,可以很方便的修改寄存器、内存单元的内容,为调试程序、修改程序带来了方便。

在DEBUG状态下,还为用户提供了调试、控制测试的环境。

用户可以在此环境下进行编辑、调试、执行一些简单的汇编程序。

由于DEBUG有显示命令。

通过显示命令,用户可以观察某个内存单元的内容、CPU内部某个寄存器的内容。

并可以根据这些内容的变化情况分析、调试程序。

调试程序debug具有如下功能特点:1.装入,显示或修改任何文件(带任何扩展名的文件);2.执行DOS程序;3.测试和调试程序4.完成磁盘实际读/写操作;5.建立、汇编汇编语言源程序或反汇编可执行文件。

2.DEBUG的命令格式DEBUG.EXE是DOS提供的可用于调试可执行程序的一个工具软件,也是可用于汇编语言程序设计的一种调试工具。

调试程序DEBUG.EXE是版本有关的,不同版本的操作系统具有不同的文件(功能一样)。

纯DOS操作系统,DEBUG.EXE在DOS目录下;Windows 9x 操作系统,使用Windows文件夹下command子文件夹的DEBUG.EXE文件;Windows 2000/XP操作系统,使用WINNT文件夹下system32子文件夹的DEBUG.EXE文件。

需要说明的是,windows操作系统中要使用debug.exe进行程序调试,必须进入到虚拟DOS 中,具体方法是在运行对话框中输入“cmd”后回车即可。

然后,在DOS的提示符下,可键入如下命令启动Debug调试程序:DEBUG [[drive:][path]filename[.exe][parameters]]命令中各字段含义如下:Drive:DEBUG将要调试的文件所在的磁盘驱动器。

Path:查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。

filename[.exe]:DEBUG将要调试的文件名。

如果用户键入文件名,则启动DEBUG的同时还将指定的文件装入存储器中,用户可对其进行调试,如果未键入文件名,则用户可用当前存储器的内容工作,或者用DEBUG命令N和L将需要的文件装入存储器后再进行调试。

parameters :运行被调试的程序(或文件)时所需的命令行参数。

在DEBUG程序调入后,将出现提示符“-”,此时就可用DEGUG命令来调试程序。

说明:(1) 运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段,即DEBUG程序后的第一个段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部或暂驻部分的结束地址(其中较小的那个地址);指令指针寄存器IP置为0100H(程序段前缀PSP后的第一个语句);状态标志都是清0状态。

(2) 运行Debug程序时,如果载入的被调试程序扩展名不是.EXE(如debug hello.asm),则BX、CX包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。

相关主题