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

上传人:b****3 文档编号:27466651 上传时间:2023-07-01 格式:DOCX 页数:127 大小:95.78KB
下载 相关 举报
计算机组成原理与汇编语言程序设计实验指导书.docx_第1页
第1页 / 共127页
计算机组成原理与汇编语言程序设计实验指导书.docx_第2页
第2页 / 共127页
计算机组成原理与汇编语言程序设计实验指导书.docx_第3页
第3页 / 共127页
计算机组成原理与汇编语言程序设计实验指导书.docx_第4页
第4页 / 共127页
计算机组成原理与汇编语言程序设计实验指导书.docx_第5页
第5页 / 共127页
点击查看更多>>
下载资源
资源描述

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

《计算机组成原理与汇编语言程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《计算机组成原理与汇编语言程序设计实验指导书.docx(127页珍藏版)》请在冰豆网上搜索。

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

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

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

吴荣腾编

 

2008年8月

 

 

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

汇编语言程序设计是一门实践性很强的课程。

编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。

建立程序、调试程序需要一些相应软件的帮助。

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

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

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

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

编辑程序可用EDIT.COM、EDLIN、全屏幕编辑程序QE或其它可用于文件编辑的软件如记事本等。

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

连接程序使用LINK程序。

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

上述软件可复制到磁盘上。

在对汇编语言源程序进行操作时,可调用盘上有关程序。

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

从编写汇编语言源程序到计算机可以运行该程序,大体上可以归纳为如图1-1所示的一些步骤。

1.编辑源文件

根据给定的任务可在计算机上通过编辑程序建立源程序。

一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以至重新编辑,直到所编辑的源程序认为无错误为止。

把它以一个源程序文件(ASM文件)存盘。

注意:

这个源程序文件的扩展名一定要用.ASM,否则汇编时,文件将打不开。

2.汇编源程序文件

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

需要经过汇编程序的汇编,使其转化为目标代码文件。

它是通过调用宏汇编MASM程序(或小汇编程序ASM)完成这一汇编任务的。

汇编程序还将对源程序文件进行语法检查,如发现有错,将给出错误信息。

程序设计者可根据它分析和修改源程序,并再经过汇编,直到无语法错误时为止,此时才可能产生目标文件(扩展名为.OBJ文件)。

开始

 

建立源文件

Y检查有错码?

N

.ASM文件存盘

修改源程序

调MASM程序

汇编源文件

Y

语法有错?

N

.OBJ文件存盘

 

调LINK程序,

连接目标文件

Y

连接有错?

N

.EXE文件存盘

 

执行.EXE文件

用DEBUG查错

Y

结果有错?

N

结束

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

3.连接目标文件

目标文件(.OBJ)为浮动的相对地址,是不可直接执行的。

必须经过连接,把有关模块连接在一起。

构成统一的编址,从而为运行提供了条件。

在运行时,装填到内存中的具体位置由段地址来确定。

连接过程是由LINK连接程序实现的。

连接后可得到一个可执行文件(扩展名为.EXE文件)。

4.运行可执行文件

得到可执行文件后,就可以直接从盘上调到内存中,在DOS狀态下运行。

如果程序设计正确,则可获得正确的运行结果。

但若为一个较大的程序,往往会有很多设计上的逻辑错误,不太可能一次就得到成功的结论。

对于较简单的程序,一般通过分析源程序就会找出错误的原因,但对于比较复杂的程序,有时光靠人工分析是较难发现问题的所在。

此时就需要借用调试程序(如DEBUG程序或TurboDebugger)来调试了。

在DEBUG调试程序控制下,可通过设置单步或断点等方法显示有关存储单元或寄存器内容,从而较容易地找到程序中的错误。

总之,为调试一个汇编语言的源程序,往往要经过多次反复地查错、改错,最后才能达到预期的目的。

我们无论是编写程序还是上机实踐,都应该细心、耐心。

经过一段时间的练习,会达到较为自由的境地。

熟能生巧,方能举一反三。

 

1.2编辑程序

编写好一个程序,要想在计算机中调试、运行,必须要有一个程序来支持程序的编辑、修改等操作。

这种支援程序称为编辑程序。

编辑程序有很多种,但按功能划分,主要有两大类。

