1、10.1 10.1 汇编语言程序设计上机概述汇编语言程序设计上机概述10.2 10.2 汇编程序汇编程序10.3 10.3 连接程序连接程序10.4 10.4 调试工具调试工具v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导10.1 10.1 汇编语言程序设计上机概述汇编语言程序设计上机概述 10.1.1 10.1.1 上机环境上机环境 为了对包括为了对包括PentiumPentium指令在内的汇编语言的源程序文件进行汇编,指令在内的汇编语言的源程序文件进行汇编,应有一台应有一台PentiumPentium以上的计算机。操作系统使用以上的计算机。操作系统使用DOS 5.0D
2、OS 5.0以上版本或在以上版本或在W Windowsindows操作系统命令提示符下进行。编辑程序可用操作系统命令提示符下进行。编辑程序可用EDITEDIT等。等。MASM 5.0MASM 5.0以上宏汇编系统,包括:以上宏汇编系统,包括:(1 1)MASMMASM:汇编程序:汇编程序(2 2)LINKLINK:连接程序:连接程序(3 3)CREFCREF:索引程序:索引程序(4 4)LIBLIB:库管理程序:库管理程序 用用DEBUGDEBUG调试程序时,假定后面的内容假定在调试程序时,假定后面的内容假定在C C盘上建立了盘上建立了MASMMASM子子目录,且上述程序都在该目录中或建立了相
3、应路径。目录,且上述程序都在该目录中或建立了相应路径。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导10.1.2 10.1.2 汇编语言源程序上机操作步骤汇编语言源程序上机操作步骤 从编写好的汇编语言源程序到计算机可以运行这个程序,中间要经从编写好的汇编语言源程序到计算机可以运行这个程序,中间要经历一些步骤。可以归纳如下:历一些步骤。可以归纳如下:1 1编辑源文件编辑源文件 根据给定的任务编写程序。一般在编辑过程中总会有错误产生,因根据给定的任务编写程序。一般在编辑过程中总会有错误产生,因此还要进行人工检查、重新编辑修改,直到所编辑的源程序认为无误为此还要进行人工检查、重
4、新编辑修改,直到所编辑的源程序认为无误为止。最后将它以一个源程序文件(止。最后将它以一个源程序文件(.ASM.ASM文件)存盘。文件)存盘。2 2汇编源程序文件汇编源程序文件 由编辑程序所建立的由编辑程序所建立的.ASM.ASM文件只是一个文本文件,计算机无法直接文件只是一个文本文件,计算机无法直接运行该文件。需要经过汇编程序的汇编,使其转换为目标代码文件。它运行该文件。需要经过汇编程序的汇编,使其转换为目标代码文件。它是通过调用宏汇编是通过调用宏汇编MASMMASM程序完成这一汇编操作的。汇编程序还将对源程程序完成这一汇编操作的。汇编程序还将对源程序进行语法检查,如发现有错,将给出错误原因。
5、程序设计者可根据它序进行语法检查,如发现有错,将给出错误原因。程序设计者可根据它分析和修改源程序,并再经过汇编,直到无误为止,此时得到的是一个分析和修改源程序,并再经过汇编,直到无误为止,此时得到的是一个目标文件(目标文件(.OBJ.OBJ)。)。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 3 3目标文件目标文件 目标文件为浮动的相对地址,是不可以直接执行的。必目标文件为浮动的相对地址,是不可以直接执行的。必须经过连接,把有关模块连接在一起构成统一的编址,从而须经过连接,把有关模块连接在一起构成统一的编址,从而为运行提供条件。在运行时,装填到内存中的具体位置由段为运行
6、提供条件。在运行时,装填到内存中的具体位置由段地址来确定。连接过程是由地址来确定。连接过程是由LINKLINK连接程序实现的。此时得到连接程序实现的。此时得到的是一个可执行文件(的是一个可执行文件(.EXE.EXE文件)。文件)。4 4运行可执行文件运行可执行文件 得到该可执行文件后,就可以直接调用运行该可执行文得到该可执行文件后,就可以直接调用运行该可执行文件。如果程序设计正确,则可获得正确的运行结果。但对于件。如果程序设计正确,则可获得正确的运行结果。但对于一个较大的程序,往往会有很多设计上的逻辑错误,不可能一个较大的程序,往往会有很多设计上的逻辑错误,不可能一次就得到正确的结果。一次就得
7、到正确的结果。返回本章首页返回本章首页v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导10.2.110.2.1汇编程序的类别汇编程序的类别 经过编辑程序所建立的汇编语言源程序,是不能直接在经过编辑程序所建立的汇编语言源程序,是不能直接在计算机上运行的,必须经过汇编、连接后才能运行。目前使计算机上运行的,必须经过汇编、连接后才能运行。目前使用的汇编程序中,主要有用的汇编程序中,主要有MicrosoftMicrosoft公司的宏汇编公司的宏汇编MASM5.0MASM5.0和和M MASM6.11ASM6.11及及BorlandBorland公司的公司的Trubo Assembe
8、r5.0Trubo Assember5.0等版本,它们的等版本,它们的基本功能是相似的,但高版本功能更强一些。另外,基本功能是相似的,但高版本功能更强一些。另外,MASM6.1MASM6.11 1系统所提供的编程集成环境系统所提供的编程集成环境PWBPWB将源程序的编辑、汇编、连将源程序的编辑、汇编、连接和运行集成在一起,也是一种不错的选择。接和运行集成在一起,也是一种不错的选择。MASM5.0MASM5.0支持支持8080386386以下以下CPUCPU的指令集,以下以的指令集,以下以MASM5.0MASM5.0为例介绍汇编程序。为例介绍汇编程序。10.2 10.2 汇编程序汇编程序 v第第
9、1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导10.2.2 10.2.2 汇编过程汇编过程 宏汇编程序是二次扫描的汇编程序,它两次从头到尾逐行扫描源程序完成汇宏汇编程序是二次扫描的汇编程序,它两次从头到尾逐行扫描源程序完成汇编过程。第一次扫描用来定义源程序每个行的相对位置。汇编程序中有一个软件编过程。第一次扫描用来定义源程序每个行的相对位置。汇编程序中有一个软件计数器,称为定位计数器或地址计数器计数器,称为定位计数器或地址计数器LCLC(Location CounterLocation Counter)。当每个段开始)。当每个段开始时,时,LCLC复位(复位(LC=0LC=0)
10、。汇编程序在逐行扫描中,)。汇编程序在逐行扫描中,LCLC按每行指令的字节数进行计数。按每行指令的字节数进行计数。读入一个源程序行后,先查看其是否为伪指令,若为伪指令则读入一个源程序行后,先查看其是否为伪指令,若为伪指令则LCLC不计数,否则将不计数,否则将指令长度(指令字节数)送指令长度(指令字节数)送L L。再检查此行语句是否有标号,若有则把标号写到。再检查此行语句是否有标号,若有则把标号写到一个符号表中,并且把现行一个符号表中,并且把现行LCLC(即为上一条指令的计数结果)赋给标号且填入符(即为上一条指令的计数结果)赋给标号且填入符号表中,然后将号表中,然后将 LC+LLCLC+LLC,
11、形成下一条指令的地址,即这条指令在段中的相对,形成下一条指令的地址,即这条指令在段中的相对位置,称为段内偏移量。若语句没有标号则直接将位置,称为段内偏移量。若语句没有标号则直接将 LCLC十十LLCLLC及其后的操作,其及其后的操作,其它行按同样的方法处理,直至扫描到它行按同样的方法处理,直至扫描到ENDEND指令时结束第一次扫描,这样通过第一指令时结束第一次扫描,这样通过第一次扫描可将源程序中的标号、变量的偏移量等填进符号表中,从而构成并得到了次扫描可将源程序中的标号、变量的偏移量等填进符号表中,从而构成并得到了各条指令的相对地址和一张符号表。在第一次扫描时还计算出了源程序机器码的各条指令的
12、相对地址和一张符号表。在第一次扫描时还计算出了源程序机器码的总长度,并可检查出一些语法错误,但不产生机器码。总长度,并可检查出一些语法错误,但不产生机器码。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 汇编程序的第二次扫描是把汇编指令翻译成机器码,它根汇编程序的第二次扫描是把汇编指令翻译成机器码,它根据汇编程序中的指令代码表找到汇编指令助记符对应的机器指据汇编程序中的指令代码表找到汇编指令助记符对应的机器指令操作码,再根据第一次扫描产生的符号表,将指令中的符号令操作码,再根据第一次扫描产生的符号表,将指令中的符号操作数在符号表中查到,并找到其偏移值,从而将每条汇编指操作
13、数在符号表中查到,并找到其偏移值,从而将每条汇编指令翻译成机器代码并写到目标程序文件中去。在第二次扫描时,令翻译成机器代码并写到目标程序文件中去。在第二次扫描时,还要进行语法检查,将第一次扫描时未检查到的语法错误查出还要进行语法检查,将第一次扫描时未检查到的语法错误查出并显示。在第二次扫描后除了产生出目标程序文件(并显示。在第二次扫描后除了产生出目标程序文件(.OBJ.OBJ)外,)外,还可根据需要产生列表文件(还可根据需要产生列表文件(.LST.LST)和交叉索引文件()和交叉索引文件(.CRF.CRF)。)。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导其中:其中:目
14、标程序文件目标程序文件其扩展名为其扩展名为.OBJ.OBJ。在这个程序文件中,。在这个程序文件中,操作码部分已变成了机器码,可由机器识别,但地址操作数部分操作码部分已变成了机器码,可由机器识别,但地址操作数部分只是一个可浮动的相对地址,而不是内存中的绝对地址。只是一个可浮动的相对地址,而不是内存中的绝对地址。列表文件列表文件其扩展名为其扩展名为.LST.LST。此文件包含源程序及其注。此文件包含源程序及其注释、地址和目标码(即汇编后的目标程序)。它们都是用释、地址和目标码(即汇编后的目标程序)。它们都是用ASCIIASCII码表示的文本文件,需要时可用编辑程序将其打开以供查阅。码表示的文本文件
15、,需要时可用编辑程序将其打开以供查阅。交叉索引文件交叉索引文件其扩展名为其扩展名为.CRF.CRF。交叉索引文件是用来。交叉索引文件是用来了解源程序中每个符号是在哪里定义的。哪些指令用到了这个符了解源程序中每个符号是在哪里定义的。哪些指令用到了这个符号,给出该指令的行号。交叉索引文件对较大的程序很有用,可号,给出该指令的行号。交叉索引文件对较大的程序很有用,可以用来帮助查错。要把交叉索引文件打印出来,必须用以用来帮助查错。要把交叉索引文件打印出来,必须用CREFCREF程序程序生成交叉索引列表文件,然后用编辑程序等查看。生成交叉索引列表文件,然后用编辑程序等查看。v第第1010章章 汇编语言程
16、序设计上机指导汇编语言程序设计上机指导10.2.3 10.2.3 操作过程操作过程 首先启动操作系统,假设首先启动操作系统,假设MASMMASM系统(以系统(以MASM5.0MASM5.0为例)已为例)已预先装在硬盘的预先装在硬盘的MASMMASM子目录中。下面均以子目录中。下面均以C C盘上操作为例进行盘上操作为例进行说明。假设事先用编辑程序编辑的源程序为说明。假设事先用编辑程序编辑的源程序为yfile.ASMyfile.ASM,则汇,则汇编过程如下:编过程如下:C C:MASMmasmMASMmasmMicrosoft(R)Macro Assembler Version 5.00Micro
17、soft(R)Macro Assembler Version 5.00Copyright(C)Microsoft Corp 1981-1985Copyright(C)Microsoft Corp 1981-1985,1987.All rights reserved.1987.All rights reserved.Source filename.ASMSource filename.ASM:MyfileMyfileObject filename.OBJObject filename.OBJ:Source listing NUL.LSTSource listing NUL.LST:Cross-r
18、eference NUL.CRFCross-reference NUL.CRF:51698+417454 Bytes symbol space free 51698+417454 Bytes symbol space free O Warning Errors O Warning Errors O Severe Errors O Severe Errors v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 宏汇编程序被调入以后,先显示版本号。然后依次提出宏汇编程序被调入以后,先显示版本号。然后依次提出提示,请求用户回答。提示,请求用户回答。第一行提问被汇编的源文件的名字,方
19、括号内表示此文第一行提问被汇编的源文件的名字,方括号内表示此文件带有后缀件带有后缀.ASM.ASM(.ASM.ASM是该源程序文件的隐含扩展名),此是该源程序文件的隐含扩展名),此时应键入将要汇编的源程序文件的名字,并按回车键。时应键入将要汇编的源程序文件的名字,并按回车键。第二行提问汇编后目标文件的名字,括号中的名字表示第二行提问汇编后目标文件的名字,括号中的名字表示约定的文件名(其文件名部分自动采用源程序文件名),若约定的文件名(其文件名部分自动采用源程序文件名),若采用这个名字则直接键入回车键,否则键入另起的名字。采用这个名字则直接键入回车键,否则键入另起的名字。v第第1010章章 汇编
20、语言程序设计上机指导汇编语言程序设计上机指导 第三行提问是否要建立列表文件。括号中的第三行提问是否要建立列表文件。括号中的NULNUL为为“空空”的的意思,表示不建立列表文件。若要建立列表文件,则需键入文件意思,表示不建立列表文件。若要建立列表文件,则需键入文件名,名字任选,也可同源程序文件名。但后缀必须为名,名字任选,也可同源程序文件名。但后缀必须为.LST.LST,后缀,后缀可由用户连同文件名一起键入,也可不键入,即自动采用隐含值。可由用户连同文件名一起键入,也可不键入,即自动采用隐含值。如果不需要建立列表文件,则在第三行提问后直接按回车键。如果不需要建立列表文件,则在第三行提问后直接按回
21、车键。第四行是询问是否要建立交叉索引文件,括号中的意义同第第四行是询问是否要建立交叉索引文件,括号中的意义同第三行,若不需交叉索引文件,可直接按回车键,否则键入交叉索三行,若不需交叉索引文件,可直接按回车键,否则键入交叉索引文件名。引文件名。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导也可以直接用下面的命令进行汇编:也可以直接用下面的命令进行汇编:C C:MASMMASM MyfileMASMMASM Myfile提示同上。提示同上。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 用用EDITEDIT编辑程序观看列表文件的操作步骤如下:编辑程序观看
22、列表文件的操作步骤如下:C C:MASMEDIT MASMEDIT 文件名文件名.LST.LST 汇编后,也可查看交叉索引文件,以了解源程序中的符号定义和引汇编后,也可查看交叉索引文件,以了解源程序中的符号定义和引用情况。其操作步骤如下:用情况。其操作步骤如下:C C:MASMCREFMASMCREFCref filename.CRFCref filename.CRF:交叉索引文件名:交叉索引文件名List filenamefilename.REFList filenamefilename.REF:C C:MASMEDIT filename.REFMASMEDIT filename.REF 在
23、第一行提示下,打入汇编时在第四行询问时所键入的交叉索引文在第一行提示下,打入汇编时在第四行询问时所键入的交叉索引文件名。件名。第二行提示,可直接回车,表示采用括号中的文件名。第二行提示,可直接回车,表示采用括号中的文件名。第三行的第三行的EDITEDIT程序就可列出交叉索引的列表文件了。程序就可列出交叉索引的列表文件了。如果在汇编时没有要求产生交叉索引文件,当然也就无需用如果在汇编时没有要求产生交叉索引文件,当然也就无需用CREFCREF产产生交叉索引文件了。生交叉索引文件了。返回本章首页返回本章首页v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导10.3.1 10.3.1
24、 连接程序的作用连接程序的作用 由汇编程序生成的目标程序文件仍然不能执行,必须经过连由汇编程序生成的目标程序文件仍然不能执行,必须经过连接程序接程序LINKLINK连接以后,才能变成可执行文件。因为目标程序文件连接以后,才能变成可执行文件。因为目标程序文件中有些指令地址还未完全确定,因此仍未成为可以用操作系统装中有些指令地址还未完全确定,因此仍未成为可以用操作系统装入的程序形式。再者可能要将几个目标文件组合成一个功能更强入的程序形式。再者可能要将几个目标文件组合成一个功能更强的实用文件,甚至要和某些高级语言的目标程序文件进行组合,的实用文件,甚至要和某些高级语言的目标程序文件进行组合,这些都要
25、由连接程序这些都要由连接程序LINKLINK来完成。通过连接程序可将若干个目标来完成。通过连接程序可将若干个目标文件连接成一个地址可浮动的、可由操作系统装入程序对地址定文件连接成一个地址可浮动的、可由操作系统装入程序对地址定位的可执行文件。位的可执行文件。10.3 10.3 连接程序连接程序 v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 这里要注意的是:连接程序这里要注意的是:连接程序LINKLINK并不仅是为汇编语言程序并不仅是为汇编语言程序所专用的。它作为所专用的。它作为MicrosoftMicrosoft的的80X8680X86目标连接程序,可将宏汇目标连接程序,
26、可将宏汇编或高级语言(例如编或高级语言(例如C C、PASCALPASCAL等)编译生成的目标文件连接在等)编译生成的目标文件连接在一起,成为一个可执行程序。并以后缀为一起,成为一个可执行程序。并以后缀为.EXE.EXE的文件方式存盘。的文件方式存盘。在操作系统命令提示符下,可直接输入该文件名来执行这个程在操作系统命令提示符下,可直接输入该文件名来执行这个程序。序。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导10.3.2 10.3.2 连接过程连接过程 在连接之前,源程序必须通过汇编或编译成为目标文件。在连接之前,源程序必须通过汇编或编译成为目标文件。在执行连接操作时,
27、以一定的格式将这些目标文件与需要的库在执行连接操作时,以一定的格式将这些目标文件与需要的库文件一起提供给连接程序。连接程序将它们的代码和数据进行文件一起提供给连接程序。连接程序将它们的代码和数据进行组合,成为可执行文件。操作系统能够利用装入程序将可执行组合,成为可执行文件。操作系统能够利用装入程序将可执行文件加载到内存的适当位置,然后运行之。注意:连接程序文件加载到内存的适当位置,然后运行之。注意:连接程序LILINKNK只能处理在只能处理在1MB1MB地址以下运行的程序。地址以下运行的程序。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导10.3.3 LINK10.3.3
28、 LINK的使用与操作的使用与操作 LINKLINK连接目标文件有两种常用的操作方式:连接目标文件有两种常用的操作方式:会话方式会话方式 命令方式命令方式 不论在哪种操作方式下,若想停止连接程序的工作,可按不论在哪种操作方式下,若想停止连接程序的工作,可按CTRL+CCTRL+C键来中断键来中断LINKLINK程序的执行。程序的执行。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导1 1会话方式会话方式 首先在含有首先在含有LINKLINK程序的软盘插入软盘驱动器中,或预先将其程序的软盘插入软盘驱动器中,或预先将其存在硬盘上。在操作系统命令提示符下键入存在硬盘上。在操作系统
29、命令提示符下键入LINKLINK,连接程序就被,连接程序就被调入。调入。LINKLINK程序将显示有关信息并依次给出提示信息请用户逐行程序将显示有关信息并依次给出提示信息请用户逐行回答。屏幕显示如下:回答。屏幕显示如下:C C:MASMLINKMASMLINKMicrosoft Microsoft(R R)Overlay Linker Version 3.60Overlay Linker Version 3.60Copyright Copyright(C C)Microsoft Corp 1985-1987.All rights reserved.Microsoft Corp 1985-198
30、7.All rights reserved.Object Modules.OBJObject Modules.OBJ:myfilemyfileRun File MYFILE.EXERun File MYFILE.EXE:List File NUL.MAPList File NUL.MAP:Libraries.LIBLibraries.LIB:WarningWarning:no stack segmentno stack segmentv第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 第一行提示要求输入目标模块名。此时应键入你要连接的第一行提示要求输入目标模块名。此时应键入你
31、要连接的目标文件名(后缀目标文件名(后缀.OBJ.OBJ可省略,可省略,LINKLINK程序自动加上程序自动加上.OBJ.OBJ为后为后缀)。若要连接的是多个目标模块时,一定要用缀)。若要连接的是多个目标模块时,一定要用“+”+”号或空号或空格将每个文件名分开。如果输入的名字一行放不下,就在该行格将每个文件名分开。如果输入的名字一行放不下,就在该行的最后输入一个的最后输入一个“+”+”号,然后按回车键,这时连接程序就提号,然后按回车键,这时连接程序就提示用户追加目标文件。所有目标文件输入完后回车。示用户追加目标文件。所有目标文件输入完后回车。第二行提示要求输入将要生成的可执行文件的文件名,括第
32、二行提示要求输入将要生成的可执行文件的文件名,括号内为号内为LINKLINK程序给出的隐含文件名,它与第一行提示中的目标程序给出的隐含文件名,它与第一行提示中的目标模块名一样,只是将后缀换成模块名一样,只是将后缀换成.EXE.EXE。若第一行回答的目标模块。若第一行回答的目标模块是多个的话,则隐含的可执行文件名取为第一个目标文件名。是多个的话,则隐含的可执行文件名取为第一个目标文件名。此行可不输入文件名而直接回车。此行可不输入文件名而直接回车。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 第三行提示问是否要建立列表(映象)文件,若要建立,第三行提示问是否要建立列表(映象
33、)文件,若要建立,可键入列表文件名,这时可不输入扩展名,由可键入列表文件名,这时可不输入扩展名,由LINKLINK程序自动按程序自动按隐含值隐含值.MAP.MAP为扩展名。如果不想要列表文件,此行提示时直接为扩展名。如果不想要列表文件,此行提示时直接按回车键即可。按回车键即可。第四行提示问是否需要连接库文件。若不需要,则直接按第四行提示问是否需要连接库文件。若不需要,则直接按回车键。所谓库文件,是一些经常使用的目标文件的集合。它回车键。所谓库文件,是一些经常使用的目标文件的集合。它是为了提高效率,为了调试的方便而建立的。宏汇编语言可以是为了提高效率,为了调试的方便而建立的。宏汇编语言可以把一些
34、经常使用的子程序段单独汇编。这些单独汇编和调试的把一些经常使用的子程序段单独汇编。这些单独汇编和调试的程序作为外部子程序,将它们以目标文件的形式存储起来而成程序作为外部子程序,将它们以目标文件的形式存储起来而成为一个文件库。可把若干个目标文件集中起来,组成一个文件为一个文件库。可把若干个目标文件集中起来,组成一个文件库,由库管理程序库,由库管理程序LIBLIB对其进行编辑管理。对其进行编辑管理。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导【例【例10.1 10.1】连接目标模块】连接目标模块ex1.OBJex1.OBJ,ex2.OBJex2.OBJ,ex3.OBJex3
35、.OBJ建立一个建立一个名为名为ex1.EXEex1.EXE的可执行文件。的可执行文件。操作如下操作如下:C C:MASMLINKMASMLINKMicrosoft Microsoft(R R)Overlay Linker Version 3.60Overlay Linker Version 3.60Copyright Copyright(C C)Microsoft Corp 1985-1987.All rights reserved.Microsoft Corp 1985-1987.All rights reserved.Object ModulesOBJObject ModulesOBJ:
36、ex1+ex2+ex1+ex2+Object Modules.OBJObject Modules.OBJ:ex3/pauseex3/pauseRun FileEX1.EXERun FileEX1.EXE:List FileNUL MAPList FileNUL MAP:Libraries.LIBLibraries.LIB:v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 第一行目标模块没输完,最后键入第一行目标模块没输完,最后键入“+”+”号,则号,则LINKLINK程序。程序。第二行继续提示输入目标模块。第二行末尾的第二行继续提示输入目标模块。第二行末尾的”/pause”
37、/pause”为为LINKLINK程序的可选择的参数项。这里键入了这个参数,表示当程序的可选择的参数项。这里键入了这个参数,表示当几个目标模块不在一张磁盘上时,连接过程中需要换盘。在换几个目标模块不在一张磁盘上时,连接过程中需要换盘。在换盘时此参数可使连接程序暂停,待换好盘后继续执行。盘时此参数可使连接程序暂停,待换好盘后继续执行。第三行键入回车表示执行程序名选择括号里提示的名字。第三行键入回车表示执行程序名选择括号里提示的名字。第四行键入回车表示不建立列表文件。第四行键入回车表示不建立列表文件。第五行键入回车表示连接过程中不需要用文件库中的目标第五行键入回车表示连接过程中不需要用文件库中的目
38、标模块。模块。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导【例【例10.2 10.2】连接目标模块】连接目标模块ex1.OBJex1.OBJ,ex2.OBJex2.OBJ程序时用到了程序时用到了A A驱动驱动器上器上LIBLIB目录下的库文件目录下的库文件EX.LIBEX.LIB,可执行文件名为,可执行文件名为exa.EXEexa.EXE,建立,建立一个名为一个名为aaa.MAPaaa.MAP的映象(列表)文件。的映象(列表)文件。操作过程:操作过程:C C:MASMLINKMASMLINKMicrosoft Microsoft(R R)Overlay Linker V
39、ersion 3.60Overlay Linker Version 3.60Copyright Copyright(C C)Microsoft Corp 1985-1987.All rights reserved.Microsoft Corp 1985-1987.All rights reserved.Object Modules.OBJObject Modules.OBJ:ex1+ex2ex1+ex2Run File EX1.EXERun File EX1.EXE:exa.exeexa.exeList File NUL-MAPList File NUL-MAP:aaaaaaLibraries
40、.LIBLibraries.LIB:a a:libex libex 注:关于库文件的建立方法见注:关于库文件的建立方法见10.3.410.3.4节。节。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 目前常用的汇编语言调试工具主要有目前常用的汇编语言调试工具主要有DEBUGDEBUG、Code ViewCode View及及Turbo DebugerTurbo Debuger等,其中等,其中DEBUGDEBUG通过单步、设置断点等方式为汇通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。编语言程序员提供了非常有效的调试手段。10.4 10.4 调试工具调试
41、工具 v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导10.4.1 DEBUG10.4.1 DEBUG程序的调用程序的调用 在操作系统的命令提示符下,可键入命令:在操作系统的命令提示符下,可键入命令:C C:MASMDEBUG dMASMDEBUG d:PATHfilename.extparm1PATHfilename.extparm1parm2parm2 其中,文件名是被调试文件的名字。如用户键入文件名,其中,文件名是被调试文件的名字。如用户键入文件名,则则DEBUGDEBUG将指定的文件装入存储器中,用户可对其进行调试。将指定的文件装入存储器中,用户可对其进行调试。如果
42、未键入文件名,则用户可以用当前存储器的内容工作,或如果未键入文件名,则用户可以用当前存储器的内容工作,或者用者用DEBUGDEBUG命令命令N N和和L L把需要的文件装入存储器后再进行调试。把需要的文件装入存储器后再进行调试。命令中的命令中的d d指定驱动器,指定驱动器,PATHPATH为路径,为路径,parm1parm1和和parm2parm2则为运行则为运行被调试文件时所需要的命令参数。被调试文件时所需要的命令参数。在在DEBUGDEBUG程序调入后,将出现提示符程序调入后,将出现提示符“”,此时就可用,此时就可用D DEBUGEBUG命令来调试程序。命令来调试程序。v第第1010章章
43、汇编语言程序设计上机指导汇编语言程序设计上机指导10.4.2 DEBUG10.4.2 DEBUG的主要命令的主要命令1 1显示存储单元的命令显示存储单元的命令D D(DUMPDUMP),),格式为:格式为:-Daddress-Daddress或或-Drange-Drange例如,按指定范围显示存储单元内容的方法为:例如,按指定范围显示存储单元内容的方法为:-D100 120-D100 12018E4:0100 72 6F 72 20 72 0D 61 64-69 6E 67 20 64 72 69 76 ror r.ading driv18E4:0100 72 6F 72 20 72 0D 6
44、1 64-69 6E 67 20 64 72 69 76 ror r.ading driv18E4:0110 73 75 24 66 69 63 69 65-6E 74 20 6D 65 6D 6F 72 su.ficient memor18E4:0110 73 75 24 66 69 63 69 65-6E 74 20 6D 65 6D 6F 72 su.ficient memor 其中其中0100H0100H至至011FH011FH是是DEBUGDEBUG显示的单元内容。左边用显示的单元内容。左边用1010六进制表示六进制表示每个字节,右边用每个字节,右边用ASCIIASCII字符表示每个
45、字节,字符表示每个字节,“.”.”表示不可显示的字符。表示不可显示的字符。这里没有指定段地址,这里没有指定段地址,D D命令自动显示命令自动显示DSDS段的内容。如果只指定首地址,段的内容。如果只指定首地址,则显示从首地址开始的则显示从首地址开始的8080个字节的内容。如果完全没有指定地址,则显个字节的内容。如果完全没有指定地址,则显示上一个示上一个D D命令显示的最后一个单元后的内容。命令显示的最后一个单元后的内容。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导2 2修改存储单元内容的命令修改存储单元内容的命令E E(EnterEnter)此命令有两种格式如下:第一种格
46、式可以用给定的内容表此命令有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:来替代指定范围的存储单元内容。命令格式为:-E address list -E address list 例如例如,-E ds-E ds:100 F5 OK 78100 F5 OK 78 其中其中F5F5,OO,KK和和7878各占一个字节,该命令可以用各占一个字节,该命令可以用这五个字节来替代存储单元这五个字节来替代存储单元DS DS:01000100到到01040104的原先的内容。的原先的内容。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导 第二种格式则是
47、采用逐个单元相继修改的方法。命令格式为:第二种格式则是采用逐个单元相继修改的方法。命令格式为:-E adress-E adress 例如,例如,-E es-E es:100100 则可能显示为:则可能显示为:18E418E4:0100 89.-0100 89.-如果需要把该单元的内容修改为如果需要把该单元的内容修改为7878,则用户可以直接键入,则用户可以直接键入7878,再按再按“空格空格”键可接着显示下一个单元的内容,如:键可接着显示下一个单元的内容,如:18E418E4:0100 89.78 1B.-0100 89.78 1B.-这样,用户可以不断修改相继单元的内容,直到用这样,用户可以
48、不断修改相继单元的内容,直到用EnterEnter键键结束该命令为止。结束该命令为止。v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导4 4检查和修改寄存器内容的命令检查和修改寄存器内容的命令R R(RegisterRegister)它有三种格式如下:它有三种格式如下:(1 1)显示)显示CPUCPU内所有寄存器内容和标志位状态,其格式为:内所有寄存器内容和标志位状态,其格式为:-R -R 例如:例如:-R -RAX=0000 BX=0000 CX=010A DX=0000 SP=FFFE EP=0000 SI=0000 AX=0000 BX=0000 CX=010A DX
49、=0000 SP=FFFE EP=0000 SI=0000 DI=0000DI=0000DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NCPO NC18E418E4:0100 C7 0604023801 MOV WORD PTR 02040100 C7 0604023801 MOV WORD PTR 0204,0138 DS0138 DS:020204=013804=0138 其中标志位状态的含义如下:其
50、中标志位状态的含义如下:v第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导表表10.1 DEBUG 10.1 DEBUG 中标志位的符号表示中标志位的符号表示标志名称溢出OF方向DF中断IF符号SF零ZF辅助进位AF奇偶PF进位CF置位状态OVDNEINGZRACPECY复位状态NVUPDIPLNZNAPONCv第第1010章章 汇编语言程序设计上机指导汇编语言程序设计上机指导(2 2)显示和修改某个寄存器内容,其格式为:)显示和修改某个寄存器内容,其格式为:-R register name-R register name 例如,键入例如,键入 -R AX-R AX 系统将响
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。