《8086汇编语言程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《8086汇编语言程序设计实验指导书.docx(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、8086汇编语言程序设计实验指导书 汇编语言程序设计上机实验指导书 汇编语言上机实验指导书 一、概述 上机实验总学时为16 学时,其中综合性实验为2 学时。实验共有 6 项暂定为 8 次,每次 2 学时。 1.实验辅导的主要内容 实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备; 实验步骤;实验报告要求;实验程序及参考框图。开始的实验介绍较细,后面的实验简要介绍。 2.实验的软硬件要求 关于汇编语言程序设计的硬件要求不高,有 IBM-PC/XT 即可,但应有彩色显示器以便进行图形实验。软件方面应有MASM.EXE5.0 版(包括LINK.EXE ),与
2、 MS-DOS 版本配套的DEBUG 程序和EDIT.EXE 编辑软件(其它编辑软件也可以)。 3.加强实践能力的培养 实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。其中包括: 实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等; 开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和 BIOS 功能调用的能力,进行模块程序设计的能力等。 对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将 实验成功地实现,在掌握其方法后,自己改变程序或自己编制程序加以实现。 实验一汇编
3、语言运行环境及方法、简单程序设计(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 )仔细阅读有关汇编语
4、言环境的内容,事先准备好使用的例子。 (2 )准备好源程序清单、设计好调试步骤、测试方法、对运行结果的分析。 (3 )编写一个程序:比较 2 个字符串所含的字符是否相同。若相 同则显示 Match. ,否则显示No match!; (1)仔细阅读 有关 DEBUG 命令的内容,对有关命令,都要事先准备好使用的例子。 4.实验步骤 (1 )在 DOS 提示符下,进入 MASM 目录。 (2 )在 MASM 目录下启动 EDIT 编辑程序,输入源程序,并对其进行汇编、连接和运行。 调用 edit 输入、编辑源程序并保存在指定的目录中;例:edit abc.asm 用汇编程序 masm 对源程序汇编
5、产生目标文件 obj。例: masm abc 不断修改错误,直至汇编通过为止。 用连接程序 link 产生执 行文件exe.例: link abc 执行程序 可直接从 DOS 执行程序, 即在DOS 环境中,输入文件名即可。(3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。 5.实验报告要求 (1)源程序清单。 (2)如何启动和退出 EDIT 程序。 (3)如何对源程序进行汇编及编辑。 (4)如何启动和退出DEBUG 程序。 - 1 -安徽工程科技学院计算机 XXD 汇编语言程序设计上机实验指导书 (5)整理每个DEBUG 命令使用的方法,实际示例及执行结果。 (6)启动 DEBU
6、G 后,要装入某一个.EXE 文件,应通过什么方法实现? 实验二循环程序、分支程序程序设计实验(4 学时、验证性 ) 1.实验目的: (1)掌握循环、分支程序的设计方法 (2)进一步熟悉利用DEBUG 程序修改参数的方法,并检查和验证结果的正确性。 (3)学会针对不同的问题,选用不同的组织循环的方法。 2.实验内容 (1)编写一个程序S21,将内存中一组有符号的字数组按递增的序列排序,并将其中的二进制数以十六进制的形式显示在屏幕上。 (2)编写一个程序S22,判别键盘上输入的字符;若是1-9 字符,则显示之;若为A-Z 或 a-z 字符,均显示“ c”;若是回车字符 ( 其 ASCII 码为
7、0DH) ,则结束程序,若为其它字符则不显示,继续等待新的字符输入。 3.实验准备 (1)编写实验内容要求的两个程序。 (2)写出调试以上程序,即修改程序参数,检查结果的操作方法。 (3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。 4.实验步骤 (1)用 EDIT 或其它编辑软件,编写.ASM 源程序,例如S21.ASM 及 S22.ASM 。 (2)对其进行汇编及连接,产生.EXE 文件。 (3)对 .EXE 文件进行调试运行。 a.用 DEBUG 调试运行,学会修改AL 内容的方法。 b.对 DSPKEY.EXE 键入不同的字符,分别进行调试。 c.在 MS-DOS 下运行这两个
8、.EXE 文件。 5.实验报告要求 (1)画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。 (2)说明本实验是如何利用D EBUG 进行调试的。 实验三子程序设计 (4 学时、验证性 ) 实验 3.1、本实验的目的在于让同学们掌握同一模块调用的 方法。 1.实验目的 (1 )掌握主程序与子程序之间的调用关系及调用方法。 (2 )掌握子程序调用过程中近程调用与远程调用的区别。 (3 )掌握通过堆栈转送参数的方法。 2实验内容 (1 )编写程序 S31,将 BUF 开始的 10 个单元中的二进制数转换成两位 十六进制数的 ASCII 码,在屏幕上显示出来。要求码型转 换通过 子程序H
9、EXASC 实现 ,在转换过程中 ,通过子程序 DISP 实现显示 . (2 )编写一个主 程序 S32,从键盘接收若干个字符 ,然后用远调 用的方法 , 调用子程序统计字符串 中字符 b的个数 .子程序的参数 是字符串 的首地址TABLE, 字符串长度 N 及字符”b”子.程序返回字符 b”的个数 .参数传送采用堆栈实现 .主程序在子程序返回后 , 显示字符”b”及 其个数 ( 设为一位十六进制数) 。 3实验说明 (1)第一个实验程序用子程序的近程调用实现。由于在调用HEXASC 子程序时,子程序 又调用了DISP 子程序,这叫子程序的嵌套调 用。实验过程中可以从堆栈的内容看到两个子程序的
10、返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程 序的执行中,检查CS 值是不变的。 (2)第二个程序是利用远调用的方法调用子程序的。在远调用情况下,主程序与子程序处在不同的逻辑代码 段中,可在子程序执行中查看 CS 值,它与主程序中的 CS 值是不同的。子程序调用后,堆栈中保留了返 回地址的段地址及段内偏移量。 (3)第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数(此处是串首址TABLE ,串的长度N 及待统计的 字符“ b”)顺序压如堆栈,在子程序调用后,通过BP 指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理 此处不再介
11、绍。 4实验准备 (1)预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。 - 2 -安徽工程科技学院计算机 XXD 汇编语言程序设计上机实验指导书 (2)熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。 5实验步骤 (1)编辑、汇编两个源程序,生成相应的可执行文件(.EXE ) (2)用 DEBUG 的 R 命令,T 命令或 G 命令和 D 命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取 出的参数是返回参数的详细过程。 (3)检查程序执行的结果是否正确。 6实验报告要求 (1)分析远程调用与近程调用的区别,在用DEBUG 有关命令观察时,
12、执行过程有何不同。 (2)说明用堆栈传送参数的过程及其具体方法。 (3)分析实验结果及所遇到问题,并说明解决的方法。 实验 3.2、本程序的目的在于使读者掌握模块间调用子程序的编写方法. 1.实验目的 (1)了解多模块程序设计方法。 (2)学会使用 PUBLEC 和 EXTRN 伪指令解决模块间的符号 ( 如变量名 ,标号等 )通信问题。 2.实验内容 (1 )编写一个子程序 ,将主程序设定的内存中字符串的小写字母转换成大写字 母并显示出来 .主程序 S33 用另一个模块编 写。 (2 )编写一个子程序,将主 程序 S34 指定的字符所在的地址返回给 主程序 ,字符串 (字符串以 $为结束标志
13、 )与主程序在同 一个模块。 3.实验准备 (1)仔细阅读教材中有关模块间通信的方法及模块程序设计的方法。 (2)弄清伪指令PUBLIC 及 EXTRN 的功能及用法。 4.实验步骤 (1)分别对实验 1 和实验 2 的主、子模块进行汇编 ,在连接时 ,将它们装配成一个以 .EXE 为扩展名的可执行文件 .观 察汇编及连接过程中有无错误 . (2)对 .EXE 文件进行调试及运行. (3)将实验 1 中的原字符串改为由键盘输入,然后由子模块将源串中的小写字母转换为大写字母,并将源串与转换后的两个字串分两行显 示出来 (设键入字串长度小于80 个字符 ). 5.实验报告要求 (1)画出相应的程序
14、流程图。 (2)扼要总结多模块程序的特点和编写方法。 实验四输入 /输出实验( 2 学时综合性实验) 1实验目的 (1)掌握输入输出程序设计的概念和方法。 (2)了解 PC 机外围芯片 8255、8259 的功能。 (3)学习如何在PC 机上编写具有输入输出功能的程序,包括8255、8259 芯片的使用方法。 2实验说明 本实验要求自行编写一个键盘输入处理程序,它可以完成键盘字符的读入并进行屏幕显示,本实验要利用IBM PC 系统的硬件 结构,分别使用外围芯片 8255 及 8259。 在本例中,利用8255A 的 A 端做数据输入,对应的端口地址为60H ; 利用 B 端口作控制端输入,端口
15、地址为61H。8255A 的控 制端口地址为63H 。本例的 8259 中断控制器,其IRQ1 端用于键盘中断请求线。键盘通过它可以响CPU 发出中断请求。8259 的 I/O 端口地址为21H ,可以写入中断屏蔽字,以对8 个中断源是否容许中断进行控制。在每次中断结束时,要通过I/O 端口地址 20H 写回 一个中断结束命令EOI ,使 8259 可以清除本次中断。 因此本实验既属于输入输出实验,也属于中断实验。 有关说明将详细地附在参考程序中。 3实验内容 利用 pc 机键盘,编写一个读入并显示键盘输入的演示程序。该程序只接受常规字符(包括回车键及退格键),对特殊功能键不进 行处理。在程序
16、中设置这些特殊功能键对应0 编号即可,凡是检测到键位编号为0 值时,均忽略对它们的处理。有键按下时,送出的 扫描码的D7 位为 0 时,当键抬起时,扫描的码D7 位为 1,以判定键是否被按下。4实验准备 - 3 -安徽工程科技学院计算机 XXD 汇编语言程序设计上机实验指导书 (1)预习输入输出程序设计的特点和方法。 (2)仔细阅读参考程序,弄清外围芯片接口初始化的意义和方法。 5实验步骤 (1)建立源文件,并通过汇编和连接,产生可执行文件。 (2)运行程序,观察常规字符键及功能键按下时程序的反应, 6实验报告要求 (1)给出程序框图,包括主程序框图、中断处理程序框图。 (2)说明输入输出程序
17、设计的特点。 (3)讨论:将SHIFT 键及右SHIFT 键也进行判别处理,它们的扫描码为42 及54。为记录SHIFT 键的按动状态,可设一个标志单元 KBFL AG , 右 SHI FT 按下, KBFLAG 的D0位 置 1, 左 SHI FT 按下, KBFLAG 的 D1 位 置 1,放下左 右的 SHI FT 键, KBFLAG 的 相 应恢复 为 0。当程序工作时,应能显示上档键的字符。 实验五字符处理程序实验 1.实验目的 (1)熟悉串操作指令的功能与应用 (2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。 2实验内容 (1)字符串统计。自 STRN 开始的存
18、储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两 位十进制数显示在屏幕上。 (2)在给定的字符串中,删除重复的字符,其余的字符向前递补。 3.实验准备 (1)熟悉字符处理的方法和字符处理程序的设计; (2)认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数据。 (3)按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。 4实验步骤 (1)用 1 号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能得到不同的结果。 (2)编写一个在同一个字符串中删除字符,并将其余字符向前递补的程序。 5实验报告要求 (1)对照参
19、考程序,画出程序流程图。 (2)总结字符串处理的编程方法,提出改进和完善此类程序的设计方案。 实验六 BIOS 和 DOS 中断调用应用程序设计 1.实验目的 (1)了解D OS、 BIOS 调用的基本功能、调用参数、返回参数。以及数据定义掌握中断通信程序的设计方法。 (2)掌握如何利用扫描码进行功能控制。 2.实验内容 编写一个可以进行光标左右移动和插入字符的简单字处理程序。 3.实验准备 (1)复习相关内容 (2)了解键盘的扫描码、ASCII 码及其显示字符(如果存在可显示字符形式)之间的对应关系。 4.实验步骤 (1)建立源文件,汇编、连接产生可执行文件。 (2)运行程序,使得可以输入字
20、符和光标左右移动及字符的插入。 5.实验报告要求 (1)由参考程序,画出简单字处理程序框图。 (2)讨论如何实现光标的上下移动和字符的删除。 源程序清单 - 4 -安徽工程科技学院计算机 XXD 汇编语言程序设计上机实验指导书 实验 2 (1)编写一个程序S21,将内存中一组有符号的字数组按递增的序列排序,并将其中的二进制数以十六进制的形式显示在屏幕上。 ;S21.ASM DSEG SEGME NT X DW 234H,32FH,90DH,123EH,-78EH,0ACFH,- 234H,98H,-23DFH COUN T DW 9 DSEG ENDS CSEG SEGMENT ASSU ME
21、 CS:CSEG,DS:DSEG MAIN PROC FAR STAR T: PUSH DS XOR AX,AX PUSH AX MOV AX,DS EG MOV DS,AX MOV CX,COUNT LAB0: MOV BX,1 DEC CX JZ LAB3 PUSH CX LEA DI,X LAB1: MOV AX,DI CMP AX,DI+ 2 JLE LAB2 XOR BX,BX XCHG AX,DI +2 MOV DI,AX LAB2: ADD DI,2 LOOP LAB1 POP CX CMP BX,0 JZ LAB0 LAB3: LEA DI,X MOV CX,COUNT LAB
22、4: PUSH CX MOV CH,4 MOV BX,DI LAB5: MOV CL,4 ROL BX,CL MOV DL,BL AND DL,0F H CMP DL,9 JBE LAB6 ADD DL,7 LAB6: ADD DL,30 H MOV AH,2 INT 21H DEC CH JNZ LAB5 - 5 -安徽工程科技学院计算机 XXD 汇编语言程序设计上机 实验指导书 MOV DL,20H MOV AH,2 INT 21H ADD DI,2 POP CX LOO P LAB4 MOV DL,0D H MOV AH,2 INT 21H MOV DL,0A H MOV AH,2 IN
23、T 21H LEA DI,X MOV CX,COUNT LAB 7: MOV BX,DI PUS H CX MOV CX,16 LAB 8: XOR DL,DL ROL BX,1 RCL DL,1 ADD DL,30H MOV AH,2 INT 21H LOO P LAB8 MOV DL,B MOV AH,2 INT 21H MOV DL, MOV AH,2 INT 21H ADD DI,2 POP CX LOO P LAB7 RET MAI N ENDP CSE G ENDS END START 其中斜体字部分为以二进制输出。 (2)编写一个程序 S22,判别键盘上输入的字符;若是 1-9 字符,则显示之;若为 A-Z 或 a-z 字符,均显示“ c ”;若是回车字符 ( 其 ASCI 码为 0DH) ,则结束程序,若为其它字符则不显示,继续等待新