一类是行编辑程序,例如大家熟知的EDIT编辑程序。

另一类是全屏幕编辑程序。

全屏幕编辑程序较为方便、灵活。

在编辑汇编语言的源程序时,可以使用大家已熟悉的EDIT程序编辑,也可以使用下面将做为一个例子介绍的全屏幕字处理程序quikEdit(缩写QE)。

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

1.2.1编辑程序QE的特点

1.快速。

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

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

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

(3)移动编辑窗口;

(4)寻找文本区;

(5)写盘操作。

2.易于操作。

提供弹出式窗口功能,使用起来易于操作,用户可任意配置帮助窗口,系统提供键盘宏定义功能。

3.简洁。

系统占空间较小,仅占47KB空间。

4.提供多窗口。

多个文件同时操作功能,文件之间相互移植比较方便。

5.系统适用范围广。

可适用于IBM兼容机等。

内存最小128KB,在PC-DOS或MS-DOS2。

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

在上述特点中,较为突出的是QE的快速性和它的系统配置的灵活性,因此,采用QE作为编辑程序也可提高工作效率。

1.2.2 QE的进入和菜单说明

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

将包含QE文件的工作磁盘插入驱动器A。

进入QE有两种选择方式

方式1:

直接打入命令:

A:

\>QE↙;屏幕显示开启菜单:

File(s)toedit:

注:

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

此时,①如果按ESC键,则退出QE,返回DOS。

②如果想编辑一个程序,直接打入文件名再按回车,即可进入QE编辑状态。

如盘中无此文件,QE认为是新文件,则可从头编辑一个新文件。

如盘中有此文件,进入QE后,此文件即在屏幕上显示出来。

如下图所示:

 

L1C1InsIndentA:

\myprog.asm

TITLEBELL-CLOCK

;=================================

STAKSKGMENTPARASTACK‘STACK’

DB256DUP(O)

STAKENDS

;==================================

DATASEGMENTPARAPUBLIC‘DATA’

ADR1DWOABCDH,2345H

ADR2DW3678H,6589H

……

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

A:

*.*

..\

masmexe

linkexe

qeexe

qeditdoc

qhelptxl

alasm

a2asm

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

L1C1InsIndentRW30A:

\al.asm

TITLEBELL_CLOCK

;=====================================

STAKSEGMENTPARASRACK‘STACK’

DB256DUP(0)

STAKENDS

;=====================================DATASEGMENTPARAPUBLLC‘DATA’

ADR1DW0ABCDH,2345H

ADR2DW3678H,6589H

……

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

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

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

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

(4)宏记录开关状态;

(5)右边界值;

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

屏幕的其余部分作为文本编辑区,可以一行行的输入程序,也可以任意移动光标到任一行和任一列,还可进行任意删、插、修改等,操作甚为方便。

方式2:

在QE名后跟着文件名,如:

A:

\>QEal.asm↙

则直接进入QE,可以进行编辑操作。

字符大小写可以混合使用。

2.QE的命令窗口菜单

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

只要按下ESC键,屏幕上将出现一条主菜单栏,再用光标键选择中心词,就可执行相应的命令功能。

对应于主菜单栏的每部分功能分别为:

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

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

1.2.3文本的编缉

1.输入文本

可以通过键盘一行行的输入文本,也可以在屏幕的任意位置输入,直到输入完毕为止,如果发现输入有错,可随时进行修改。

2.文本内容的插入

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

进行文本的插入前,需看状态行里是否显示有INSERTON。

如果没有出现,按^V或键,使插入软件开关处于ON状态,然后移动光标到适当位置、打入插入文本内容。

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

(1)按^V或,使状态行显示INSERTON。

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

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

MOVAL,0FAH

插入结束后,再按一次^V(^表示Ctrl键)或键,使状态行INSERTON消失,以便进行其他操作。

3.文本内容的删除

可以删除一个字符,一个字,一行或若干行甚至整个文件。

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

(1)删除一个字符

假设要将Thisisawhitebook。

变成Thisisabook。

步骤为:

①移动光标至white的W处;

②按^G或键5次,便删除了white。

(2)删除字

删除字符时,如要将white删除,则需按5次^G,才能实现,其实white是一个单字,只要按一次^T就可以删除。

