1、微机原理与汇编语言前言本课程是一门实践性较强的课程。教学采用以课堂教学为主,讲授微型计算机的各部分组成、工作过程、互相之间的连接,以及如何使用汇编语言编程,同时使用教学实验设备,通过一定数量的实验,让学生动手完成微型机各部件之间通过接口的联接、编程及简单应用,使学生对微型计算机的主要技术做到深入理解、牢固掌握、灵活应用。并为一些对计算机硬件要求较高的专业提供了锻炼学生的动手能力以及发挥创造能力的实验平台。本实验系统在 windows 窗口界面调试软件和实验演示软件的支持下,极大地激发了学生学习、实验的兴趣,有效地提高了教学质量。本书的实验内容由汇编语言程序设计实验和硬件接口电路实验两个部分构成
2、。接口部分实验是针对 DVCC-8086H 通用微机原理与接口实验系统而设计的两个实验。通过开设基础性、提高性、综合性实验以及相关的课程设计,来提高学生的动手能力。实验指导书 微机原理与接口技术 第 1 页Page 1 of 20汇编语言程序设计的实验环境及上机步骤一、 实验环境汇编语言程序设计的实验环境如下:1、硬件环境微型计算机一台2、软件环境 Windows98/2000/XP 操作系统 任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT 等) 汇编程序(MASM.EXE 或 TASM.EXE) 连接程序(LINK.EXE 或 TLINK.EXE) 调试程序(DE
3、BUG.EXE 或 TD.EXE)文本编辑器建议使用 EDIT 或 NOTEPAD,汇编程序建议使用 MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用 TD.EXE。二、 上机实验步骤1、确定源程序的存放目录建议源程序存放的目录名为 ASM(或 MASM),并放在 C 盘或 D 盘的根目录下。如果没有创建过此目录,请用如下方法创建:通过 Windows 的资源管理器找到 C 盘的根目录,在 C 盘的根目录窗口中点击右键,在弹出的菜单中选择“新建 ”“文件夹” ,并把新建的文件夹命名为 ASM。把MASM.EXE、 LINK.EXE、DENUG.EXE 和 TD.EXE 都拷
4、贝到此目录中。2、建立 ASM 源程序汇编语言原程序后缀为.asm。建立 ASM 源程序可以使用 EDIT 或 NOTEPAD(记事本)文本编辑器。下面的例子说明了用 EDIT 文本编辑器来建立 ASM 源程序的步骤(假定要建立的源程序名为HELLO.ASM),用 NOTEPAD(记事本)建立 ASM 源程序的步骤与此类似。在 Windows 中点击桌面左下角的 “开始”按钮选择“运行”在弹出的窗口中输入“EDIT.COM C:ASMHELLO.ASM”,屏幕上出现 EDIT 的编辑窗口, 窗口标题行显示了 EDIT 程序的完整路径名。紧接着标题行下面的是菜单行,窗口最下面一行是提示行。菜单可
5、以用 Alt 键激活,然后用方向键选择菜单项,也可以直接用 Alt-F 打开 File 文件菜单,用 Alt-E 打开 Edit 编辑菜单,等等。如果键入 EDIT 命令时已带上了源程序文件名(C:ASMHELLO.ASM),在编辑窗口上部就会显示该文件名。如果在键入 EDIT 命令时未给出源程序文件名,则编辑窗口上会显示 “UNTITLED1”,表示文件还没有名字,在这种情况下保存源程序文件时,EDIT 会提示输入要保存的源程序的文件名。编辑窗口用于输入源程序。EDIT 是一个全屏幕编辑程序,故可以使用方向键把光标定位到编辑窗口中的任何一个位置上。EDIT 中的编辑键和功能键符合 Windo
6、ws 的标准,这里不再赘述。实验指导书 微机原理与接口技术 第 2 页Page 2 of 20源程序输入完毕后,用 Alt-F 打开 File 菜单,用其中的 Save 功能将文件存盘。如果在键入 EDIT命令时未给出源程序文件名,则这时会弹出一个“Save as”窗口,在这个窗口中输入你想要保存的源程序的路径和文件名(本例中为 C:ASMHELLO.ASM)。3、用 MASM.EXE 汇编源程序产生 OBJ 目标文件源文件 HELLO.ASM 建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ 文件)。具体操作如下:方法一:在 Windows 中操作用资源管理器打开
7、源程序目录 C:ASM,把 HELLO.ASM 拖到 MASM.EXE 程序图标上。方法二:在 DOS 命令提示符窗口中操作选择“开始”“程序”“附件”“命令提示符”,打开 DOS 命令提示符窗口,然后用 CD 命令转到源程序目录下,接着输入 MASM 命令:I:C: C:CD ASMC:ASMMASM HELLO.ASMC: C:CD ASM实验指导书 微机原理与接口技术 第 3 页Page 3 of 20C:ASMLINK HELLO.OBJ不管用以上二个方法中的哪个方法,进入 LINK 程序后,都会提示让你输入可执行文件名(Run file),并在方括号中显示默认的可执行文件名,建议输入
8、可执行文件的完整路径名,如:C:ASMHELLO.EXE回车 。后面的两个提示为可选项,直接按回车。注意,若打开 LINK 程序时未给出 OBJ 文件名,则 LINK 程序会首先提示让你输入 OBJ 文件名(Object Modules),此时输入OBJ 文件名 HELLO.OBJ 并回车,然后进行的操作与上面完全相同。如果没有错误,LINK 就会建立一个 HELLO.EXE 文件。如果 OBJ 文件有错误,LINK 会指出错误的原因。对于无堆栈警告(Warning:NO STACK segment)信息,可以不予理睬,它不影响程序的执行。如链接时有其它错误。须检查修改源程序,重新汇编、连接,
9、直到正确。5、执行程序建立了 HELLO.EXE 文件后,就可以直接在 DOS 下运行此程序,如下所示:C:HELLO回车程序运行结束后,返回 DOS。如果运行结果正确,那么程序运行结束时结果会直接显示在屏幕上。如果程序不显示结果,我们如何知道程序是否正确呢?例如,这里的 HELLO.EXE 程序并未显示出结果,所以我们不知道程序执行的结果是否正确。这时,我们就要使用 TD.EXE 调试工具来查看运行结果。此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用 TD.EXE。下图为汇编语言程序上机的整个流程:例:下面给出了一个完整的汇编语言程序 hello.asm,请按照
10、上面所介绍的过程练习。YYYNNN有错?有错?有错?结束汇 编输入(修改) 源程序连 接运 行查 错开始用EDIT,NOTEPAD等任何文本编辑器。源程序存为.ASM文件 用TD、DEBUG等调试程序进行调试。命令格式:TD 用LINK连接程序进行连接。连接后生成.EXE可执行文件。命令格式:LINK ; 用MASM宏汇编程序进行汇编。汇编后生成.OBJ目标文件。命令格式:MASM ; 实验指导书 微机原理与接口技术 第 4 页Page 4 of 20data SEGMENTHello DB Hello, world!,0DH,0AH,$data ENDSprog SEGMENTASSUME
11、CS:prog,DS:datastart: MOV AX,dataMOV DS,AXLEA DX,helloMOV AH,9INT 21HMOV AH,4CH INT 21Hprog ENDSEND start1、 用 MASM 程序对其进行汇编,产生 SAMPLE.OBJ 文件。2、 用 LINK 程序对其进行连接,产生 SAMPLE.EXE 文件。3、 执行 SAMPLE.EXE 文件,并观察运行结果是否相符。4、 用 DEBUG 调试程序。问题汇编语言源程序、汇编程序及汇编之间的区别与联系?程序中 MOV AH,4CH 与 INT 21H 这两条语句的功能是什么?能否省略?实验指导书 微
12、机原理与接口技术 第 5 页Page 5 of 20实验一 DEBUG 程序的使用预习内容预习 DEBUG 程序的各种命令功能及使用方法。实验目的1、 掌握 DEBUG 程序的各种命令,重点是 R,D ,E,U,T,G,Q 等命令的使用。2、 掌握用 DEBUG 调试自编程序的方法,为以后实验打下基础。实验内容1、 程序的装入和退出 C:DEBUGd:path name.exe退出 DEBUG -Q2、 程序的运行连续运行 -G=地址 1地址 2跟踪运行 -T=地址 值 缺省时从 CS:IP 处执行3、内容查询D 命令 显示内存单元内容 -D 地址R 命令 显示寄存器内容 -R 寄存器名4、修
13、改存储单元和寄存器E 命令 可方便地修改任一 RAM 单元的内容 -E 地址 内容表R 命令 修改寄存器内容 -R 寄存器名5、 反汇编U 命令 反汇编用于把内存单元的内容作为机器指令,用助记符的形式显示出来。-U 地址 或者 -U 地址范围。问题1、 在指令 MOV BX,AX 中,操作数BX的寻址方式是什么?在 DEBUG 下执行完该指令后,如何查看执行结果?2、 可否随意在 DEBUG 提示符“-”后不带参数发出命令 G?什么情况下使用命令 G 时,可不用“=”给出程序的首地址?实验指导书 微机原理与接口技术 第 6 页Page 6 of 20实验二 DOS 系统功能调用预习内容1、 预
14、习 DOS 系统功能调用的方法。2、 复习比较指令、条件转移指令的用法。实验目的1、掌握 DOS 系统功能调用中单字符的输入和显示;字符串的输入和显示的方法。2、掌握宏汇编语言 MASM 上机操作过程和系统功能调用的使用方法。实验内容设计要求:要求从键盘接受一个字符,并判断是否为Y如果是则从键盘读入一串字符I am glad to see you!并显示该字符;否则显示该输入的字符。问题1、 DOS 系统功能调用如何实现的?2、调用 INT 21H 中的 09H 功能时,要注意什么?实验指导书 微机原理与接口技术 第 7 页Page 7 of 20实验三 分支程序设计预习内容1、 预习转移类指
15、令的用法。2、复习比较指令、转移指令、的用法。实验目的1、学习提示信息的显示及键盘输入字符的方法。2、掌握宏汇编语言 MASM 上机操作过程和分支程序的编写方法。实验内容设计要求:要求从键盘接受一个字符,并判断是否是“09”数字键,如果是则提示:it is a number!,如果不是则提示:it is not a number!问题1、 转移指令分为哪几种,各指令之间有何区别?2、调用 INT 21H 中的 09H 功能时,要注意什么?实验指导书 微机原理与接口技术 第 8 页Page 8 of 20实验四 循环程序设计预习内容预习循环控制指令的用法。实验目的掌握宏汇编语言 MASM 上机操
16、作过程和循环程序的编写方法。实验内容设计要求:写一个把字符串中的所有大写字母改为小写的程序假设字符串以0结尾。参考流程如下:问题1、 循环控制指令分为哪几种,各指令之间有何区别?2、 汇编语言程序中语句 END 后的标号作用是什么?3、 一个段的大小为多少?一定是 64KB 吗?如何在 DEBUG 下查看程序在内存的存放情况?、取一个字符转成小写并保存调整指针是大写字符?到字符串尾?结束NY设置指向字符串的指针NY实验指导书 微机原理与接口技术 第 9 页Page 9 of 20实验五 子程序设计预习内容预习子程序的定义、调用及返回的方法。实验目的1、 掌握子程序设计的基本方法,包括子程序的定义、调用和返回,子程序中如何保护和恢复现场,主程序与子程序之间如何传递参数。实验内容设计要求:用子程序结构,将从 MEM 单元开始的 10 个 8 位无符号数按从大到小的顺序排列。问题1、 什么是子程序?2、 子程序设计与应用应注意哪些问题?3、 子程序调用有哪些技巧?