当前位置:文档之家› 汇编实验指导

汇编实验指导

汇编实验指导
汇编实验指导

汇编语言程序设计实验指导

主编:徐静李娜

信息与电气工程学院

计算机技术教研室

第一章上机实验内容及要求

上机实验是对学生的一种全面综合训练,是与课堂教学相辅相成的必不可少的一个教学环节。课堂的理论教学,使学生掌握程序设计的基本理论、方法,而通过上机实验,可以加深对讲授内容的理解、深化,同时也可以考察学生的思维能力和培养学生的创新意识。

上机实验一般包括以下几个环节:

(1)准备好上机所需的程序。为提高上机效率,上机前应根据实验题目认真编写源程序,建议养成编程前先画程序流程图的好习惯。

(2)上机输入和调试自己所编的程序。上机过程中,应该善于发现问题,并尽量独立去解决出现的问题,这是提高调试程序能力的良好机会。

(3)程序调试通过后,要记录程序在不同条件下的运行结果,为实验报告作准备。

(4)上机结束后,要及时整理出实验报告。实验报告除了在开头写上班级、姓名、学号和完成日期外,还应该包括以下内容:

①实验题目

②实验内容

③程序构思

④程序清单

⑤运行结果

最后,在每次上机后,自己应该对程序的运行情况作一下分析,总结本次上机调试程序所取得的经验。若程序未能通过,应分析其原因。

1

第二章宏汇编程序和连接程序的用法

一、宏汇编程序MASM.EXE

1.汇编语言程序的建立与处理过程

首先用编辑软件产生汇编语言的源程序(.ASM的源程序),源程序经汇编程序汇编转换成用二进制代码表示的目标程序,在转换的过程中,汇编程序将对源程序进行扫视,如果源程序中有语法错误,则汇编结束后,汇编程序将指出源程序中的错误,用户用编辑软件来修改源程序中的错误,最后得到一个无错的目标文件(.OBJ文件),OBJ文件是一个二进制文件,但它不能直接上机运行,必须经过连接程序(link)把目标文件与库文件或其他目标文件连接在一起形成可执行文件(.EXE文件)。

2.汇编程序的功能

宏汇编程序MASM.EXE是将用汇编语言编制的源程序转换为机器代码的目标程序的软件。MASM工作后生成三种文件:目标文件(.OBJ)、列表文件(.LST)和交叉索引文件(.CRF)。

3.宏汇编程序的用法

宏汇编程序的使用方法有两种:交互式用法和命令行用法。

(1)交互式用法

在DOS提示符下,键入MASM,并按回车键,宏汇编程序连续显示4个提示,用户根据提示,逐个回答后,宏汇编程序开始工作。假设汇编语言源程序名为EXAMPLE.ASM,并存放在当前盘当前目录下,生成的文件也放在当前盘当前目录下。其操作过程如下:

D:\MASM>MASM↙

2

Source Filename[.ASM]:EXAMPLE↙

Object Filename[EXAMPLE.OBJ]: ↙

Source Listing[NUL.LST]:EXAMPLE↙

Cross Reference[NUL.CRF]:EXAMPLE↙

第一个提示要求用户输入汇编语言源文件名,源文件名的扩展名为.ASM。用户回答源文件名的基本名,不必输入扩展名,宏汇编程序默认为.ASM。本例输入的文件名为EXAMPLE。

第二个提示要求用户输入汇编后产生的目标文件名。方括号中提示产生的目标文件名为EXAMPLE.OBJ。如果用户欲用此名为目标文件名,则不必输入名字,只须按回车键即可。如不想以提示的文件名为目标文件名,则键入文件名,但不必输入扩展名,宏汇编程序自动加上扩展名.OBJ。本例仅按回车键,将生成文件EXAMPLE.OBJ。

第三个提示要求输入源程序的列表文件名,如果用户需要生成列表文件,则回答文件名。用户只需输入列表文件的基本名,不必输入扩展名,宏汇编程序自动加上扩展名.LST。本例输入为EXAMPLE,将生成文件EXAMPLE.LST。若仅按回车键,宏汇编程序将不生成列表文件。

第四个提示要求输入交叉索引文件名,如果用户需要生成交叉索引文件,则回答文件名。用户只需输入交叉索引文件的基本名,不必输入扩展名,宏汇编程序自动加上扩展名.CRF。本例输入为EXAMPLE,将生成文件EXAMPLE.CRF。若仅按回车键,宏汇编程序将不生成交叉索引文件。

四个提示回答后,宏汇编程序开始对源程序进行汇编。在汇编过程中,宏汇编程序对源程序进行词法、语法检查,如发现错误,则显示出错语句号和错误性质,最后显示出警告性错误总数(Warning Errors)和严重错误总数

3

(Severe Errors)。若错误数为0,则汇编成功,否则需修改错误,重复上述过程,直至错误数为0。

(2)命令行用法

在DOS提示符下,键入MASM命令行,命令行的格式为:

MASM 源文件名[,[目标文件名][,[列表文件名][,[交叉索引文件名]]]][/开关参数][;]

命令行中的方括号内为可选项,如果不选目标文件名项,则产生以源文件名为基本名的目标文件,不选列表文件名和交叉索引文件名,则不生成.LST和.CRF文件。

例如:D:\MASM>MASM EXAMPLE,EXAMPLE,EXAMPLE,EXAMPLE ↙三个文件全生成

D:\MASM>MASM EXAMPLE,,EXAMPLE; ↙生成EXAMPLE.OBJ和EXAMPLE.LST文件

D:\MASM>MASM EXAMPLE; ↙仅生成EXAMPLE.OBJ文件

命令行中的分号“;”做为命令行的终止符,未输入部分将采用MASM 的隐含设定值。

[/开关参数]也是可选项,用以指定汇编程序的可选操作,开关参数可以是下述五种情况:

①/D:在汇编程序的两遍扫描中都产生列表文件,为用户查找两遍扫描步骤错误提供方便;

②/O:在列表文件中用八进制表示生成的目标代码和偏移量;

③/X:列表伪操作在条件为假时,不作列表;

④/R:对源程序中的8087指令进行汇编,并产生8087目标代码;

4

⑤/E:对源程序中的8087指令进行汇编,并产生8087的仿真目标代码。

开关参数的使用方法是写在汇编命令行的字符串之后,每个开关参数前用一个斜杠“/”,然后是开关字母。使用参数的多少和顺序由用户根据需要确定。

例如:D:\MASM>MASM EXAMPLE/D↙

