计算机组成原理与汇编语言程序设计实验指导书_第1页
计算机组成原理与汇编语言程序设计实验指导书_第2页
计算机组成原理与汇编语言程序设计实验指导书_第3页
计算机组成原理与汇编语言程序设计实验指导书_第4页
计算机组成原理与汇编语言程序设计实验指导书_第5页
已阅读5页,还剩122页未读 继续免费阅读

下载本文档

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

文档简介

计算机组成原理与汇编语言程序设计实验指导书

闽江学院计算机科学系计算机组成原理与汇编语言程序设计课程组编著

2008年8月

目录

第一章汇编语言程序设计实践操作软件简介.................2

1.1汇编语言程序的上机操作过程..............................................2

1.2编辑程序...............................................................3

1.3汇编程序(MASM)....................................................10

1.4连接程序..............................................................13

1.5调试程序..............................................................18

1.6上机实践常用的系统功能调用.............................................35

1.7汇编语言和PCDOS(或MS-DOS)操作系统的接口........................38

第二章CCT-IV计算机组成原理实验指导及实验报告.......40

实验一运算器实验——算术逻辑运算实验.....................................40

实验二存储器实验..........................................................44

实验三微控制器实验........................................................48

实验四基本模型机设计与实现................................................56

第三章汇编语言程序设计实验指导及实验报告.............64

实验一汇编语言编程的软件实训..............................................64

实验二与数据有关的寻址方式操作练习........................................66

实验三加法运算编程实践....................................................69

实验四算术运算编程实践(报告)............................................71

实验五将ASCII码表示的八位二进制数转换成一字节二进制数并在屏幕上显示出结果72

实验六二进制数与十六进制数间的转换程序设计.................................75

实验七十进制数转换成十六进制数............................................76

实验八循环程序设计(一)..................................................77

实验九循环程序设计(二)..................................................78

实验十循环程序设计(三)..................................................80

实验十一分支程序设计(一)................................................81

实验十二分支程序设计(二)................................................83

实验十三子程序结构程序设计................................................84

实验十四子程序设计........................................................85

实验十五汇编程序综合设计..................................................86

第四章CCT-IV计算机组成原理与汇编语言程序设计课外实验指

导及实验报告..........................................87

实验一运算器实验——进位控制实验..........................................87

实验二带移位运算的模型机的设计与实现......................................91

实验三复杂模型机的设计与实现..............................................99

实验四可重构原理计算机组成设计实验(一).................................108

实验五可重构原理计算机组成设计(二)....................................111

实验六扩展8225并行口实验................................................115

实验七PLD应用实验.......................................................120

实验八菜单的设计........................................................123

实验九彩色字符的显示....................................................124

附录:ASCH码表..........................................................125

第一章汇编语言程序设计实践操作软件简介

汇编语言程序设计是一门实践性很强的课程。编写程序、上机调试、运行程序是进

一步学习和掌握汇编语言程序设计的必要手段。建立程序、调试程序需要一些相应软件

的帮助。

1.1汇编语言程序的上机操作过程

1.1.1运行汇编语言程序所需的应用程序

本课程的实验所用计算机为IBM_PC及其兼容机。

操作系统使用MS-D0S2.0以上版本。

编辑程序可用EDIT.COM、EDLIN、全屏幕编辑程序QE或其它可用于文件编辑的

软件如记事本等。

汇编程序可用宏汇编程序MASM5.0以上版本,或汇编程序ASM。

连接程序使用LINK程序。

调试程序使用DEBUG程序,TuMDebugge源代码调试器(TD)

上述软件可复制到磁盘上。在对汇编语言源程序进行操作时,可调用盘上有关程序。

1.1.2汇编语言源程序上机操作过程

从编写汇编语言源程序到计算机可以运行该程序,大体上可以归纳为如图1—1所示

的一些步骤。

1.编辑源文件

根据给定的任务可在计算机上通过编辑程序建立源程序。一般在编辑过程中总会有

错误产生,因此还要进行人工检查、修改以至重新编辑,直到所编辑的源程序认为无错

误为止。把它以一个源程序文件(ASM文件)存盘。注意:这个源程序文件的扩展名一

定要用.ASM,否则汇编时,文件将打不开。

2.汇编源程序文件

由编辑程序所建立的源程序文件,只是个文本文件,计算机无法执行。需要经过汇

编程序的汇编,使其转化为目标代码文件。它是通过调用宏汇编MASM程序(或小汇编

程序ASM)完成这一汇编任务的。汇编程序还将对源程序文件进行语法检查,如发现有

错,将给出错误信息。程序设计者可根据它分析和修改源程序,并再经过汇编,直到无

语法错误时为止,此时才可能产生目标文件(扩展名为.OBJ文件)。

2

3.连接目标文件

目标文件(.OBJ)为浮动的相对地址,是不