做法是将光标移至W处,按一次^T,便删除了white及跟在后面的空白字符(标点符号不在删除之内)。

(3)删除文本行

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

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

若要删除文本中的若干行,可连续按^Y。

若使用文本块操作,只要将删除的文本部分前后加上块标记(见后),按下^KY就可以迅速删除。

4.查找功能

执行查找功能步骤如下:

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

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

SearchFor:

﹤Esc=abort﹥

要求你输入所要查找的信息。

输入完后,按回车键,系统又显示如下信息:

Option[IWB]

I

此时,用户可输入I,B或W任选项,来改变查找方式。

其中:

I代表查找过程不区分大小写。

B代表向后查找。

W代表查找过程是按“字”查找。

(3)按Enter键,光标定位在第一个要查找的字符串处,即光标指向第一个字的字母位置下,这时可对它进行需要的编辑工作,如插入、删除、修改等。

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

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

5.替换工能

替换操作的步骤为:

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

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

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

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

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

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

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

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

I:

不分大小写;

W:

整字查找;

B:

向后查找;

N:

替换时不回答。

6.文本块操作

QE允许移动、复制、删除一个文本块。

文本块是预先用命令定义的文本内容的一部分。

一个文本块可以是一个句子、一段文章或整篇文章。

文本块简称为块。

块命令能够简化许多编辑工作。

例如,文章的相互引用,部分内容前后移动位置等,都可以借助于块操作来完成。

(1)块的定义

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

或把另一个文件当作块读入当前文件。

一次只能定义一个块。

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

(2)设置块标记

设置块首标记的步骤:

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

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

设置块尾标记的步骤:

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

2按^KK(或F8),该块结束处被标记。

在Windows下,由操作鼠标完成块定义。

用户只要执行了设置块首、块尾标记,即可对块进行各种操作。

如想迅速移光标到块首或块尾处,可按^QB或^QK。

取消块标记(^KH)

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

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

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

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

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

4只有进行块定义后,才可执行块的操作命令。

若块首或块尾没有标记时,执行块操作时,将见到‘块未定义’的显示信息,应该重新设置缺少的块标记之后再进行操作。

(3)块的移动(^KV)

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

移动之前,把光标移到目标位置上,按^KV,定义的块便移到了光标所在处。

块可以移到文本文件的任何地方。

块移动后,文本的其余部分整个自动上移,以填满移走的块所留下的空间。

移动时保持原块的格式,不重新编排。

且移动到光标所在处后,原内容将自动下移。

(4)块的复制(^KC)

可以在文件中的多个地方复制定义的块。

首先将光标移到复制的目标位置,按^KG,在光标处便复制了一个块的内容,原块仍保留在原处。

根据需要,移动光标位置,可在多处复制该块。

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

(5)块的删除(^KY)

执行命令^KY,可以将定义的整个块从文件中删除掉。

为了防止不该删除的块被删除,使文本受影响。

在使用^KY之前,可用^QB,^QK确定块的定义后,再执行删除命令。

7.文件块的传送

使用写块命令^KW,可以把当前文本中定义的块作为另一个新文件存入磁盘,还可以用读文件命令^KR把磁盘上存放的一个文件的整体内容插入到文本的当前光标位置。

(1)写文本命令(^KW)

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

1在当前文本中定义块;

2按^KW,请求写块到一个新文件;

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

Filetowrite:

4输入文件名后按

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

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

Overlayexistingfile(Y/N-----forYes)?

允许以新文件代替已存在的老文件,可回答Y;若回答N,则停止写盘,可进行重新操作,再输入其他文件名。

(2)读文件命令(^KR)

把另一个文件读入到当前文本中光标所在位置。

操作步骤如下:

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

2按^KR;

3屏幕上出现:

Filetoinsent:

4输入要用的文件名后,按〈Enter〉。

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

8.文本存储与退出

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

输入文本一般需要花费较长时间,为了防止由于突然停电或其他原因而造成文本丢失,在编辑文件过程中,在任何位置,任何时候可按^KS命令,磁盘上便会存入当前文件的内容。

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

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

方法1:

按ALT—X键,如现行编辑的文件与最初调入QE编辑区的文件一样,则不存盘,直接退出QE,返回DOS,如有变动,则此时屏幕出现:

SaveChange(Y/N…〈CR〉ForYes)。

按回车键,则将文件存入磁盘,并返回DOS。

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

方法2:

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

File(s)toedit:

此时,如按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时结束第一次扫描。

这样通过第一次扫描可把源程序中的标号、变量的偏移量等填入符号表中,从而构成并得到了各条指令的相对地址和一张符号表。

在第一次扫描时还计算出了源程序机器码的总长度,并可检查出一些语法错误,但不产生机器码。

汇编程序的第二次扫描是把汇编指令翻译成机器码,它根据汇编程序中的指令代码表找到汇编指令助记符对应的机器指令操作码,再根据第一次扫描产生的符号表,将指令中的符号操作数在符号表中查到,并找到其偏移值,从而将每条汇编指令翻译成机器代码写入到目标程序文件中去。

在第二次扫描时,还要进行语法检查,将第一次扫描时未检查到的语法错误查出并显示相应信息。

在第二次扫描后除了产生出目标程序文件(.0BJ)外,还可以根据需要产生列表文件(.LST),和交叉索引文件(.CRF)。

其中:

1.目标程序文件-----其扩展名为.OBJ。

在这个程序文件中,操作码部分已变成了机器码可被机器识别,但地址操作数部分只是一个可浮动的相对地址,而不是内存中的绝对地址。

2.列表文件-----其扩展名为.LST。

此文件包含源程序及其注释、地址和目标码(即汇编后的目标程序)。

它们都是用ASCII码表示的文本文件,需要时可在DOS下,用TYPE命令将其打印出来以供查阅。

3.交叉索引文件----其扩展名为.CRF。

交叉索引文件是用来了解源程序中每个符号是在哪里定义的。

哪些指令用到了这个符号,给出该指令的行号。

交叉索引文件对较大的程序很有用,可以用来帮助查错。

要把交叉索引文件打印出来,必须在DOS下有CREF程序生成交叉索引列表文件,然后用TYPE命令打印。

1.3.3运行环境

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

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

MASM(或ASM):

宏汇编或小汇编程序

LINK:

连接程序

CREF:

索引程序

LIB:

库管理程序

另备一张已格式化的空盘,用来存放用户程序。

对较小程序也可直接使用系统盘存放,但系统盘应有足够的可用空间。

1.3.4操作过程

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

下面均以在A驱动器上的操作为例进行说明。

然后调入MASM宏汇编程序。

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

A:

\>masm

Microsoft(R)MacroAssemblerversion5.00

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

Sourcefilename[.ASM]:

myfile

Objectfilename[myfile.OBJ]:

Sourcelisting[NUL.LST]:

Cross-reference[NUL.CRF]:

51689+417454Bytessymbolspacefree

0WarningErrors

0SevereErrors

宏汇编程序被调入以后,先显示版本号。

然后依次给出提示,请求用户回答。

第一行提问被汇编的源文件的名字,方括号内表示此文件带有后缀.ASM,(.ASM是该源程序文件的隐含扩展名),此时应键入将要汇编的源程序文件的名字,并按回车键。

第二行提问汇编后目标文件的名字,括号中的名字表示约定的文件名(其文件名部分自动采用源程序文件名),若采用这个名字则直接按回车键。

否则键入另起的名字。

第三行提问是否要建立列表文件。

括号中的NUL为“空”的意思,表示不建立列表文件。

若要建立列表文件,则需要键入文件名,名字可任选,也可以与源程序文件名相同,但后缀必须为.lst,后缀可由用户连同文件名一起键入,也可不键入,即自动采用隐含值。

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

第四行是询问是否要建立交叉索引文件,括号中的含义同第三行,如果不需要交叉索引文件,可直接按回车键,否则键入交叉索引文件名。

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

汇编过程中,若发现源程序中有语法错误,则在显示器(也可为打印机,取决于系统标准输出设备的设置)上列出有错误的语句行号和错误代码,并指出错误的类型。

汇编完,最后列出警告性错误和严重性错误的总数。

若有严重性错误时,则汇编不成功,要根据汇编程序提示的错误信息分析错误原因,再回到编辑程序进行修改,然后重新调用汇编程序进行汇编,即重复上述步骤,直

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1