4.MASM出错信息

汇编程序在对源程序进行汇编的过程中,对汇编语言源程序进行词法语法的检查。一旦检查出语法错误,则显示出错信息,MASM5.0版的错误信息格式如下:

(语句号)错误性质

语句号是出错语句在源程序行中的语句行号。

例如:(20)Symbol is multi-defined.

语句行号符号多重定义

语法错误的种类很多,本节仅列出常见的主要错误:

(1)Block nesting error. 块嵌套错误

嵌套的过程、段、结构、宏定义、重复块定义等不恰当地结束。

(2)Extra characters on line. 语句行上有额外字符

当在语句行上接收到定义指令、命令语句的足够信息时,还有其它多余字符。

(3)Unknow symbol type. 不认识的符号类型

符号语句,在类型字段内有不能识别的符号。

(4)Symbol is multi-defined. 重复定义符号

5

符号在标号域中出现两次以上。

(5)Symbol not defined. 符号未定义

操作数域或操作码域引用了未在标号域中出现过的标号。

(6)Phase error between passes. 两次扫描中间的步骤错

程序中有二义性的指令语句。

(7)Symbol type usage illegal. 符号类型用法错

使用PUBLIC语句中的符号用法错。

(8)Symbol is reserved word. 符号是保留字

非法地使用了汇编程序的保留字。

(9)Division by 0 or overflow. 除法被0除或溢出

在除法指令语句中,除数为0或商超出允许范围。

(10) Operand type must match. 操作数类型必须匹配

在要求操作数必须匹配的情况下,汇编程序得到了参量不同的类型和大小。

(11) Value is out of range. 值超出范围

所使用的数值超出了使用范围。

(12) Relative jump out range. 相对转移超出范围

相对转移超出了当前指令的范围(-128~127个字节)。

(13) No or unreachable CS. 没有或不能达到CS

企图转移至不可达到的标号。

(14) Operand expected. 希望有操作数

语句中没有操作数。

二、连接程序LINK.EXE

1.连接程序的功能

6

连接程序LINK.EXE是将汇编程序或高级语言编译程序产生的目标程序(.OBJ)连接和装配成可执行程序的软件,它具有下述功能:

(1)将汇编程序或高级语言编译程序生成的一个或多个.OBJ文件连接成一个可执行文件和内存映象文件。

(2)可以在汇编系统和各种高级语言编译系统提供的库文件(.LIB)中检索目标块引用的标准库函数,并与目标模块组合在一起。

(3)检查连接过程中的错误,提供错误信息。

2.连接程序的用法

启动连接程序有两种方式:交互式用法和命令行用法。

(1)交互式用法

在DOS提示符下,键入LINK并按回车键,LINK连续提出4个问题,用户逐个回答后,LINK开始进行连接工作。假设要连接的.OBJ文件在当前盘当前目录下,其操作过程如下:

D:\MASM>LINK↙

Object Modules [.OBJ]:EXAMPLE↙

Run File [EXAMPLE.EXE]:EXAMPLE↙

List File [NUL.MAP]:EXAMPLE↙

Libraries [.LIB]: ↙

第一个提示要求输入欲连接的目标模块名。若只有一个欲连接的模块,则键入该文件名即可;若有多个模块要连接成一个可执行文件,则键入连接的所有目标模块名,模块名之间用“+”连接。本例中仅有一个目标文件EXAMPLE.OBJ。

第二个提示要求输入连接后生成的可执行程序的文件名。如果用户只

7

按回车键不回答文件名,则以第一个目标文件名为可执行程序的文件名;若键入文件名,则以键入的文件名为可执行程序文件的基本名,扩展名为.EXE。本例回答文件名为EXAMPLE,将产生文件EXAMPLE.EXE。

第三个提示要求输入欲生成的映象文件名。如果用户只按回车键不回答文件名,则不产生映象文件。若键入文件名,则以键入的名字为映象文件的基本名,扩展名为.MAP。本例回答为EXAMPLE,将产生文件EXAMPLE.MAP。

第四个提示要求输入连接时使用的库文件名。用户应根据生成的目标文件所用的程序设计语言编译系统确定要用的库文件并输入库文件名。若用一个以上的库文件,则用“+”将所用库文件名连接起来一起输入。库文件的扩展名为.LIB。本例未使用库文件,所以只按回车键。

上述问题回答后,LINK开始进行连接工作,若连接有错,打印出错信息,否则生成可执行文件。

(2)命令行用法

在DOS提示符下,键入LINK命令行,在命令行中给出所用的文件名及有关参数。命令行格式:

LINK 目标文件名表[,[可执行程序文件名][,[映象文件名][,[库文件名表]]]][/命令参数][;]

命令行中方括号内为可选项。

“目标文件名表”可以是一个目标文件,也可以是多个目标文件,若是多个目标文件,则文件名之间用“+”连接。

“可执行程序文件名”是可选项,若输入了可执行程序文件名,则以输入的文件名为可执行程序的文件名,若未输入可执行程序文件,则以第一个目标文件名的基本名为可执行程序文件的基本名,扩展名为.EXE。

8

“映象文件名”是可选项,若需要生成映象文件时,就键入文件名字。

“库文件名表”是可选项,用户应根据生成目标文件所用的程序设计语言编译系统确定要用的库文件并键入库文件名,若用一个以上的库文件,则库文件名之间用“+”连接。

例:D:\MASM>LINK EXAMPLE,,EXAMPLE; ↙生成EXAM.EXE和EXAM.MAP 文件

D:\MASM>LINK EXAM; ↙仅生成EXAM.EXE文件

命令行中的“;”是命令行的终止符,未输入的部分,将采用LINK的隐含值。

“/命令行参数“也是可选项,它可以是表中的一项或多项。若为多项,项间用“/”分隔。

LINK的命令参数

9

3.映象文件的格式

LINK生成的映象文件(.MAP),列出程序中所有段的名字、加载地址和长度,各个组名、加载地址、程序的起始地址和发现的错误信息。

(1)段信息的一般格式

Start Stop Length Name Class

00000H 003E7H 003E8H SSEG STACK

003F0H 004C6H 000D7H DSEG DATA

004D0H 006F3H 00224H CSEG CODE

其中Start,Stop表示段的第一字节和最后一个字节的20位地址,Length为段的长度(以字节为单位),Name为段名,Class为段的类型(2)组信息的一般格式

Origin GRoup

013A:0 CGRoup

Origin是组的加载地址,Group为组名。