可直接执行的。必须经过连接,把有关模块连

接在•起。构成统一的编址,从而为运行提供

了条件。在运行时,装填到内存中的具体位置

由段地址来确定。连接过程是由LINK连接程

序实现的。连接后可得到一个可执行文件(扩

展名为.EXE文件)。

4.运行可执行文件

得到可执行文件后,就可以直接从盘上调

到内存中,在DOS;状态下运行。如果程序设计

正确,则可获得正确的运行结果。但若为一个

较大的程序,往往会有很多设计上的逻辑错误,

不太可能•次就得到成功的结论。

对于较简单的程序,一般通过分析源程序

就会找IH错误的原因,但对于比较复杂的程序,

有时光靠人工分析是较难发现问题的所在。此

时就需要借用调试程序(如DEBUG程序或

TurboDebugger)来调试了。在DEBUG调试

程序控制下,可通过设置单步或断点等方法显

示有关存储单元或寄存器内容,从而较容易地

找到程序中的错误。总之,为调试一个汇编语

言的源程序,往往要经过多次反复地查错、改

错,最后才能达到预期的目的。

我们无论是编写程序还是上机实践,都应

该细心、耐心。经过一段时间的练习,会达到

较为自山的境地。熟能生巧,方能举一反三。

图1—1源程序上机过程示意图

1.2编辑程序

编写好一个程序,要想在计算机中调试、运行,必须要有一个程序来支持程序的编

辑、修改等操作。这种支援程序称为编辑程序。编辑程序有很多种,但按功能划分,主

3

要有两大类。-类是行编辑程序,例如大家熟知的EDIT编辑程序。另一类是全屏幕编

辑程序。全屏幕编辑程序较为方便、灵活。在编辑汇编语言的源程序时,可以使用大家

已熟悉的EDIT程序编辑,也可以使用下面将做为一个例子介绍的全屏幕字处理程序qu汰

Edit(缩写QE)。全屏幕编辑程序有几种,读者可根据自己的需求而选用编辑程序。

1.2.1编辑程序QE的特点

1.快速。主要表现在以下操作比较快速:

(1)从磁盘上读取文件;

(2)显示更改屏幕信息;

(3)移动编辑窗口;

(4)寻找文本区;

(5)写盘操作。

2.易于操作。提供弹出式窗口功能,使用起来易于操作,用户可任意配置帮助窗

口,系统提供键盘宏定义功能。

3.简洁。系统占空间较小,仅占47KB空间。

4.提供多窗口。多个文件同时操作功能,文件之间相互移植比较方便。

5.系统适用范围广。可适用于IBM兼容机等。内存最小128KB,在PC-DOS或

MS-D0S2。0以上操作系统中均可使用。

在上述特点中,较为突出的是QE的快速性和它的系统配置的灵活性,因此,采用

QE作为编辑程序也可提高工作效率。

1.2.2QE的进入和菜单说明

1.QE的进入(以启动驱动器A为例说明)

将包含QE文件的工作磁盘插入驱动器Ao进入QE有两种选择方式

方式1:直接打入命令:

A:\>QE/;屏幕显不开启菜单:

File(s)toedit:<Esc=abort>

注:图中方块代表光标所在位置,可键入文件名。

此时,①如果按ESC键,则退出QE,返回DOSo②如果想编辑•个程序,直接打

入文件名再按回车,即可进入QE编辑状态。如盘中无此文件,QE认为是新文件,则可

从头编辑一个新文件。如盘中有此文件,进入QE后,此文件即在屏幕上显示出来。如

下图所示:

4

LIC1InsIndentA:\myprog.asm

TITLEBELL-CLOCK

STAKSKGMENTPARASTACK'STACK'

DB256DUP(O)

STAKENDS

DATASEGMENTPARAPUBLIC'DATA'

ADRIDWOABCDH,2345H

ADR2DW3678H,6589H

③如直接打入回车键,屏幕弹出如下窗口:

A:*.*

\

masmexe

linkexe

qeexe

qeditdoc

qhelptxl

alasm

a2asm

可用上下光标键选择所要编辑的文件,按回车即进入编辑状态:

LIClInsIndentRW30A:\al.asm

TITLEBELL_CLOCK

STAKSEGMENTPARASRACK'STACK'

DB256DUP(O)

STAKENDS

DATASEGMENTPARAPUBLLC'DATA,

ADRIDW0ABCDH,2345H

ADR2DW3678H,6589H

第一行是状态行,它将提示:

(1)当前光标所在的行号L和列号C:

(2)当前光标是否是处于插入状态(INSERTON);

(3)是否处于缩排状态;

(4)宏记录开关状态;

(5)右边界值;

5

(6)被编辑文件路径和文件名。

屏幕的其余部分作为文本编辑区,可以一行行的输入程序,也可以任意移动光标到

