《计算机组成原理与汇编语言程序设计实验指导书.doc》由会员分享,可在线阅读,更多相关《计算机组成原理与汇编语言程序设计实验指导书.doc(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流计算机组成原理与汇编语言程序设计实验指导书.精品文档.计算机组成原理与汇编语言程序设计实验指导书闽江学院计算机科学系计算机组成原理与汇编语言程序设计课程组 编著2008年8月目录第一章 汇编语言程序设计实践操作软件简介21.1 汇编语言程序的上机操作过程21.2 编辑程序31.3 汇编程序(MASM)101.4 连接程序131.5 调试程序181.6 上机实践常用的系统功能调用351.7 汇编语言和PC-DOS(或MS-DOS)操作系统的接口38第二章 CCTIV计算机组成原理实验指导及实验报告40实验一运算器实验算术逻辑运算实验40实验二存
2、储器实验44实验三微控制器实验48实验四基本模型机设计与实现56第三章 汇编语言程序设计实验指导及实验报告64实验一 汇编语言编程的软件实训64实验二 与数据有关的寻址方式操作练习66实验三 加法运算编程实践69实验四 算术运算编程实践(报告)71实验五 将ASCII码表示的八位二进制数转换成一字节二进制数并在屏幕上显示出结果72实验六 二进制数与十六进制数间的转换程序设计75实验七 十进制数转换成十六进制数76实验八循环程序设计(一)77实验九 循环程序设计(二)78实验十 循环程序设计(三)80实验十一 分支程序设计(一)81实验十二 分支程序设计(二)83实验十三 子程序结构程序设计84
3、实验十四 子程序设计85实验十五 汇编程序综合设计86第四章 CCTIV计算机组成原理与汇编语言程序设计课外实验指导及实验报告87实验一 运算器实验进位控制实验87实验二带移位运算的模型机的设计与实现91实验三复杂模型机的设计与实现99实验四可重构原理计算机组成设计实验(一)108实验五 可重构原理计算机组成设计(二)111实验六扩展8225并行口实验115实验七PLD应用实验120实验八 菜单的设计123实验九 彩色字符的显示124附录:ASCII码表125第一章 汇编语言程序设计实践操作软件简介汇编语言程序设计是一门实践性很强的课程。编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程
4、序设计的必要手段。建立程序、调试程序需要一些相应软件的帮助。1.1 汇编语言程序的上机操作过程1.1.1 运行汇编语言程序所需的应用程序本课程的实验所用计算机为IBMPC及其兼容机。操作系统使用MS-DOS20以上版本。编辑程序可用EDIT.COM、EDLIN、全屏幕编辑程序QE或其它可用于文件编辑的软件如记事本等。汇编程序可用宏汇编程序MASM 50以上版本,或汇编程序ASM。连接程序使用LINK程序。调试程序使用DEBUG程序,Turbo Debugge源代码调试器(TD)上述软件可复制到磁盘上。在对汇编语言源程序进行操作时,可调用盘上有关程序。1.1.2 汇编语言源程序上机操作过程从编写
5、汇编语言源程序到计算机可以运行该程序,大体上可以归纳为如图11所示的一些步骤。1 编辑源文件根据给定的任务可在计算机上通过编辑程序建立源程序。一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以至重新编辑,直到所编辑的源程序认为无错误为止。把它以一个源程序文件(ASM文件)存盘。注意:这个源程序文件的扩展名一定要用.ASM,否则汇编时,文件将打不开。2 汇编源程序文件由编辑程序所建立的源程序文件,只是个文本文件,计算机无法执行。需要经过汇编程序的汇编,使其转化为目标代码文件。它是通过调用宏汇编MASM程序(或小汇编程序ASM)完成这一汇编任务的。汇编程序还将对源程序文件进行语法检查,如
6、发现有错,将给出错误信息。程序设计者可根据它分析和修改源程序,并再经过汇编,直到无语法错误时为止,此时才可能产生目标文件(扩展名为.OBJ文件)。 开始 建立源文件 Y 检查有错码? N .ASM文件存盘 修改源程序 调MASM程序 汇编源文件 Y 语法有错? N .OBJ文件存盘 调LINK程序, 连接目标文件 Y 连接有错? N .EXE文件存盘 执行.EXE文件 用DEBUG查错 Y 结果有错? N 结束 图11 源程序上机过程示意图3 连接目标文件目标文件(.OBJ)为浮动的相对地址,是不可直接执行的。必须经过连接,把有关模块连接在一起。构成统一的编址,从而为运行提供了条件。在运行时,
7、装填到内存中的具体位置由段地址来确定。连接过程是由LINK连接程序实现的。连接后可得到一个可执行文件(扩展名为.EXE文件)。4 运行可执行文件得到可执行文件后,就可以直接从盘上调到内存中,在DOS狀态下运行。如果程序设计正确,则可获得正确的运行结果。但若为一个较大的程序,往往会有很多设计上的逻辑错误,不太可能一次就得到成功的结论。对于较简单的程序,一般通过分析源程序就会找出错误的原因,但对于比较复杂的程序,有时光靠人工分析是较难发现问题的所在。此时就需要借用调试程序(如DEBUG程序或Turbo Debugger)来调试了。在DEBUG调试程序控制下,可通过设置单步或断点等方法显示有关存储单
8、元或寄存器内容,从而较容易地找到程序中的错误。总之,为调试一个汇编语言的源程序,往往要经过多次反复地查错、改错,最后才能达到预期的目的。我们无论是编写程序还是上机实踐,都应该细心、耐心。经过一段时间的练习,会达到较为自由的境地。熟能生巧,方能举一反三。1.2 编辑程序编写好一个程序,要想在计算机中调试、运行,必须要有一个程序来支持程序的编辑、修改等操作。这种支援程序称为编辑程序。编辑程序有很多种,但按功能划分,主要有两大类。一类是行编辑程序,例如大家熟知的EDIT编辑程序。另一类是全屏幕编辑程序。全屏幕编辑程序较为方便、灵活。在编辑汇编语言的源程序时,可以使用大家已熟悉的EDIT程序编辑,也可
9、以使用下面将做为一个例子介绍的全屏幕字处理程序quik Edit (缩写QE)。全屏幕编辑程序有几种,读者可根据自己的需求而选用编辑程序。1.2.1 编辑程序QE的特点1 快速。主要表现在以下操作比较快速:(1) 从磁盘上读取文件;(2) 显示更改屏幕信息;(3) 移动编辑窗口;(4) 寻找文本区;(5) 写盘操作。2 易于操作。提供弹出式窗口功能,使用起来易于操作,用户可任意配置帮助窗口,系统提供键盘宏定义功能。3 简洁。系统占空间较小,仅占47KB空间。4 提供多窗口。多个文件同时操作功能,文件之间相互移植比较方便。5 系统适用范围广。可适用于IBM兼容机等。内存最小128KB,在PC-D
10、OS或MS-DOS2。0以上操作系统中均可使用。在上述特点中,较为突出的是QE的快速性和它的系统配置的灵活性,因此,采用QE作为编辑程序也可提高工作效率。1.2.2 QE的进入和菜单说明1QE的进入(以启动驱动器A为例说明) 将包含QE文件的工作磁盘插入驱动器A。进入QE有两种选择方式 方式1:直接打入命令: A:QE ;屏幕显示开启菜单: File(s) to edit: 注:图中方块代表光标所在位置,可键入文件名。此时,如果按ESC键,则退出QE,返回DOS。如果想编辑一个程序,直接打入文件名再按回车,即可进入QE编辑状态。如盘中无此文件,QE认为是新文件,则可从头编辑一个新文件。如盘中有
11、此文件,进入QE后,此文件即在屏幕上显示出来。如下图所示: L1 C1 Ins Indent A:myprog.asm TITLE BELL-CLOCK ;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = STAK SKGMENT PARA STACKSTACK DB 256 DUP(O) STAK ENDS ;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = DATA SEGMENT PARA PUBLIC DATA ADR1 D
12、W OABCDH, 2345HADR2 DW 3678H,6589H 如直接打入回车键,屏幕弹出如下窗口: A:*.* . masm exelink exeqe exeqedit docqhelp txlal asma2 asm可用上下光标键选择所要编辑的文件,按回车即进入编辑状态:L1 C1 Ins Indent R W30 A:al.asmTITLE BELL_CLOCK; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = STAK SEGMENT PARA SRACK STACK DB 25
13、6 DUP(0)STAK ENDS ;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = DATA SEGMENT PARA PUBLLC DATAADR1 DW 0ABCDH,2345HADR2 DW 3678H,6589H 第一行是状态行,它将提示:(1) 当前光标所在的行号L和列号C;(2) 当前光标是否是处于插入状态(INSERT ON);(3) 是否处于缩排状态;(4) 宏记录开关状态;(5) 右边界值; (6) 被编辑文件路径和文件名。 屏幕的其余部分作为文本编辑区,可以一行行的输入程序,也
14、可以任意移动光标到任一行和任一列,还可进行任意删、插、修改等,操作甚为方便。 方式2:在QE名后跟着文件名,如: A:QE al.asm 则直接进入QE,可以进行编辑操作。字符大小写可以混合使用。 2QE的命令窗口菜单 对于初用QE的读者来说,QE本身的一个显著优点是其提供了弹出式窗口命令菜单,供用户选择使用。只要按下ESC键,屏幕上将出现一条主菜单栏,再用光标键选择中心词,就可执行相应的命令功能。对应于主菜单栏的每部分功能分别为:文件操作、窗口操作、块操作、查找操作、打印功能、宏定义操作、编辑操作、其它操作和退出操作。若在Windows下可借助鼠标来选择菜单。1.2.3 文本的编缉1 输入文
15、本 可以通过键盘一行行的输入文本,也可以在屏幕的任意位置输入,直到输入完毕为止,如果发现输入有错,可随时进行修改。2 文本内容的插入 使用插入方法可在文本需要的地方,插入一个字符,一个字,一行或若干行新的文本内容。 进行文本的插入前,需看状态行里是否显示有INSERT ON。如果没有出现,按或键,使插入软件开关处于ON状态,然后移动光标到适当位置、打入插入文本内容。例如要在 MOV AL,FAH中FAH前插入的步骤是:() 按V或,使状态行显示INSERT ON。() 移动光标,将光标停在FAH中的F下面。() 打入0,文本就变成: MOV AL,0FAH插入结束后,再按一次V ( 表示Ctr
16、l键)或键,使状态行INSERT ON消失,以便进行其他操作。3 文本内容的删除 可以删除一个字符,一个字,一行或若干行甚至整个文件。删除前,一定要给光标定位,所有修改、插入、删除操作均取决于光标当前位置。 (1)删除一个字符假设要将This is a white book。变成 This is a book。步骤为: 移动光标至white的W处; 按G或键5次,便删除了white。(2)删除字删除字符时,如要将white删除,则需按5次G,才能实现,其实white是一个单字, 只要按一次T就可以删除。做法是将光标移至W处,按一次T,便删除了white及跟在后面的空白字符(标点符号不在删除之内
17、)。 (3)删除文本行 Y删除文本中光标所在的整个一行字符。 QT删除从光标到该行右端所有字符。 若要删除文本中的若干行,可连续按Y。若使用文本块操作,只要将删除的文本部分前后加上块标记(见后),按下KY就可以迅速删除。 4查找功能 执行查找功能步骤如下:(1) 按QF,请求查找。(2) 屏幕上显示出提示信息如下: Search For:Esc=abort要求你输入所要查找的信息。输入完后,按回车键,系统又显示如下信息:Option IWB I 此时,用户可输入I,B或W任选项,来改变查找方式。其中:I代表查找过程不区分大小写。B代表向后查找。W代表查找过程是按“字”查找。 (3)按Enter
18、键,光标定位在第一个要查找的字符串处,即光标指向第一个字的字母位置下,这时可对它进行需要的编辑工作,如插入、删除、修改等。 (4)按L,继续往下查找,光标定位到下一个字处。 (5)重复(4),整个文件查找完毕后为止。 5替换工能 替换操作的步骤为:(1) 按QA,请求查找并替换;(2) 出现要替换的提示,输入后,按回车键;(3) 屏幕上又出现要求输入替换内容的提示change TO;按回车键,提示选择IBW,回答后,按回车键。(4) 输入完后,按Enter键,光标定位在第一个要替换的字第一个字符处,按回车键后,字将被替换;(5) 按L;可继续查找下一个字;(6) 重复,一直替换完毕为止。 上述
19、查找和替换过程,是从整个文本中一个一个找出指定字符串进行的,属于会话方式。在选择查找方式中,有下列选择。 I:不分大小写; W:整字查找; B:向后查找;N:替换时不回答。6文本块操作QE允许移动、复制、删除一个文本块。文本块是预先用命令定义的文本内容的一部分。一个文本块可以是一个句子、一段文章或整篇文章。文本块简称为块。块命令能够简化许多编辑工作。例如,文章的相互引用,部分内容前后移动位置等,都可以借助于块操作来完成。(1) 块的定义 文件块其长度可以从一个字到若干页,可以以块为单位进行传送、复制、删除,还可以把它作为一个新文件进行存盘。或把另一个文件当作块读入当前文件。一次只能定义一个块。
20、块的大小是指以块首到块尾标记所包含的文本内容。(2) 设置块标记设置块首标记的步骤: 将光标移到需要作为块内容的开始位置。 按KB(或F7),这时块开始处将被标记。设置块尾标记的步骤: 将光标移到需要作为块内容的结束位置。 按KK(或F8),该块结束处被标记。在Windows下,由操作鼠标完成块定义。 用户只要执行了设置块首、块尾标记,即可对块进行各种操作。如想迅速移光标到块首或块尾处,可按QB或QK。取消块标记(KH)设置好的块首、块尾标记,可以通过按KH使块标记隐去。使用块操作需要注意以下几点:每次文本中只能定义一对块标记;块操作要求文本中的块首标记放在块尾标记之前; 定义块后,可以执行其
21、它命令; 只有进行块定义后,才可执行块的操作命令。若块首或块尾没有标记时,执行块操作时,将见到块未定义的显示信息,应该重新设置缺少的块标记之后再进行操作。 (3) 块的移动(KV)文本打入后,往往需要对某些内容调整位置,QE允许把需要移动的文本内容定义成块,进行移动操作。移动之前,把光标移到目标位置上,按KV,定义的块便移到了光标所在处。块可以移到文本文件的任何地方。块移动后,文本的其余部分整个自动上移,以填满移走的块所留下的空间。移动时保持原块的格式,不重新编排。且移动到光标所在处后,原内容将自动下移。(4)块的复制(KC)可以在文件中的多个地方复制定义的块。首先将光标移到复制的目标位置,按
22、KG,在光标处便复制了一个块的内容,原块仍保留在原处。根据需要,移动光标位置,可在多处复制该块。连续按KG,可将块的内容复制多次,且复制的内容不覆盖原处内容。(5)块的删除(KY)执行命令KY,可以将定义的整个块从文件中删除掉。为了防止不该删除的块被删除,使文本受影响。在使用KY之前,可用QB,QK确定块的定义后,再执行删除命令。7文件块的传送使用写块命令KW,可以把当前文本中定义的块作为另一个新文件存入磁盘,还可以用读文件命令KR把磁盘上存放的一个文件的整体内容插入到文本的当前光标位置。(1) 写文本命令(KW)把当前文本中定义的块作为一个新文件存入磁盘的操作步骤如下: 在当前文本中定义块;
23、 按KW,请求写块到一个新文件; 这时屏幕上显示出提示信息: File to write: 输入文件名后按这样,块内容作为一个新文件以输入的文件名存入磁盘中。在第步中,如果回答的文件名在磁盘中已存在,屏幕上将会给出确认性的询问:Overlay existing file (Y/N- for Yes)?允许以新文件代替已存在的老文件,可回答Y;若回答N,则停止写盘,可进行重新操作,再输入其他文件名。(2) 读文件命令(KR)把另一个文件读入到当前文本中光标所在位置。操作步骤如下: 光标移动到需要引用其他文件内容的位置; 按KR; 屏幕上出现:File to insent: 输入要用的文件名后,按
24、Enter。这样,指定文件中的全部内容便插入在文本的当前位置。8文本存储与退出(1) 存贮文件并继续编辑文本(KS)输入文本一般需要花费较长时间,为了防止由于突然停电或其他原因而造成文本丢失,在编辑文件过程中,在任何位置,任何时候可按KS命令,磁盘上便会存入当前文件的内容。(2) 存储文件并返回操作系统如果编辑结束,想要返回DOS,可有两种方法:方法1:按ALTX键,如现行编辑的文件与最初调入QE编辑区的文件一样,则不存盘,直接退出QE,返回DOS,如有变动,则此时屏幕出现:Save Change(Y/NCR For Yes)。按回车键,则将文件存入磁盘,并返回DOS。如打N,按回车键,则不存
25、盘,返回DOS。方法2:按CtrlKX,此时屏幕上出现:File(s) to edit: 此时,如按ESC键,则返回DOS,如想编辑另一文件,则直接打入文件名,按回车,QE将正在编辑的文件存盘,然后调入另一文件进行编辑。1.3 汇编程序(MASM) 在DOS平台上使用得较普遍的汇编程序是MASM和TASM,连接程序是LINK和TLINK。MASM和LINK由Microsoft公司出品;TASM和TLINK由Borland公司出品。1.3.1 汇编程序的类别 经过编辑程序所建立的汇编语言程序,是不能直接在计算机运行的。必须经过汇编、连接后才能运行。目前使用的汇编程序有宏汇编程序MASM,TASM
26、和小汇编程序ASM。小汇编程序与宏汇编程序的区别在于:宏汇编程序有宏处理能力,而小汇编程序没有这种功能。另外,小汇编(ASM)处理的汇编程序可以在64KB的内存条件下运行,且只能有限制地使用伪指令。而宏汇编(MASM)则必须在96KB以上的内存条件下才能运行,且可以使用各种伪指令。1.3.2 汇编过程宏汇编程序是二次扫描的汇编程序,它两次从头到尾逐行扫描源程序完成汇编过程。第一次扫描用它来定义源程序每个行的相对位置。汇编程序中有一个软件计数器,称为定位计数器或地址计数器LC(Lacation Counter)。当每个段开始时,LC复位(LC=0)。汇编程序在逐行扫描中,LC按每行指令的字节数进
27、行计数。读入一个源程序行后,先检查其是否为伪指令,若为伪指令则LC不计数,否则将指令长度(指令字节数)送L。再查看此行语句是否有标号,若有则把标号写到一个符号表中,并且把现行LC(即为上一条指令的计数结果)赋给标号且填入符号表中,然后令LC+LLC,形成下一条指令的地址,即这条指令在段中的相对位置,称为段内偏移量。若语句没有标号则直接做LC+LLC及其后的操作,其它行按同样的方法处理,直至扫描END时结束第一次扫描。这样通过第一次扫描可把源程序中的标号、变量的偏移量等填入符号表中,从而构成并得到了各条指令的相对地址和一张符号表。在第一次扫描时还计算出了源程序机器码的总长度,并可检查出一些语法错
28、误,但不产生机器码。 汇编程序的第二次扫描是把汇编指令翻译成机器码,它根据汇编程序中的指令代码表找到汇编指令助记符对应的机器指令操作码,再根据第一次扫描产生的符号表,将指令中的符号操作数在符号表中查到,并找到其偏移值,从而将每条汇编指令翻译成机器代码写入到目标程序文件中去。在第二次扫描时,还要进行语法检查,将第一次扫描时未检查到的语法错误查出并显示相应信息。在第二次扫描后除了产生出目标程序文件(.0BJ)外,还可以根据需要产生列表文件(.LST),和交叉索引文件(.CRF)。 其中: 1. 目标程序文件-其扩展名为.OBJ。在这个程序文件中,操作码部分已变成了机器码可被机器识别,但地址操作数部
29、分只是一个可浮动的相对地址,而不是内存中的绝对地址。 2. 列表文件-其扩展名为.LST。此文件包含源程序及其注释、地址和目标码(即汇编后的目标程序)。它们都是用ASCII码表示的文本文件,需要时可在DOS下 ,用TYPE命令将其打印出来以供查阅。 3. 交叉索引文件-其扩展名为.CRF。交叉索引文件是用来了解源程序中每个符号是在哪里定义的。哪些指令用到了这个符号,给出该指令的行号。交叉索引文件对较大的程序很有用,可以用来帮助查错。要把交叉索引文件打印出来,必须在DOS下有CREF程序生成交叉索引列表文件,然后用TYPE命令打印。 1.3.3 运行环境 为了对汇编语言的源程序文件进行汇编,必须
30、有一台80x86档次以上的计算机。使用PCDOS 2.0以上版本的系统盘,该盘中还应该含有如下文件: MASM(或ASM):宏汇编或小汇编程序 LINK: 连接程序 CREF: 索引程序 LIB: 库管理程序 另备一张已格式化的空盘,用来存放用户程序。对较小程序也可直接使用系统盘存放,但系统盘应有足够的可用空间。1.3.4 操作过程 首先启动DOS,在DOS状态下将汇编系统盘插入A驱动器(也可预先装在硬盘上)。下面均以在A 驱动器上的操作为例进行说明。然后调入MASM宏汇编程序。 屏幕显示与操作步骤如下(其中有下划线的部分表示由使用者健入,表示回车健): A:masm Microsoft (R
31、) Macro Assembler version 5.00 Copyright (C) Microsoft Corp 1981-1985,1987.ALL rights reserved. Source filename .ASM:myfile Object filename myfile.OBJ: Source listing NUL.LST: Cross-reference NUL.CRF: 51689+417454 Bytes symbol space free 0 Warning Errors 0 Severe Errors 宏汇编程序被调入以后,先显示版本号。然后依次给出提示,请求
32、用户回答。 第一行提问被汇编的源文件的名字,方括号内表示此文件带有后缀.ASM,(.ASM是该源程序文件的隐含扩展名),此时应键入将要汇编的源程序文件的名字,并按回车键。 第二行提问汇编后目标文件的名字,括号中的名字表示约定的文件名(其文件名部分自动采用源程序文件名),若采用这个名字则直接按回车键。否则键入另起的名字。 第三行提问是否要建立列表文件。括号中的NUL为“空”的意思,表示不建立列表文件。若要建立列表文件,则需要键入文件名,名字可任选,也可以与源程序文件名相同,但后缀必须为.lst,后缀可由用户连同文件名一起键入,也可不键入,即自动采用隐含值。如果不需要建立列表文件,则在第三行提问后
33、直接按回车键。 第四行是询问是否要建立交叉索引文件,括号中的含义同第三行,如果不需要交叉索引文件,可直接按回车键,否则键入交叉索引文件名。 在上述提示行一一回答以后,汇编程序才开始对源程序进行汇编。汇编过程中,若发现源程序中有语法错误,则在显示器(也可为打印机,取决于系统标准输出设备的设置)上列出有错误的语句行号和错误代码,并指出错误的类型。汇编完,最后列出警告性错误和严重性错误的总数。若有严重性错误时,则汇编不成功,要根据汇编程序提示的错误信息分析错误原因,再回到编辑程序进行修改,然后重新调用汇编程序进行汇编,即重复上述步骤,直至没有语法错误出现。通常警告性错误不影响目标文件的生成。 汇编后
34、,可打印出列表文件(一般应在汇编时有建立列表文件),用以了解汇编后的情况并做为文件保留。 打印列表文件的操作步骤如下: A:TYPE 文件名.LST 汇编后,也可打印出交叉索引文件,以了解源程序中的符号定义和引用情况。其操作步骤如下: A: CREF Cref filename.CRF:交叉索引文件名 List filenamefilename.REF: A:TYPE filename.REF 在第一行提示下,打入汇编时在第四行询问时所键入的交叉索引文件名。 第二行提示,可直接回车,表示采用括号中的文件名。 第三行的TYPE 命令就可打印出交叉索引的列表文件了。 如果在汇编时没有要求产生交叉索
35、引文件,当然也就无需用CREF产生交叉索引文件了。以上是宏汇编程序的基本功能和操作,对于完成一般程序的汇编均可满足。宏汇编MASM 5.0版比低版本的宏汇编程序又增加了许多新的功能,如进行符号调试,可在多模式下工作,并且具有窗口工作的特点等。若需要进一步了解MASM的使用情况,读者可查阅有关资料。1.4 连接程序1.4.1 连接程序的作用 由汇编程序生成的目标程序文件CPU仍然不能执行,必须经过连接程序LINK连接以后,才能形成可执行文件。因为目标程序文件中有些指令地址还未完全确定,因此仍不能成为可以用DOS装入的程序形式。另外可能还要将几个目标文件组合成一个功能更强的实用文件,甚至要和某些高
36、级语言的目标程序文件进行组合。所有这些都要由连接程序LINK来完成。通过连接程序可将若干个目标文件连接成一个地址可浮动的、可由DOS装入程序对地址定位的可执行文件。 请注意:连接程序LINK不仅是为汇编语言程序所专用。它作为Microsoft的8086目标连接程序,可将宏汇编或高级语言(例如C、PASCAL等)编译生成的目标文件连接在一起,成为一个可执行程序。并以扩展名为.EXE的文件方式存盘。在DOS状态下,就可直接输入该文件名来执行这个程序。1.4.2 连接过程 在连接之前,源程序必须通过汇编或编译成为目标文件。在执行连接操作时,以一定的格式将这些目标文件与需要的库文件一起提供给连接程序。
37、连接程序将它们的代码和数据进行组合,成为可执行文件。DOS能够利用装入程序将可执行文件加载到内存的适当位置,输入文件名即可运行。1.4.3 LINK的使用与操作使用LINK连接目标文件有三种操作方式:会话方式命令方式命令文件方式 不论是在那种操作方式下,若想停止连接程序的工作,可按CTRL+C键来中断LINK程序的执行。1会话方式 首先将含有LINK程序的软盘插入软盘驱动器中,或预先将其存在硬盘里。在DOS状态下键入LINK,连接程序就被调入。LINK程序将显示有关的提示信息请使用者逐行回答。屏幕显示如下:A:link Microsoft (R)8086 Object Linker Versi
38、on 3.05Copyright (C)Microsoft Corp 1983,1984,1985. All rights reserved.Object Modules.OBJ:myfile Run File MYFILE。EXE: List file NUL.MAP:Libraries .LIB: Warning:no stack segment 第一行提示要求输入目标模块名。此时应键入你要连接的目标文件名(后缀.OBJ可省略,LINK程序自动加上.OBJ为后缀)。若要连接的是多个目标模块时,一定要用+号或空格号将每个文件名分开。如果输入的名字一行无法输完,就在该行的最后输入一个+号,然后
39、再按回车键,这时连接程序就提示使用者追加目标文件。所有目标文件输入完后回车。 第二行提示要求输入将要生成的可执行文件的文件名,括号内为LINK程序给出的隐含文件名,它与第一行提示中的目标模块名一样,只是将后缀换成.EXE。若第一行回答的目标模块是多个的话,则隐含的可执行文件名取为第一目标文件名。此行可不输入文件名而直接按回车键。 第三行提示我们是否要建立列表(映象)文件,若要建立,可键入列表文件名,这时可不输入扩展名,由LINK程序自动按隐含值MAP为扩展名。如果不想要列表文件,此行提示时直接按回车键即可。 第四行提示我们是否需要连接库文件。若不需要,则直接按回车键。 所谓库文件,是一些经常使
40、用的目标文件的集合。它是为了提高效率,为了调试的方便而建立的。宏汇编语言可以把一些经常使用的子程序段单独汇编。这些单独汇编和调试的程序作为外部子程序,将它们以目标文件的形式储存起来而成为一个文件库。PC-DOS具有建立文件库的功能,可把若干个目标文件集中起来,组成一个文件库。DOS用库管理程序LIB对其进行编辑管理。 连接程序在生成可执行程序时,若用到文件库中的某些目标文件时,就可在连接程序的第四行提示时给出库的名字,以供LINK程序调用。 【例13】 连接目标模块exl. OBJ,ex2.OBJ,ex3.OBJ建立一个名为exl.EXE的可执行文件。 操作如下: A:link Microsoft (R) 8086 object Linker Version 3.05 Copyright (C) Microsoft Corp 1983, 1984,1985. All rights reserved. Object Modules .OBJ:ex1+ex2+ Object Modules .OBJ:ex3/pause Run Flie EX1.EXE: List Flie NUL.MAP: Libraries .LIB: 第一行目标模块没有输