(3)如果在命令行中选择了/MAP参数,在映象文件中则包含公共符号名清单,这些符号名,分两次进行说明,一次是按字母顺序,一次是按加载的地址顺序。

Address Publics by Name ;按名字的字母顺序

10

003F:0010 DATA_34

004D:0009 INKEY

004D:005A LOC1

004D:0000 V+KEY

Address Publics by Value ;按加载地址的顺序

003F:0010 DATA_34

004D:0000 V_KEY

004D:0009 INKEY

004D:005A LOC1

Program entry point at 004D:0000 ;指令程序的启动地址

11

第三章.EXE和.COM文件结构及程序前缀

一、.COM文件的结构

编写汇编语言程序要变为.COM文件,则对汇编语言源程序的结构有一定的要求:

①源程序只能有一个段,且不准建立堆栈段

②程序译为目标代码后不能超过64K字节

③程序必须预留100H的内存空间,且在位移100H处是一条可执行指

④若.COM文件是由几个目标模块连接而成,那么各目标块具有相同的

代码段且具有PUBLIC组合类型,而主模块应具有100H的入口指针

⑤程序被加载的100H处的指令标号必须用END说明

符合上述条件的源程序,经过汇编连接后形成.EXE文件,然后由EXE2BIN程序将.EXE文件转换为.COM文件。

.COM文件具有结构紧凑,占用磁盘空间少,装入速度快优点。

二、.EXE文件的结构

对形成.EXE文件的源文件无任何特殊要求,它有下列结构特点:

①允许建立若干个不同名的代码段、数据段、附加段和堆栈段;

②程序的长度仅受当前内存可用空间的限制;

③程序的的入口随应用而定,用END语句说明起始指令语句的地址即

可;

④若.EXE文件是由几个模块连接而成,各个模块的各个段可以同名,

也可以独立命名,只有主模块的END语句指明程序的入口地址。

12

1..EXE文件的文件头

经汇编、连接后的.EXE文件有一个文件头,以备装入程序加载.EXE文件时,进行重新定位使用,文件头的长度因需定位信息的多少而不同,一般为512字节的整数倍。

文件头的结构如下(所给的偏移量相对于文件头的首地址而言):

0~1 :.EXE文件的有效标志(4DH,5AH);

2~3 :以512为模的文件映象长度;

4~5 :包括文件头在内的文件页长度(1页=512字节);

6~7 :重定位表的项目数,即有多少个需重定位的信息;

8~9 :文件头的节长度(1节=16字节);

A~B :被装入程序所需最小内存节数;

C~D :被装入程序所需最大内存节数;

E~F :被装入程序中堆栈段的相对段值;

10~11 :被装入程序入口时的堆栈指针SP值;

12~13 : .EXE文件所有字的负累加和(不包括本字);

14~15 :被装入程序入口时的IP值;

16~17 :被装入程序中代码段的相对段值;

18~19 :重定位表中第一个重定位项的位移(相对于文件标头首址的位移);

1A~1B :重叠号;

1C~:可变保留区,供内部使用,与重定位无关;

XX~:此字节的地址不定,18~19H中指出其值。从此字节开始是重定位表表项,项目的多少由6~7字节内容指出。每个重

13

定位表表项由4个字节组成,前两个字节为位移量,后两个

字节是段值,这个段和偏移量值指出被装入程序中需要修改

的那个字的“段:位移量”地址。该字的修改过程即称“重

定位”。

2..EXE文件的重定位过程

一般的.EXE文件的加载过程如下:

(1)将文件头4~5字节的内容乘以32得到包括文件头在内的文件节长度;

(2)文件节长度减去文件头8~9字节指出的文件头节长度,得待装程序的节长度;

(3)程序的节长度减去32(20H),乘以16,再加上2~3字节的值即为程序的实际字节数;

(4)向DOS申请由C~D字节指出的所需内存空间数(一般会失败,因为这两个字节的内容通常为FFFFH),返回内存可用空间的节数;

(5)若可用空间小于A~B字节指出的值,则加载无法进行,说明内存不够用;

(6)在当前可用内存空间的最低端决定加载起点,即确定了“开始段”;

(7)将.EXE文件移至“开始段”之后的内存区;

(8)将每个重定位项中的段值加上“开始段”值;

(9)由此段值和重定位项中的位移量和段值指向刚刚被装入程序中的一个字单元;

(10)将此单元的字加上“开始段”;

(11)对重定位表中的各项依次按(9)、(10)步骤处理,直至所有的14

重定位项(文件头6~7字节指出的项的个数)全部处理完为止,即完成了重定位;

(12)取文件头10~11单元的值送入SP,0E~0F单元的值加上“开始段”值送入SS;

(13)程序段前缀的段值送入DS,ES;

(14)文件头16~17单元的值加上“开始段”值送入CS;14~15单元的内容送入IP;

(15)转向CS:IP指出的指令执行。

三、程序段前缀PSP

当一个.EXE文件或.COM文件被加载时,先在内存可用空间的低端建立一个程序前缀控制块,此控制块的结构如下(给出的偏移量是相对程序段前缀的首地址而言):

00~01 :INT 20H的指令代码(程序终止,返回DOS);

02~03 :可用内存空间的高端地址;

04 :保留;

05~09 :DOS系统功能远调用入口;

0A~0D :程序结束处理中断向量单元内容;

0E~11 :CTRL—C中断处理向量单元内容;

12~15 :严重错误处理中断向量单元内容;

16~2B :保留;

2C~2D :环境块段地址;

2E~5B :保留;

5C~6B :格式化了的未打开的文件控制块1;

15

6C~7F :格式化了的未打开的文件控制块2;

80~:非格式化的参数区80H单元为参数的个数,由81H开始是参数字符串。

一般用户使用程序段前缀控制块的方法:

(1)利用前缀中的0~1字节中的INT 20H的指令代码实现返回操作系统;

(2)利用80H单元开始的存储区存放非格式化参数的特点,直接在程序文件名后输入文件所需要的参数(最多127个字节)。

16

第四章动态调试程序https://www.doczj.com/doc/e117736207.html,的使用方法

一、 DEBUG的功能

动态调试程序https://www.doczj.com/doc/e117736207.html,亦称纠错程序,它主要具有下述功能:

(1)提供对可执行程序(.EXE和.COM)或二进制文件的控制和检测手段,使用户能利用DEBUG提供的命令监视和控制被调试程序的执行过程。

(2)装入、显示或修改任一文件。

(3)对磁盘直接进行物理读写或逻辑读写。