任一行和任一列,还可进行任意删、插、修改等,操作甚为方便。

方式2:在QE名后跟着文件名,如:

A:\>QEal.asmZ

则直接进入QE,可以进行编辑操作。字符大小写可以混合使用。

2.QE的命令窗口菜单

对于初用QE的读者来说,QE本身的一个显著优点是其提供了弹出式窗口命令菜单,

供用户选择使用。只要按下ESC键,屏幕上将出现一条主菜单栏,再用光标键选择中心

词,就可执行相应的命令功能。对应于主菜单栏的每部分功能分别为:文件操作、窗口

操作、块操作、查找操作、打印功能、宏定义操作、编辑操作、其它操作和退出操作。

若在Windows下可借助鼠标来选择菜单。

1.2.3文本的编缉

1.输入文本

可以通过键盘一行行的输入文本,也可以在屏幕的任意位置输入,直到输入完毕为

止,如果发现输入有错,可随时进行修改。

2.文本内容的插入

使用插入方法可在文本需要的地方,插入一个字符,一个字,一行或若干行新的文

本内容。

进行文本的插入前,需看状态行里是否显示有INSERTON。如果没有出现,按-V或

<INS>键,使插入软件开关处于ON状态,然后移动光标到适当位置、打入插入文本内容。

例如要在MOVAL,FAH中FAH前插入0的步骤是:

(1)按"V或<1NS>,使状态行显示INSERTONo

(2)移动光标,将光标停在FAH中的F下面。

(3)打入0,文本就变成:

MOVAL,OFAH

插入结束后,再按一次”(人表示Ctrl键)或<INS>键,使状态行INSERTON消失,以便

进行其他操作。

3.文本内容的删除

可以删除一个字符,一个字,一行或若干行甚至整个文件。删除前,一定要给光标

定位,所有修改、插入、删除操作均取决于光标当前位置。

(1)删除一个字符

假设要将Thisisawhitebook。变成Thisisabook。。步骤为:

①移动光标至white的W处;

②按AG或<DEL>键5次,便删除了whiteo

(2)删除字

6

删除字符时,如要将white删除,则需按5次八G,才能实现,其实white是一个单字,

只要按一次打就可以删除。做法是将光标移至W处,按一次叮,便删除了white及跟在

后面的空白字符(标点符号不在删除之内)。

(3)删除文本行

八Y删除文本中光标所在的整个一行字符。

AQT删除从光标到该行右端所有字符。

若要删除文本中的若干行,可连续按八Y。若使用文本块操作,只要将删除的文本部

分前后加上块标记(见后),按下八KY就可以迅速删除。

4.查找功能

执行查找功能步骤如下:

(1)按人QF,请求查找。

(2)屏幕上显示出提示信息如下:

SearchFor:<Esc=abort>

要求你输入所要查找的信息。输入完后,按回车键,系统又显示如下信息:

Option[IWB]〈Ignore,Word,Backward><Esc=abort>

I

此时,用户可输入1,B或W任选项,来改变查找方式。其中:I代表查找过程不区

分大小写。B代表向后查找。W代表查找过程是按“字”查找。

(3)按Enter键,光标定位在第一个要查找的字符串处,即光标指向第一个字的字母

位置下,这时可对它进行需要的编辑工作,如插入、删除、修改等。

(4)按八L,继续往下查找,光标定位到下一个字处。

(5)重复(4),整个文件查找完毕后为止。

5.替换工能

替换操作的步骤为:

(1)按AQA,请求查找并替换;

(2)出现要替换的提示,输入后,按回车键;

(3)屏幕上又出现要求输入替换内容的提示changeTO;按回车键,提示选择IBW,

回答后,按回车键。

(4)输入完后,按Enter键,光标定位在第一个要替换的字第一个字符处,按回车

键后,字将被替换;

(5)按八L;可继续查找下一个字;

(6)重复,一直替换完毕为止。

上述查找和替换过程,是从整个文本中一个一个找出指定字符串进行的,属于会话

方式。在选择查找方式中,有下列选择。

I:不分大小写;

7

W:整字查找;

B:向后查找;

N:替换时不回答。

6.文本块操作

QE允许移动、复制、删除一个文本块。文本块是预先用命令定义的文本内容的••部

分。一个文本块可以是一个句子、•段文章或整篇文章。文本块简称为块。块命令能够

简化许多编辑工作。例如,文章的相互引用,部分内容前后移动位置等,都可以借助于

块操作来完成。

(1)块的定义

文件块其长度可以从一个字到若干页,可以以块为单位进行传送、复制、删除,还

可以把它作为一个新文件进行存盘。或把另一个文件当作块读入当前文件。一次只能定

义一个块。块的大小是指以块首到块尾标记所包含的文本内容。

(2)设置块标记

