当前位置:文档之家› 实验指导书参考2

实验指导书参考2

汇编语言程序设计实验指导书汇编语言程序设计实验指导书《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节,根据“汇编语言程序设计自学考试大纲”规定:上机实验单独作为本课程的实验考核成绩。

《汇编语言程序设计》是一门实践性很强的课程,只有多上机操作,对汇编语言源程序进行编辑、汇编、连接、调试和运行全过程的训练,才能加深对本课程基本知识的理解,才能熟练地掌握程序设计的方法与技巧,才能学好本课程。

本实验指导书是完全按照《汇编语言程序设计自学考试大纲》中“实验大纲”的要求编写的,为便于考生较好完成上机操作和实验报告,特此作出如下说明和要求:(1)做好上机实验的准备工作:应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。

(2)编写源程序:按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。

(3)完成实验报告:做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。

实验报告的内容为:实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。

实验一DEBUG的使用(一)实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

(二)实验设备硬件环境:IBM-PC及其兼容机软件环境:操作系统DOS3.0版本以上调试程序(三)实验内容和要求实验内容: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、运行程序(若当前盘为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↙186E:0116 ↙4、用“U”命令反汇编验证源程序–U CS:0100↙186E:0100 A10002 MOV AX,[0200]186E:0103 8B1E0202 MOV BX,[0202]186E:0107 03060402 ADD AX,[0204]186E:010B 131E0602 ADC BX,[0206]186E:010F A30802 MOV [0208],AX186E:0112 891E0A02 MOV [020A],BX186E:0116–注意:●检查源程序是否有错误,若有则返回到第3步用“A地址”命令进行修改,直到程序无错误。

●DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。

●在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。

●在DEBUG下,大小写不敏感。

5、程序未执行前,用“R”命令观察,相关寄存器的内容。

–R↙如:(AX)= ,(BX)= ,(SI)= ,(DI)= ,(CS)= ,(IP)= 。

6、在程序未执行前,用“D”命令观察DS:0200H,DS:0204H、DS:0208H 单元的内容–D 200 20B ↙7、用“G”命令运行源程序–G =110 0116 ↙8、再用“D”命令观察DS:0200H~DS:020BH字节单元中的内容–D 200 20B↙9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄存器内容的变化,并与预计的结果相比较。

注意:●D命令显示内存数据,注意观察多字节数据在内存中的存放方式。

●指令执行的时候,IP寄存器随着变化,注意观察。

(六)实验结果分析1、程序运行结果:(AX)= ,(BX)=DS:0208H四字节单元的内容:2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。

(参考下列程序流程图)3、附加题目:1.从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x2.完成BX中1的个数的统计。

3.用串操作指令将DS:0000开始20个字节初始化为:0CCH。

并将这20个字节的内容复制到其后的20个字节里。

实验二顺序程序设计(一)实验目的1、学习算术运算(加、减、乘、除)和扩展指令的用法;2、掌握顺序程序结构和设计方法;3、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

(二)实验设备硬件环境:IBM-PC及其兼容机软件环境:操作系统DOS3.0以上编辑程序EDIT或其它编辑程序汇编程序MASM.EXE 6.1X连接程序LINK.EXE调试程序(三)实验内容和要求实验内容:X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。

试编写汇编语言程序完成以下功能:①计算表达式值(V–(X*Y+Z-720))/X;②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

要求:①编写出完整的汇编语言源程序,根据题目的需要建立相应的逻辑段(如程序段、数据段)。

②可选用任何一种编辑程序在磁盘上建立一个源文件(扩展名为.ASM)。

③用宏汇编程序MASM对源文件进行汇编,生成目标文件(扩展名为.OBJ)。

④用连接程序LINK对目标文件进行连接,生成可执行程序.EXE文件。

⑤用DEBUG调试程序对源程序进行动态调试。

(四)预习要求1、复习掌握8086指令系统相关指令,按实验内容和要求预先编写好源程序;2、熟悉在宏汇编程序MASM环境下,对源程序进行编辑、汇编、连接、运行。

3、进一步熟练用DEBUG对源程序进行动态调试,掌握一些常用的调试命令和方法。

(五)实验步骤1、启动DOS操作系统;2、调用某种编辑程序,在磁盘上建立扩展名为ASM的源程序;3、在DOS提示下,打入MASM调入宏汇编程序,用以对源程序进行汇编。

设在磁盘上已建立了一个EXAMPLE.ASM源程序,操作如下所示:C:>MASM↙Microsoft (R) Macro Assembler V ersion 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Source filename [.ASM]:EXAMPLE↙Object filename [EXAMPLE.OBJ]:↙Source listing [NUL.LST]:EXAMPLE↙Cross reference [NUL.CRF]:EXAMPLE↙Warning SevereErrors Errors0 0C:>汇编程序MASM需要和用户进行上述相关信息交互,以便进行汇编、生成相应的文件。

(a)提示用户输入需要汇编的源程序名;(b)提示用户输入要建立的目标文件名,若默认括弧内的目标文件名,则可直接按回车;(c)询问用户是否要建立汇编列表文件,若要,则打入文件名,否则按回车;(d)询问用户是否要建立交叉索引文件,若要,则打入文件名,否则按回车。

注意:仅当屏幕上显示无错误时(警告错误为“0”,严重错误为“0”),才可进行下一步骤连接,否则要根据提供源程序的错误行号和错误性质,重新对源程序进行修改、编辑和汇编。

4、在DOS提示符下,打入LINK调用连接程序,以便对目标文件进行连接。

产生可执行EXE文件。

操作如下所示:C:>LINKMicrosoft (R) Overlay Linker V ersion 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Object Modules [.OBJ]: EXAMPLE↙Run File [EXAMPLE.EXE]: ↙List File [NUL.MAP]: ↙Libraries [.LIB]: ↙Warning: No STACK segmentThere was 1 error detected.C:>连接程序Link需要和用户进行上述相关信息交互,以便连接和生成相应的文件。

(a)提示用户输入需要连接的目标模块名;(b)提示用户输入要建立的可执行文件名,若默认括弧内的可执行文件名,则直接按回车;(c)询问用户是否要建立地址分配文件,若要,则打入文件名,否则按回车;(d)询问用户是否用到库文件,如果用户自己建立了库文件,则键入库文件名,否则按回车。

连接程序在连接过程发现有错,则会显示出错信息,用户应重新调用编辑程序对源程序进行修改,然后重新汇编、连接、直至无错。

但连接程序给出的无堆栈段的警告性错误并不影响程序的执行,所以,到此为止,连接过程已经结束,生成了有效的可执行程序。

5、在DOS提示符下,直接输入EXE文件名,运行程序。

C:>EXAMPLE ↙注意:此时可能屏幕上没有任何显示,因为你没有让结果显示在屏幕上,但是你的计算结果必然在内存中。

所以应该采用DEBUG进行动态调试。

6、调用DEBUG程序对EXE文件进行动态调整,其方法和步骤与实验一相同。

C:>DEBUG EXAMPLE.EXE–再可以用U,D,T,G等命令进行调试,其方法和步骤与实验一相同。

(六)实验结果分析1、程序运行结果:SUM1单元:;SUM2单元:。

2、若在X、Y、Z、V字单元中存放的均为无符号数,对相关十六位二进制数进行扩展,采用什么方法可以实现?(七)编程提示(a)执行16位IMUL指令运算结果乘积在DX、AX中。

(b)相加或相减的二个数长度一定要相同,注意使用CWD扩展指令将(AX)→DX、AX。

(c)使用16位IDIV指令一定要将被除数放在DX、AX中。

相关主题