二、 DEBUG的使用方法

1.启动DEBUG的方法

启动DEBUG可使用下述两种方法之一:

(1)在DOS提示符下直接键入:

D:\MASM>DEBUG↙

DEBUG即被调入内存并启动运行,显示DEBUG的提示符“-”。

(2)在DOS提示符下,键入:

D:\MASM>DEBUG 文件名↙

DEBUG即被调入内存并启动运行,然后将指定的文件调入内存,并显示DEBUG提示符“-”。

由于DEBUG可以将任一文件调入内存,所以“文件名”必须写全称,若有扩展名一定要键入扩展名。

2.DEBUG启动后各寄存器的状态

(1)以第一种方法启动后各寄存器的状态

①段寄存器(DS、ES、SS、CS)置为DEBUG程序末尾的第一个段的段

17

边界值;

②指令指针寄存器IP的值置为0100H;

③堆栈指针寄存器SP的值置为0FFEEH;

④AX、BX、CX、DX、SI、DI和BP寄存器均置为0;

⑤标志寄存器的状态为NV(OF=0),UP(DF=0),EI(IF=1),PL(SF=0),NZ(ZF=0),NA(AF=0),PO(PF=0),NC(CF=0)。

(2)以第二种方法启动后各寄存器的状态

若DEBUG装入的程序为非执行程序(非.EXE文件),除BX、CX外,各寄存器的值与第一种方法启动时相同。BX、CX为文件长度。

若DEBUG装入的程序为可执行程序(.EXE文件),DEBUG将其重新定位,则各寄存器的值如下:

①段寄存器CS、SS,寄存器IP和SP置成程序中规定的值,DS和ES置为程序段前缀的段地址值;

②BX、CX为可执行程序的文件长度,AX、DX、SI、DI、BP置为0;

③标志寄存器的值与第一种方法启动时相同。

三、 DEBUG命令

1.命令参数

DEBUG提供了19种命令,除Q(退出DEBUG)外,都带有一个或多个参数,参数之间可用空格分隔,为叙述命令方便,对DEBUG命令的参数作如下约定:(1)drv: 驱动器号,其值为0、1、2,分别对应于驱动器A、B、C;

(2)byt:字节数据,其值范围00~FF,十六进制数;

(3)rec: 要写入、读出磁盘驱动器的逻辑记录号和扇区数目,其值范围为000~FFF,十六进制

18

(4)val: 常数,范围为0000~FFFF,十六进制数

(5)adr:表示地址,有下述几种形式:

①段寄存器名和偏移量,如DS:0010

②段地址和偏移量,如0220:0110

③仅有偏移量(段地址取缺省值),如0015

(6)rng:表示地址范围,有下述几种形式:

①adr1,adr2:两个地址,地址之间用空格分隔,adr1可以是adr的三种形式之一,adr2必须是adr的第三种形式,即不可有段地址。如DS:0100 0200

②adr Lval:L为长度符号,val为要处理的字节数。

如C200 L20

(7)lst:是用空格分隔的一系列字节数据,用十六进制表示。

如41 42 44 44 45

(8)str:用单引号括起的字符串。如‘ABCDE’

(9)prt:输入输出端口地址。

(10)fil:磁盘文件名。

2. DEBUG命令功能说明

DEBUG命令都是单字母命令,命令中可以带有一个或多个参数,命令与参数之间可用空格分隔,若为多个参数,参数之间一定要用空格分隔。

键入命令字母和参数后,按回车键命令才开始执行,任何DEBUG的命令执行期间,按Ctrl+Break都可中止命令的执行。

如果键入命令字母或参数不合法,则会在命令行的下一行的错误位置处显示“error”信息,表示该命令出错。

19

扬州环境资源职业技术学院 单片机原理及应用 实验指导书 编制人: 张静秋 计算机系电子教研室 09月

实验一: 清零程序 实验学时: 2学时 实验类型: 验证 实验要求: 必修 一、实验目的 掌握汇编语言设计和调试方法, 熟悉键盘操作。 二、实验内容 将7000H-70FFH的内容清零。 三、实验原理 四、实验步骤 1、在DVCC仿真实验系统联PC机下, 在闪动”P.”状态, 按PCDBG 键; 2、在PC机处于WINXP软件平台下, 双击DVCC图标; 3、在系统设置选项中设定仿真模式为内程序、内数据; 4、根据屏幕提示进入51/96动态调试菜单; 5、联接DVCC实验系统; 6、装载目标文件; 7、设置PC起始地址; 8、从起始地址开始连续运行程序或单步或断点运行程序; 9、单步、断点运行完后, 在存储器窗口检查7000H-70FFH中的内容是否为全为00H。

实验二: 拆字程序 实验学时: 2学时 实验类型: 验证 实验要求: 必修 一、实验目的 掌握汇编语言设计和调试方法, 熟悉键盘操作。 二、实验内容 将7000H的内容拆开, 高位送7001H低位, 低位送7002H低位。7001H、7002H高位清零, 一般本程序用于把数据送显示缓冲区时用。 三、实验原理 四、实验步骤 1、先用存储器读写方法将7000H单元置成34H; 2、从起始地址0050H开始连续运行程序或单步或断点运行程序; 3、在存储器窗口检查7001H和7002H中的内容应为03H和04H。

实验三: 数据排序程序 实验学时: 2学时 实验类型: 验证 实验要求: 必修 一、实验目的 熟悉8031指令系统, 掌握程序设计方法。 二、实验内容 编写并调试一个排序子程序, 其功能为用冒泡法将内部RAM中几个单元字节无符号的正整数, 按从小到大的次序重新排列。 三、实验原理 四、实验步骤 1、将8031片内RAM区50H-5AH中放入不等的数据; 2、从起始地址0100H开始连续运行程序; 3、排序结束, 显示”P.”; 4、用寄存器读写方法检查50H-5AH中内容应从小到大排列。