设置块首标记的步骤:

①将光标移到需要作为块内容的开始位置。

②按八KB(或F7),这时块开始处将被标记。

设置块尾标记的步骤:

①将光标移到需要作为块内容的结束位置。

②按人KK(或F8),该块结束处被标记。在Windows下,山操作鼠标完成块定义。

用户只要执行了设置块首、块尾标记,即可对块进行各种操作。如想迅速移光标到

块首或块尾处,可按AQB或八QK。

取消块标记(AKH)

设置好的块首、块尾标记,可以通过按AKH使块标记隐去。

使用块操作需要注意以下几点:

①每次文本中只能定义一对块标记;

②块操作要求文本中的块首标记放在块尾标记之前;

③定义块后,可以执行其它命令;

④只有进行块定义后,才可执行块的操作命令。若块首或块尾没有标记时,执行块

操作时,将见到'块未定义’的显示信息,应该重新设置缺少的块标记之后再进

行操作。

(3)块的移动(AKV)

文本打入后,往往需要对某些内容调整位置,QE允许把需要移动的文本内容定义成

块,进行移动操作。移动之前,把光标移到目标位置上,按八KV,定义的块便移到了光

标所在处。块可以移到文本文件的任何地方。块移动后,文本的其余部分整个自动上移,

以填满移走的块所留下的空间。移动时保持原块的格式,不重新编排。且移动到光标所在

处后,原内容将自动下移。

(4)块的复制(AKC)

8

可以在文件中的多个地方复制定义的块。首先将光标移到复制的目标位置,按入KG,

在光标处便复制了一个块的内容,原块仍保留在原处。根据需要,移动光标位置,可在

多处复制该块。连续按八KG,可将块的内容复制多次,且复制的内容不覆盖原处内容。

(5)块的删除(人KY)

执行命令入KY,可以将定义的整个块从文件中删除掉。为了防止不该删除的块被删

除,使文本受影响。在使用人。之前,可用人QB,人QK确定块的定义后,再执行删除命

令。

7.文件块的传送

使用写块命令入KW,可以把当前文本中定义的块作为另一个新文件存入磁盘,还可

以用读文件命令人KR把磁盘上存放的一个文件的整体内容插入到文本的当前光标位置。

(1)写文本命令SKW)

把当前文本中定义的块作为一个新文件存入磁盘的操作步骤如下:

①在当前文本中定义块;

②按人KW,请求写块到一个新文件;

③这时屏幕上显示出提示信息:

Filetowrite:<Esc=abort>

④输入文件名后按<ENTER>

这样,块内容作为一个新文件以输入的文件名存入磁盘中。

在第③步中,如果回答的文件名在磁盘中已存在,屏幕上将会给出确认性的询问:

Overlayexistingfile(Y/N-----<CR>forYes)?

允许以新文件代替已存在的老文件,可回答Y;若回答N,则停止写盘,可进行重

新操作,再输入其他文件名。

(2)读文件命令(AKR)

把另一个文件读入到当前文本中光标所在位置。操作步骤如下:

①光标移动到需要引用其他文件内容的位置;

②按AKR;

③屏幕上出现:Filetoinsent:<Esc=abort>

④输入要用的文件名后,按(Enter〉。

这样,指定文件中的全部内容便插入在文本的当前位置。

8.文本存储与退出

(1)存贮文件并继续编辑文本(AKS)

输入文本一般需要花费较长时间,为了防止由于突然停电或其他原因而造成文本丢

失,在编辑文件过程中,在任何位置,任何时候可按人1«命令,磁盘上便会存入当前文

件的内容。

(2)存储文件并返回操作系统

如果编辑结束,想要返回DOS,可有两种方法:

方法1:按ALT-X键,如现行编辑的文件与最初调入QE编辑区的文件一样,则不

存盘,直接退出QE,返回DOS,如有变动,则此时屏幕出现:

9

SaveChange(Y/N-(CR)ForYes)。按回车键,则将文件存入磁盘,并返回DOS。

如打N,按回车键,则不存盘,返回DOS。

方法2:按Ctrl—KX,此时屏幕上出现:

File(s)toedit:<Esc=abort>此时,如按ESC键,则返回DOS,如想编辑另一文

件,则直接打入文件名,按回车,QE将正在编辑的文件存盘,然后调入另一文件进行编

辑。

1.3汇编程序(MASM)

在DOS平价上使用得较普遍的汇编程序是MASM和TASM,连接程序是LINK和

TLINK„MASM和LINK由Microsoft公司出品;TASM和TLINK由Borland公司出品。

1.3.1汇编程序的类别

经过编辑程序所建立的汇编语言程序,是不能直接在计算机运行的。必须经过汇编、

连接后才能运行。目前使用的汇编程序有宏汇编程序MASM,TASM和小汇编程序ASM,

小汇编程序与宏汇编程序的区别在于:宏汇编程序有宏处理能力,而小汇编程序没有这

种功能。另外,小汇编(ASM)处理的汇编程序可以在64KB的内存条件下运行,且只

能有限制地使用伪指令。而宏汇编(MASM)则必须在96KB以上的内存条件下才能运

行,且可以使用各种伪指令。

1.3.2汇编过程

宏汇编程序是二次扫描的汇编程序,它两次从头到尾逐行扫描源程序完成汇编过程。

第一次扫描用它来定义源程序每个行的相对位置。汇编程序中有一个软件计数器,称为

定位计数器或地址计数器LC(LacationCounter)。当每个段开始时,LC复位(LC=0)»汇

编程序在逐行扫描中,LC按每行指令的字节数进行计数。读入一个源程序行后,先检查

其是否为伪指令,若为伪指令则LC不计数,否则将指令长度(指令字节数)送L。再查

看此行语句是否有标号,若有则把标号写到一个符号表中,并且把现行LC(即为上一条

指令的计数结果)赋给标号且填入符号表中,然后令LC+L-LC,形成下一条指令的地

址,即这条指令在段中的相对位置,称为段内偏移量。若语句没有标号则直接做LC+L

一LC及其后的操作,其它行按同样的方法处理,直至扫描END时结束第一次扫描。这

样通过第一次扫描可把源程序中的标号、变量的偏移量等填入符号表中,从而构成并得

到了各条指令的相对地址和一张符号表。在第一次扫描时还计算出了源程序机器码的总

长度,并可检查出一些语法错误,但不产生机器码。

汇编程序的第二次扫描是把汇编指令翻译成机器码,它根据汇编程序中的指令代码

表找到汇编指令助记符对应的机器指令操作码,再根据第一次扫描产生的符号表,将指

令中的符号操作数在符号表中查到,并找到其偏移值,从而将每条汇编指令翻译成机器

代码写入到目标程序文件中去。在第二次扫描时,还要进行语法检查,将第一次扫描时

10

未检查到的语法错误查出并显示相应信息。在第二次扫描后除了产生出目标程序文件

(.OBJ)外,还可以根据需要产生列表文件(.LST),和交叉索引文件(.CRF)。

其中:

1.目标程序文件--其扩展名为.OBJ。在这个程序文件中,操作码部分已变成了机

器码可被机器识别,但地址操作数部分只是一个可浮动的相对地址,而不是内存中的绝

对地址。

2.列表文件--其扩展名为.LST。此文件包含源程序及其注释、地址和目标码(即

汇编后的目标程序)。它们都是用ASCH码表示的文本文件,需要时可在DOS下,用

TYPE命令将其打印出来以供查阅。

3.交叉索引文件--其扩展名为.CRF。交叉索引文件是用来了解源程序中每个符号是

在哪里定义的。哪些指令用到了这个符号,给出该指令的行号。交叉索引文件对较大的

程序很有用,可以用来帮助查错。要把交叉索引文件打印出来,必须在DOS下有CREF

程序生成交叉索引列表文件,然后用TYPE命令打印。

L3.3运行环境

为了对汇编语言的源程序文件进行汇编,必须有一台80x86档次以上的计算机。使

用PC-DOS2.0以上版本的系统盘,该盘中还应该含有如下文件:

MASM(或ASM):宏汇编或小汇编程序

LINK:连接程序

CREF:索引程序

L1B:库管理程序

另备一张已格式化的空盘,用来存放用户程序。对较小程序也可直接使用系统盘存

放,但系统盘应有足够的可用空间。

1.3.4操作过程

首先启动DOS,在DOS状态下将汇编系统盘插入A驱动器(也可预先装在硬盘上)。

下面均以在A驱动器上的操作为例进行说明。然后调入MASM宏汇编程序。

屏幕显示与操作步骤如下(其中有下划线的部分表示由使用者健入,<Enter>表示回车

健):

A:\>masm<Enlcr>

Microsoft(R)MacroAssemblerversion5.00

Copyright(C)MicrosoftCorp1981-1985,1987.ALLrightsreserved.

Sourcefilename[.ASM]:myfile〈Enter,

Objectfilename[myfile.OBJ]:〈Enter〉

Sourcelisting[NUL.LST]:〈Enter,

Cross-reference[NUL.CRF]:〈Enter)

51689+417454Bytessymbolspacefree

11

0WarningErrors

0SevereErrors

宏汇编程序被调入以后,先显示版本号。然后依次给出提示,请求用户回答。

第一行提问被汇编的源文件的名字,方括号内表示此文件带有后缀.ASM,(.ASM是

该源程序文件的隐含扩展名),此时应键入将要汇编的源程序文件的名字,并按回车键。