汇编语言实验指导书 授课教师李娜 授课对象 05计科、网络、06计科 授课时间 07-08学年第一学期 授课地点一、二、四机房 课程简介 一.实验课程的性质和目的 汇编语言程序设计是计算机专业的一门专业基础课,是学好计算机底层系统构成的课程。汇编语言程序设计是一门实用性很强的课程。汇编语言程序程序设计实验教案是教案的重要环节,是理论教案的重要补充,只有通过实验,学生才能熟练掌握汇编语言程序设计的基本方法,并对其有更深刻的认识。本门实验课是单独设课。 二.实验教案的方法和手段 为了提高实验教案效果,实验严把预习、实验、实验报告3个环节。实验在软件实验室机房完成,单独设组,个人完成实验,每项实验以小班为单位,实验考勤采用电子签到制度。 预习:安排学生学习实验内容,了解实验的过程和操作规程,并布置思考题和预习报告,让学生有目的地去查阅与实验相关的资料。 实验:实验开始前由指导教师讲解实验要点,提出注意事项。实验过程中,主题是学生,教师是辅助作用,要求学生独立完成实验。 实验报告:实验结束后,强调学生及时填写实验记录表,对实验过程进行详细记录,对实验结果细致地分析、讨论,完成相关思考题作业。 三.课程学时 本实验课实验总学时为32学时。 四.实验成绩的考核方法 汇编语言实验成绩按百分制核定。实验过程占50%,实验报告占50%。五.大纲的适用范围 本大纲适用计算机科学与技术专业和计算机应用与维护专业学生。 六.主要设备与器材配备

七.实验项目汇总表 实验一熟悉汇编语言编程环境 一.实验目的 <1)熟悉汇编语言编程环境; <2)掌握基本汇编程序。。 二.实验仪器设备 计算机 三.实验重点、难点 熟悉汇编语言编程环境; DEBUG常用命令的正确使用。-T/-U/-Q/-G 四.实验题目 比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘metch’,否则,显示’no match’。 五.实验内容、步骤 1.调用EDIT建立ASM源文件。 2.用汇编程序MASM对源文件汇编产生目标文件OBJ。 <如有问题,可用DEBUG调试。) 3.用LINK联接程序产生执行文件EXE。 4.执行程序。 附:源程序 ;PROGRAM TITLE GOES HERE—COMPARE STRING ;******************************************************** data segment string1 db 'move the cursor backward.' String2 db 'move the cursor backward.'

微处理器与接口技术 实验指导

实验一监控程序与汇编语言程序设计实验 一、实验要求 1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。 2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。 3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 二、实验目的 【1】学习和了解TEC-XP16教学实验系统监控命令的用法; 【2】学习和了解TEC-XP16教学实验系统的指令系统;

【3】学习简单的TEC-XP16教学实验系统汇编程序设计。 三、实验注意事项 (一)实验箱检查 【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。 【2】五位控制开关的功能示意图如下: 【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】 (二)软件操作注意事项 【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口; 【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试; 【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试; 【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

汇编语言实验报告题目:子程序设计 班级:rbw111 姓名:吴德鹏 学号:201107092416 完成日期:2013.12.22

概述: 《汇编语言程序设计》实验指导书是非计算机、非电类的其他专业:包括纺织、机械、热能等专业的《汇编语言程序设计》课程配套使用的实验指导。在理论课的教学中着重介绍微机系统的组成及工作原理,针对INTEL 8088/8086系列介绍相应的指令系统和汇编语言程序设计,介绍了接口的一般概念和CPU与外设交换信息的常用方式的软硬件设计思想。实验课测重培养学生的汇编语言设计能力及一些简单接口程序设计的方法,训练学生汇编语言程序调试的能力。通过实验,使学生加深对课堂教学内容的理解,培养学生综合使用微型机的初步能力。其中实验一、实验二是后续实验的基础,通过该实验,学生应能了解汇编语言源程序的一般格式,熟悉汇编语言程序的上机过程和调试程序的基本方法,重点放在DEBUG调试程序的命令使用方法上。也可以将实验一、实验二合并为一个实验,按照*实验一的要求进行;实验三、四、五进一步培养学生的各种结构的程序设计能力;实验六主要是简单接口的综合应用,为学生建立一个微机应用系统的概念,使学生通过具体的实例对相关的接口有感性认识,提高学生的实际动手能力和独立解决问题的能力。教师可以根据专业学时的多少和学生的具体情况来开设实验。 一、实验目的: 1.进一步熟悉分支、循环程序设计的方法及用DEBUG调式程序的方法。 2.熟练掌握子程序的参数传递的方式、子程序的嵌套、递归调用及其设计方法和技巧。 3、培养学生创新精神和独立运用所学基本知识和技能分析问题和解决问题的能力。 二、实验属性: 显示学生名次表:编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字的grade数组中,其中grade+i保存学号为i+1的学生的成绩。然后根据grade中的学生成绩,把学生名次填入50字的rank数组中,其中rank+i的内容是学号为i+1学生的名次。再按学号顺序把名次从终端上显示出来。 说明:程序设计中应体现出模块化程序设计思想和方法。 三、实验仪器设备: 提供实验条件。 Pc机并在debug的环境下进行调试

福建农林大学计算机与信息学院实验报告 系:计算机专业:计算机年级:10 姓名:朱泽华学号:102260017020 实验室号__田513 计算机号102260017020 实验时间:指导教师签字:成绩: 实验二DEBUG的使用 1.实验目的和要求 (1)学习使用DEBUG的命令; (2)使用DEBUG命令在数据段中查看程序运行的结果; (3)利用DEBUG运行简单的程序段。 2.实验环境 IBM—PC机及其兼容机 实验的软件环境是: 操作系统:DOS 2.0以上;调试程序:https://www.doczj.com/doc/e117736207.html,;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。 3.实验内容及实验数据记录 1)输入程序观察寄存器变化使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时,CS: IP寄存器的内容 使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时,CS: IP寄存器的内容 MOV AX, 4E20 ADD AX, 1416 MOV BX, 2000 ADD AX, BX MOV BX, AX ADD AX, BX MOV AX, 001A MOV BX, 0026

ADD AL, BL ADD AH, BL ADD BH, AL MOV AH, 0 ADD AL, BL ADD AL, 9C 2)下列程序单步运行,注意AL,BX,CX寄存器的变化,并观察数据段字母的变化。如果是将小写字母改成大写字母带注释的语句该如何修改? DSEG SEGMENT MSG1 DB ‘abc’ DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG START: MOV AX, DSEG MOV DS, AX LEA BX, MSG1 MOV CX, 3 S: MOV AL, [BX] AND AL, 11011111B ;将AL中的ASCII码的第5位置0, SUB AL,20H ;变成大写字母。 MOV [BX], AL INC BX LOOP S MOV AL, 0 MOV AH, 4CH INT 21H CSEG ENDS END START 3)程序的跟踪执行操作 在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。那么如何查看程序的运行结果呢? 程序执行过程的跟踪操作步骤如下: (1)在DOS下输入:DEBUG 文件名.EXE (2)在DEBUG提示符下输入U命令