第二行提问汇编后目标文件的名字,括号中的名字表示约定的文件名(其文件名部

分自动采用源程序文件名),若采用这个名字则直接按回车键。否则键入另起的名字。

第三行提问是否要建立列表文件。括号中的NUL为“空”的意思,表示不建立列表

文件。若要建立列表文件,则需要键入文件名,名字可任选,也可以与源程序文件名相

同,但后缀必须为.1st,后缀可由用户连同文件名一起键入,也可不键入,即自动采用隐

含值。如果不需要建立列表文件,则在第三行提问后直接按回车键。

第四行是询问是否要建立交叉索引文件,括号中的含义同第三行,如果不需要交叉

索引文件,可直接按回车键,否则键入交叉索引文件名。

在上述提示行一一回答以后,汇编程序才开始对源程序进行汇编。汇编过程中,若

发现源程序中有语法错误,则在显示器(也可为打印机,取决于系统标准输出设备的设

置)上列出有错误的语句行号和错误代码,并指出错误的类型。汇编完,最后列出警告

性错误和严重性错误的总数。若有严重性错误时,则汇编不成功,要根据汇编程序提示

的错误信息分析错误原因,再回到编辑程序进行修改,然后重新调用汇编程序进行汇编,

即重复,上述步骤,直至没有语法错误出现。通常警告性错误不影响目标文件的生成。

汇编后,可打印出列表文件(一般应在汇编时有建立列表文件),用以了解汇编后的

情况并做为文件保留。

打印列表文件的操作步骤如F:

A:\>TYPE文件名.LST〈Enter>

汇编后,也可打印出交叉索引文件,以了解源程序中的符号定义和引用情况。

其操作步骤如下:

A:\>CREF〈Enter〉

Creffilename[.CRF]:交叉索引文件名〈Enter〉

Listfilename[filename.REF]:<Enter>

A:\>TYPEYlename.REF<Enter>

在第一行提示下,打入汇编时在第四行询问时所键入的交叉索引文件名。

第二行提示,可直接回车,表示采用括号中的文件名。

第三行的TYPE命令就可打印出交叉索引的列表文件了。

如果在汇编时没有要求产生交叉索引文件,当然也就无需用CREF产生交叉索引文

件了。

以上是宏汇编程序的基本功能和操作,对于完成一般程序的汇编均可满足。宏汇编

MASM5.0版比低版本的宏汇编程序又增加了许多新的功能,如进行符号调试,可在多模

式下工作,并且具有窗口工作的特点等。若需要进•步了解MASM的使用情况,读者可

查阅有关资料。

12

1.4连接程序

1.4.1连接程序的作用

由汇编程序生成的目标程序文件CPU仍然不能执行,必须经过连接程序LINK连接

以后,才能形成可执行文件。因为目标程序文件中有些指令地址还未完全确定,因此仍

不能成为可以用DOS装入的程序形式。另外可能还要将几个目标文件组合成一个功能更

强的实用文件,甚至要和某些高级语言的目标程序文件进行组合。所有这些都要由连接

程序LINK来完成。通过连接程序可将若干个目标文件连接成一个地址可浮动的、可由

DOS装入程序对地址定位的可执行文件。

请注意:连接程序LINK不仅是为汇编语言程序所专用。它作为Microsoft的8086

目标连接程序,可将宏汇编或高级语言(例如C、PASCAL等)编译生成的目标文件连

接在•起,成为一个可执行程序。并以扩展名为.EXE的文件方式存盘。在DOS状态下,

就可直接输入该文件名来执行这个程序。

1.4.2连接过程

在连接之前,源程序必须通过汇编或编译成为目标文件。在执行连接操作时,以一

定的格式将这些目标文件与需要的库文件一起提供给连接程序。连接程序将它们的代码

和数据进行组合,成为可执行文件。DOS能够利用装入程序将可执行文件加载到内存的

适当位置,输入文件名即可运行。

1.4.3LINK的使用与操作

使用LINK连接目标文件有三种操作方式:

.会话方式

.命令方式

.命令文件方式

不论是在那种操作方式下,若想停止连接程序的工作,可按CTRL+C键来中断LINK

程序的执行。

1.会话方式

首先将含有LINK程序的软盘插入软盘驱动器中,或预先将其存在硬盘里。在DOS

状态下键入LINK,连接程序就被调入。LINK程序将显示有关的提示信息请使用者逐行

回答。屏幕显示如下:

A:\>link<Entcr>

Microsoft(R)8086ObjectLinkerVersion3.05

Copyright(C)MicrosoftCorp1983,1984,1985.Allrightsreserved.

ObjectModules[.OBJ]:myfile〈Enter,

13