汇编语言上机实验指导书 一、概述 上机实验总学时为14学时,其中综合性实验为2学时。实验共有6项暂定为7次,每次2学时。 1.实验辅导的主要内容 实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备;实验步骤;实验报告要求;实验程序及参考框图。开始的实验介绍较细,后面的实验简要介绍。 2.实验的软硬件要求 关于汇编语言程序设计的硬件要求不高,有IBM-PC/XT即可,但应有彩色显示器以便进行图形实验。软件方面应有MASM.EXE5.0版(包括LINK.EXE),与MS-DOS版本配套的DEBUG程序和EDIT.EXE编辑软件(其它编辑软件也可以)。 3.加强实践能力的培养 实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。其中包括: 实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等; 开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。 对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或自己编制程序加以实现。 实验一汇编语言运行环境及方法、简单程序设计(2学时、验证性) 1.实验目的: (1) 熟悉汇编语言运行环境和方法 (2)了解如何使用汇编语言编制程序 (3) 熟悉DEBUG有关命令的使用方法 (4) 利用DEBUG掌握有关指令的功能 (5) 利用DEBUG运行简单的程序段 2.实验内容 (1)学会输入、编辑汇编语言程序 (2)学会对汇编语言程序进行汇编、连接和运行 (3)进入和退出DEBUG程序 (4)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下。 3.实验准备 (1)仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。 (2)准备好源程序清单、设计好调试步骤、测试方法、对运行结果的分析。 (3) 编写一个程序:比较2个字符串所含的字符是否相同。若相同则显示’Match.’,否则显示’No match!’; (1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。 4.实验步骤 (1)在DOS提示符下,进入MASM目录。 (2)在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。 ①调用edit输入、编辑源程序并保存在指定的目录中;例:edit abc.asm ②用汇编程序masm对源程序汇编产生目标文件obj。例:masm abc 不断修改错误,直至汇编通过为止。 ③用连接程序link产生执行文件exe.例:link abc

汇编语言程序设计 实验指导书 编写:郑利平 合肥工业大学计算机与信息学院 2008-9-1

汇编语言程序设计实验指导书 《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节,根据“汇编语言程序设计自学考试大纲”规定:上机实验单独作为本课程的实验考核成绩。《汇编语言程序设计》是一门实践性很强的课程,只有多上机操作,对汇编语言源程序进行编辑、汇编、连接、调试和运行全过程的训练,才能加深对本课程基本知识的理解,才能熟练地掌握程序设计的方法与技巧,才能学好本课程。 本实验指导书是完全按照《汇编语言程序设计自学考试大纲》中“实验大纲”的要求编写的,为便于考生较好完成上机操作和实验报告,特此作出如下说明和要求: (1)做好上机实验的准备工作:应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。 (2)编写源程序:按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。 (3)完成实验报告:做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。实验报告的内容为:实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。

实验一DEBUG的使用 (一)实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 (二)实验设备 硬件环境:IBM-PC及其兼容机 软件环境:操作系统DOS3.0版本以上 调试程序https://www.doczj.com/doc/e117736207.html, (三)实验内容和要求 实验内容: 1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H 单元中。 实验要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 (四)预习要求 1、复习DOS启动方式和DOS有关命令的使用; 2、阅读本书后的附录,熟悉掌握DEBUG调试程序中的A、D、E、G、Q、R、T、U命令的书写格式及功能; 3、复习寻址方式和相关的数据传送指令及算术运算指令。 (五)实验步骤 1、启动DOS操作系统 2、运行https://www.doczj.com/doc/e117736207.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG 命令) 3、用“A”命令编辑和汇编源程序 –A ↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙

计算机工程系实验报告 课程名称:汇编语言 实验项目名称:用机器指令和汇编语言指令编程 班级:15级计科4班姓名:梁红梅学号:15091413 一、实验目的: 1.学习Debug中D命令的使用方法,掌握查看指定内存单元的内容的指令,其中本实验中 主要掌握“d段地址:偏移地址”的格式; 2.了解Debug 中D命令程序的执行者:CPU,了解D命令的执行过程; 3.掌握CPU在访问内存单元时的主要过程; 4.学习怎样利用在Debug中cs、ds、ss、es这4个段寄存器,简化debug命令格式。 二、实验要求: 使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax= Add ax,[2] ;ax= Mov bx,[4] ;bx= Add bx,[6] ;bx= Push ax ;sp= 修改的内存单元的地址是内容为 Push bx ;sp= 修改的内存单元的地址是内容为 Pop ax ;sp= ;ax= Pop bx ;sp= ;ax= Push [4] ;sp= 修改的内存单元的地址是内容为 Push [6] ;sp= 修改的内存单元的地址是内容为

三、实验数据记录: 1.进入Debug后使用-a命令将程序写入内存 2.通过使用-t命令将写入内存的程序逐一执行,直到命令执行完毕

三、实验结果及分析: 1.mov ax,[0] 执行完成后 ax=C0EA; 2.add ax,[2]执行完成后ax=C0FC; 3.mov bx,[4] 执行完成后 bx=30F0; 4.add bx,[6]执行完成后 bx=6021; 5.push ax 执行完成后 sp= 00FE 修改的内存单元的地址是 2200:00FE 内容为C0FC 6.push bx 执行完成后 sp= 00FC 修改的内存单元的地址是 2200:00FC 内容为6021

《汇编语言》实验指导书

目录 实验一Debug命令的使用 (3) 实验二基本汇编指令的使用 (9) 实验三汇编语言程序的调试与运行 (13) 实验四系统功能调用程序的调试与运行………………错误!未定义书签。 实验五分支程序设计……………………………………错误!未定义书签。 实验六循环程序设计……………………………………错误!未定义书签。 实验七子程序设计………………………………………错误!未定义书签。 实验八高级汇编语言程序设计…………………………错误!未定义书签。 实验九I/O程序设计……………………………………错误!未定义书签。 实验十中断程序设计……………………………………错误!未定义书签。 实验十一综合程序设计 (38)

实验一Debug命令的使用 一、知识点 1、DEBUG简介 DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。在汇编语言程序调试中很常用。 DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。 DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。 DEBUG命令的使用注意问题: (1)字母不分大小写 (2)只使用十六进制数,但没有带后缀字母“H” (3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。 (4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。 2、Debug的调入和退出 以WIN7环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态: C:\Documents and Settings\lfy> 然后输入命令: >Debug 进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。 退出Debug的命令:Q 3、Debug常用命令 (1)汇编命令A,格式为: - A [地址] 功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。若不指定地址,则系统从默认的地址开始存放。按回车键退出汇编状态 应用:用于调试一条指令或几条指令组成的一个程序段。

汇编语言程序设计 实验一DEBUG 程序使用技巧 学号:姓名: 1.寄存器和内存 开始Debug 程序。输入“Q ” 退出程序。再次启动Debug。 输入“r ”来显示CPU的当前状态和寄存器中的当前内容。 输入“r AX ”和“1234”,_______寄存器中的内容变为1234。 输入“r DS ”和“2000”,_______寄存器中的内容变为2000。 输入“d DS:1000 ”来显示数据段中80H 字节数据,把数据抄在这里: 输入“f DS:1000 1100 77 ”再显示一次这80H 字节。判断这条指令的作用是什么? 再输入“d 2000:1000 ”来显示数据段中80H 字节数据。观察与前面的数据有无不同。 输入“d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。比较其中2000:0000 段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。

2.输入机器码,使用单步和断点 退出Debug,再重新启动Debug。 输入“r ”观察CPU 的状态,下一条指令是什么? 使用两种方式输入一段程序,第一种方式:直接输入机器码。 输入“u ”来显示程序段中的指令序列。然后输入“d CS:100 ” 来显示代码段中的数据。观察显示内容。 “u CS:100 106 ”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来: 使用输入“r ”观察CPU 的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让IP 寄存器中的值是100H。一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。

微机原理与接口技术实验指导书 编者:王亭岭 华北水利水电学院 电气学院自动化教研室 二零一二年三月

目录 实验一标志寄存器应用 (1) 实验二指令寻址方式练习 (4) 实验三分支结构程序设计 (6) 实验四循环结构程序设计 (7) 实验五子程序结构程序设计 (8) 实验六DOS系统功能调用程序设计 (10) 实验七BIOS中断调用程序设计 (12) 实验八定时器中断程序设计 (14)

实验一标志寄存器应用 一、实验目的与要求 1.掌握汇编程序的编译过程; 2.掌握8086的标志寄存器的特点。 二、实验内容 微型计算机(80x86系列)。 四、实验参考程序 DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX , DATA MOV DS , AX MOV AX , A SUB AX , B MOV SUM , AX MOV AH,4CH INT 21H CODE ENDS END START 五、实验步骤 步骤一、用鼠标单击开始菜单,单击运行。如下图所示:

步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示: 步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\>D: 回车 2.D:\ >CD MASM 回车 3.D:\MASM>MASM SY1.ASM 回车 4.D:\MASM>LINK SY1.OBJ 回车

步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASM>SY1.EXE 回车 2.D:\MASM>DEBUG SY1.EXE 回车 六、实验结论 1.程序运行后变量SUM的值是多少? 2.程序运行前后标志寄存器的各标志位有何变化? 3.分析实验结果及所遇到的问题,并说明解决的方法。

实验二3)编制在屏幕上显示九九乘法表的程序。(1)源程序 code segment assumecs:code,ds:code org 100h start: pushcs pop ds pushcs popes mov ax,3 int 10h mov di, 200h movbl, 1 again: mov al, 1 next1: mov dl, al mov al, bl add al, 30h stosb mov al, 'x' stosb mov al, dl add al, 30h stosb mov al, '=' stosb mov al, dl mulbl aam test ah, ah jz @asc xchg al, ah add al, 30h stosb xchg al, ah @asc:

add al, 30h stosb mov ax, 2020h stosw stosb mov al, dl inc al cmp al, bl jle next1 mov ax, 0d0ah stosw incbl cmpbl, 9 jle again mov ax, 0d0ah stosw mov al,'$' stosb mov ah, 9 mov dx, 200h int 21h mov ah,7 int 21h mov ah,4ch int 21h code ends end start (2)流程图

(3)实验结果 (4)心得体会 通过本次汇编课程设计,我深刻感受到了汇编语言在程序运行效率,以及时间、空间上的优越性。对汇编中常用的寄存器有了一定的了解,同时对程序设计的基本步骤有了一定的了解,此次编程对编程知识了解太少,动手能力不够强,以后在程序的调试过程在不断完善功能,使程序功能更强大,能够处理更多的错误,处理更多的异常。本次课程设计,我感受到编程成功带来的成就感,也感受到的汇编语言的特点。 4)编制在屏幕上显示用*组成的三角形的程序。 (1)流程图

汇编语言实验指导书纪平张雷编写 安徽工业大学计算机学院 二00四年三月 目录 实验一DEBUG的启动及其基本命令的使用 (2 实验二内存操作数及寻址方法 (6 实验三汇编语言程序的调试与运行 (8 实验四查表程序设计 (10 实验五系统功能调用 (12 实验六循环程序设计 (13 实验七分支程序设计 (15 实验八子程序设计 (18 实验九综合程序设计 (20 附录实验报告 (21 实验一DEBUG的启动及其基本命令的使用一.实验目的: 掌握DEBUG 的基本命令及其功能 二.实验内容:

DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1、DEBUG程序的启动 在DOS提示符下,可键入命令: C>DEBUG[d:][path][文件名][ 参数1][参数2] 其中文件名是被调试文件的名称,它须是执行文件(EXE,两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需 的DEBUG命令。 在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。 2、DEBUG的主要命令 (1汇编命令A,格式为: -A[地址] 该命令从指定地址开始允许输入汇编语句,把它们汇编成机 器代码相继存放在从指定地址开始的存储器中。 (2反汇编命令U,有两种格式: 1-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上 一个U命令的最后一条指令的下一个单元开始显示32个字节。

汇编语言程序设计实验指导书

汇编语言程序设计实验指导书 《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节,根据“汇编语言程序设计自学考试大纲”规定:上机实验单独作为本课程的实验考核成绩。《汇编语言程序设计》是一门实践性很强的课程,只有多上机操作,对汇编语言源程序进行编辑、汇编、连接、调试和运行全过程的训练,才能加深对本课程基本知识的理解,才能熟练地掌握程序设计的方法与技巧,才能学好本课程。 本实验指导书是完全按照《汇编语言程序设计自学考试大纲》中“实验大纲”的要求编写的,为便于考生较好完成上机操作和实验报告,特此作出如下说明和要求: (1)做好上机实验的准备工作:应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。 (2)编写源程序:按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。 (3)完成实验报告:做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。实验报告的内容为:实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。

实验一DEBUG的使用 (一)实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 (二)实验设备 硬件环境:IBM-PC及其兼容机 软件环境:操作系统DOS3.0版本以上 调试程序https://www.doczj.com/doc/e117736207.html, (三)实验内容和要求 实验内容: 1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H 单元中。 实验要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 (四)预习要求 1、复习DOS启动方式和DOS有关命令的使用; 2、阅读本书后的附录,熟悉掌握DEBUG调试程序中的A、D、E、G、Q、R、T、U命令的书写格式及功能; 3、复习寻址方式和相关的数据传送指令及算术运算指令。 (五)实验步骤 1、启动DOS操作系统 2、运行https://www.doczj.com/doc/e117736207.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG 命令) 3、用“A”命令编辑和汇编源程序 –A↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙

实验二循环与子程序程序设计 一、实验目的 1) 加深对循环结构的理解。 2)掌握循环程序的设计方法。 3)学习子程序的定义和调用方法。 4)掌握子程序、子程序的嵌套、递归子程序的结构。 5) 掌握子程序设计、编制及调试。 6) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。 二、实验内容 1) 编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。 2)将从3000H内存单元开始的100个字节存储单元全部清0。 3)编制在屏幕上显示九九乘法表的程序。 4)编制在屏幕上显示用*组成的三角形的程序。 5)设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果显示在屏幕上。 6)编写一个递归子程序,计算指数函数X n的值,其中X,n从键盘输入。 三、源程序 EXAM2-1 DA TA SEGMENT BUF DB’S=1+2×3+3×4+4×5+…+N(N+1)+…=’,’$’ RES DW 4 DUP(0),’$’ DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START:MOV AX,DA TA MOV DS,AX MOV DX, OFFSET BUF MOV AH,09H

INT 21H MOV DX, 1 MOV BL, 2 NEXT:MOV AL,BL INC BL MUL BL ADD DX,AX CMP AX,200 JNA NEXT MOV CX,0004H MOV DI,OFFSET RES ADD DI,03H NEXT1:MOV AX, DX AND AX, 000FH CMP AL,0AH JB NEXT2 ADD AL,07 NEXT2:ADD AL, 30H MOV [DI],AL DEC DI PUSH CX MOV CL,04 SHR DX,CL POP CX LOOP NEXT1 MOV DX,OFFSET RES MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 执行程序EXAM2-1·EXE,屏幕上显示结果: S=1+2×3+3×4+4×5+...+N(N+1)+ (045) EXAM2-2 ORG 2000H 2000 BF0030 MOV DI, 3000 2003 B164 MOV CL, 64 2005 C60500 MOV BYTE PTR[DI],0 2008 47 INC DI 2009 FEC9 DEC CL 200B 75F8 JNZ 2005 200D F4 HLT

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个节内容

说明: 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ① D SEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容 -D 200 ;显示DS段, 0200H开始的128个字节内容

作实验2 【1】.有空加作实验【4】(1). 实验2 算术及位串处理程序 【1】.在数据段预先存放16个十六进制数的ASCII码,把BX中的四位十六进制数,从左到右用查表的方法找到对应数位的ASCII码,并取出显示出来。 要求见书: 参考程序: data segment asc db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h db 41h,42h,43h,44h,45h,46h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cl,4 rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h mov ah,4ch int 21h code ends end start 【2】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。 要求:(1) 字符串的比较程序中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。并指出不相等的位置。 参考书上例3.51,题目改为MESS2 定义为从键盘输入缓冲区,键盘输入缓冲区定义: mess2 DB 9,?,9 DUP(?) 例3.51 在数据段中有一个长度为19的字符串MESS1,在附加段中有一个长度为19的字符串MESS2,比较它们是否相等。若相等显示‘Y’,否则显示‘N’。编制程序如下所示。

北京理工大学汇编实验二报告

本科实验报告实验名称:算术运算类操作实验

一、实验要求和目的 1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式; 2、掌握各类运算类指令对各状态标志位的影响及测试方法; 3、熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4、熟悉无符号数和有符号数乘法和除法指令的使用; 5、掌握符号位扩展指令的使用。 6、掌握 BCD 码调整指令的使用方法 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 1、加减法处理指令 主要有加法指令 ADD,带进位加法 ADC,减法指令 SUB,带进位减法指令 SBB。 2.乘除法指令和符号位扩展指令 主要有无符号数乘法指令MUL,带符号数乘

法指令IMUL,无符号数除法指令DIV,带符号数除法指令 IDIV,以及符号位从字节扩展到字的指令 CBW 和从字扩展到双字的指令 CWD。 3.BCD 码的调整指令 主要有非压缩的BCD 码加法调整指令DAA,压缩的 BCD 码减法调整指令 DAS,非压缩的 BCD 码加法调整指令 AAA,非压缩的 BCD 码减法调整指令 AAS,乘法的非压缩 BCD码调整指令 AAM,除法的非压缩 BCD 码调整指令 AAD。 8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表 1 所示的数据类型进行数据运算。 表 1-2-1 数据类型数据运算表

四、实验内容与步骤 1、对于两组无符号数,087H 和 034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:(1)实验流程 将一组 操作数 分别用 ADD,SUB,MUL,DIV 运算 (2)实验代码: DATAS SEGMENT BUF1 DB 087H BUF2 DB 034H BUF3 DB 4 DUP(?);此处输入数据段代码 DATAS ENDS

实验一汇编语言上机过程 一、上机前的软件准备: MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等) 文本编辑器(如:https://www.doczj.com/doc/e117736207.html, , TURBO.EXE , TC.EXE , C.EXE 等) 汇编程序(如:MASM.EXE , ASM.EXE,TASM.EXE 等) 连接程序(如:LINK.EXE 等) 调试程序(如:DEBUG.EXE 等) 二、汇编程序建立过程: 通过 a.建立汇编源程序────→ b.编译为目标文件──┬─→d.连接为可执行文件 ↑↓ ↓ │ c.不通过,重新修改(语句错误)││ ├──────────────────────┘│ ↑ f.不正确,用调试工具调试,重新修改(逻辑错误)↓ └────────────────────────────←e运行 ↓正确 g.完成 三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明 PROCEDURE a:建立汇编源程序(即:建立文件名.asm) 这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。 1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。 2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。 PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件) 这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。现介绍具体过程: 在DOS提示符下键入MASM filename回车 (注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM fi lename回车。其中filename为你刚才在PROCEDURE a 中建立的文件名) 这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。MASM filename >filen (f ilen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。

相关主题
文本预览
相关文档 最新文档