RunFile[MYFILEoEXEI:<Enter>

Listfile[NUL.MAP]:〈Enter〉

Libraries[.LIB]:〈Enter〉

Warning:nostacksegment

第一行提示要求输入目标模块名。此时应键入你要连接的目标文件名(后缀.OBJ可

省略,LINK程序自动加上.OBJ为后缀)。若要连接的是多个目标模块时,一定要用+号

或空格号将每个文件名分开。如果输入的名字一行无法输完,就在该行的最后输入一个+

号,然后再按回车键,这时连接程序就提示使用者追加目标文件。所有目标文件输入完

后回车。

第二行提示要求输入将要生成的可执行文件的文件名,括号内为LINK程序给出的

隐含文件名,它与第一行提示中的目标模块名一样,只是将后缀换成.EXE。若第一行回

答的目标模块是多个的话,则隐含的可执行文件名取为第一目标文件名。此行可不输入

文件名而直接按回车键。

第三行提示我们是否要建立列表(映象)文件,若要建立,可键入列表文件名,这

时可不输入扩展名,由LINK程序自动按隐含值.MAP为扩展名。如果不想要列表文件,

此行提示时直接按回车键即可。

第四行提示我们是否需要连接库文件。若不需要,则直接按回车键。

所谓库文件,是一些经常使用的目标文件的集合。它是为了提高效率,为了调试的

方便而建立的。宏汇编语言可以把些经常使用的子程序段单独汇编。这些单独汇编和

调试的程序作为外部子程序,将它们以目标文件的形式储存起来而成为一个文件库。

PC-DOS具有建立文件库的功能,可把若干个目标文件集中起来,组成•个文件库。DOS

用库管理程序LIB对其进行编辑管理。

连接程序在生成可执行程序时,若用到文件库中的某些目标文件时,就可在连接程

序的第四行提示时给出库的名字,以供LINK程序调用。

【例1一3】连接目标模块exl.OBJ,ex2.OBJ,ex3.OBJ建立一个名为exl.EXE的

可执行文件。

操作如下:

A:\>link<Enter>

Microsoft(R)8086objectLinkerVersion3.05

Copyright(C)MicrosoftCorp1983,1984,1985.AHrightsreserved.

ObjectModules[.OBJ]:ex1+ex2+<Enter>

ObjectModules[.OBJ]:ex3/pause〈Enter,

RunFlie[EX1.EXE]:〈Enter,

ListFlie[NUL.MAP]:〈Enter〉

Libraries[.LIB]:〈Enter〉

第一行目标模块没有输完,最后键入“+”号则LINK程序第二行继续提示输入目标模

块。

14

第二行末尾的/pause为LINK程序的可选择的参数项。这里键入了这个参数,表示

当几个目标模块不在一片磁盘上时,连接过程中需要换盘。在换盘时此参数可使连接程

序暂停,待换好盘后继续执行。

第三行键入回车键表示执行程序名选择括号里提示的名字。

第四行键入回车键表示不建立列表文件。

第五行键入回车键表示连接过程中不需要用文件库中的目标模块。

【例1-4]连接目标模块ex1.OBJ,ex2.OBJ用到了A盘上\LIB目录下的库文件

ex.LIB,可执行文件名为exa.EXE,建立一个名为aaa.MAP的映象(列表)文件。

操作过程:

A:\>LINK<Enter>

Microsoft(R)8086ObjectLinkerAersion3.05

Copyright(C)MicrosoftCorp1983,1984,1985.Allrightreserved0

ObjectModules「.OBJ]:exl+ex2〈Enter>

RunFilefEX1.EXE]:exa.exe〈Enter>

ListFile[NUL.MAP1:aaa<Enter>

Libraries[.LIB]:a:\lib\ex〈Enter>

2.命令方式

这是用输入带有要处理文件名的LINK命令来建立可执行文件。命令行的一般格式

为:

LINKobjectfiles],[executablefile][>[mapfile][,[Libraryfile]]]][options][:]

其中目标文件名,可执行文件名,列表文件名,库文件名同前,options为可控制连

接程序操作的参数,命令中方括号中的参数表示可省略。

【例1—5】连接目标模块exl.obj,ex2.obj,ex3.obj;建立一个名为exl.exe的可

执行文件,目标模块可能不在一张磁盘上,不要建立列表文件,连接过程中不需要用文

件库中的目标模块。

操作:

A:\>LINKexl+ex2+ex3/pause,,,<Enter>

命令中除目标文件名给出外,其余均省略,则意义同前,表示均采用隐含值。也可

以用逗号分隔顺序输入每一个参数。如果命令行以分号结尾,则连接过程中不显示提示

信息,直接执行连接。

3.命令文件方式

这种方式是将LINK程序执行时的四个提示所需要回答的文件名按顺序写成一个命

令文件的形式,并给该命令文件单独命名,然后在执行连接操作时,在LINK命令后直

接给出该命令文件的名字,则在连接程序执行中,当显示四个提示信息行时,其相应的

文件名的回答无需键入,由命令文件来回答,同样可完成连接操作。例如在前面会话方

式操作中的例5-4,若改为命令文件方式操作如下:

首先,用DOS的COPY建立命令文件,设命令文件名为TRY,其操作如下:

A:\>cor>ycon:try.bat<Enter>

15

exl+ex2〈Enter〉

exa・exe〈Enter〉

aaa〈Enter〉

B:\lib\ex

AZ

IFile(s)copied

然后,在LINK程序中执行这个命令文件,操作如下:

A:\>LINK向TRY〈Enter〉

这种方式在源程序调试时比较方便,因为源程序常要反复编辑、汇编、连接,直至

没有语法错误出现为止。采用命令文件方式每次连接时就可调用已建立的连接命令文件,

而无需每次都要从头至尾重复回答提示的问题。

经过连接后的文件,就可以直接运行了。如果在连接时要求产生列表文件(.MAP),

则可用DOS的TYPE命令将其打印出来。MAP文件提示了各段的名字、起始地址和长

度、以及程序入口地址。例如在会话方式例S4中建立的名为aaa.MAP的列表文件,可

用type命令将其打印出来,操作如下:

A:\>TYPEaaa.Map〈Enter〉

StartStopLengthName

00000H000A5H000A6HSTACK

000D4H000DCH00009HDATA

000E0H000F0H00011HCODE

OriginGroup

Programentrypointat000E:0000

表中给出了各个段的起止地址,以及字节数。对于小型、简单程序可以不建立该文件。

当需要不断地执行汇编、连接调试过程时,也可将上述的各个过程写成批文件的形式,

使之能够连续执行,免得重复繁锁的键盘操作,也可以加快程序的调试过程。

4.用DOS的批命令文件完成汇编和连接操作

当在调试程序时,需要反复的汇编、连接时,为了避免重复的键盘操作,可将汇编

连接的过程,写成DOS的批处理命令文件形式。批处理命令文件的建立方法:(这里假

设用户程序在A盘,MASM和LINK程序在C盘根目录下)。

A:\>copycon:filename.bat〈Enter〉

a:masm%1,,,,;〈Enter〉

Type%l・Lsl〈Enter〉

Erase%LLst〈Enter〉

A:cref%1;〈Enter〉

Type%l.ref〈Enter〉

Erase%1・rcf<Enlcr>

Erase%1.crf〈Enter〉

16

a:link%1〈Enter〉

按F6键,然后按回车键

系统显示出下列信息:

IFile(s)Copied

A:\>

到此,一个有文件名指定的批处理文件就建好了。

文件中的1%表示批文件中有一个参数在这里是形式参数,以后调用这个批处理文件

时要给出一个实际参数。如果现在要对名为exa的源程序文件进行汇编、连接操作,可

将程序盘插入A驱动器,含有MASM、LINK文件的盘在C盘,然后键入:

A:\>C:文件名exa<Enter>

这里,文件名是指:此批文件的名字(前面用COPY命令建立的filename);exa是

源程序文件名,在这里它是作为实参数代入的,若换成其他源程序文件名,则可实现对

任意源程序的汇编、连接操作。

5.子程序库的建立

前面提到为了高效率的利用多个目标文件,可将调试好的程序以目标文件的形式存

入子程序库中,用库管理程序来管理和调用。子程序库的建立和使用由库管理程序LIB

来实现。

库管理程序的主要功能如下:

(1)建立子程序库

(2)对库文件进行修改,包括增加和删除模块。

(3)调用库中的目标文件。(不意味着库中的此模块被删除)

对库的操作是通过启动LIB程序来实现的。对库有两种操作:一种是建立新库。一

种是向已建立的库里添加或删除模块。下面分别介绍。

建立新库:设新库名为LST.LIB,这里扩展名必须为.LIB。

操作如下:

将有LIB的软盘插入a驱动器,键入

A:\>LIB<Entcr>

Microsoft(R)LibraryManagerVersion3.07

Copyright(C)MicrofoftCorp1983—1987.Allrightsreservedo

Libraryname:tst.Lib<Enter>

Librarydocsnotexist.Create?Y<Enter>

Operations:+ex1+ex2<Enter>

Listfile:lst.Lib<Enter>

A:\>

例子中所给出的exl、ex2为子程序的目标文件。他们将被存入子程序库中,成为库

文件,在汇编时供调用。

向已存在的库中添加目标文件:设库名为TST

具体操作如下:

17

A:\>LIB<Enter>

Microsoft(R)LibraryManagerVersion3.07

Compyright(C)MicrosoftCorp1983-1987.Allrightsreserved«

Libraryname:tst.lib<Entcr>

Operations:+aaa<Enter>

Listfile:tst.lib<Enter>

Outputlibrary:〈Enter)

温馨提示

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

评论

0/150

提交评论