1、完整版)微机原理实验指导书 《8086/8088微机原理与接口技术》 实验指导书 成都理工大学 核技术与自动化工程学院 电气工程系 2012-9-10 目 录 实验一 EMU 8086软件的使用 1 实验二 8086指令观察 3 实验三 顺序结构程序设计 5 实验四 分支结构程序设计 7 实验五 循环结构程序设计 9 实验六 子程序设计 11 附录1 汇编语言上机实验基础 13 1.1 汇编语言程序上机实验过程 13 1.2 EMU 8086 14 1。3
2、 实验及实验报告要求 17 基础软件实验部分共有六个实验组成,通过对这些实验程序的编写、调试,使学生熟悉8086/8088的指令系统等,了解程序设计过程,掌握汇编程序设计方法以及如何使用实验系统提供的各种调试、分析手段来排除程序错误。 实验一 EMU 8086软件使用 EMU 8086是一款基于Windows的集编辑、汇编、链接、调试运行于一体的可视化的8086 CPU仿真软件,有着与8086十分相近的功能。EMU8086是交互式学习汇编语言(Assembly Language)、计算机结构(Computer Architecture)和逆向工程(Reverse Enginee
3、ring)的完整仿真体系。其内部集成了汇编程序汇编器、链接器、虚拟硬件、参考资料、例程、学习指南等.EMU8086是学习Intel 8086微处理器的理想工具,它模拟真实微处理器的每一步骤,并显示内部寄存器、存储器、堆栈、变量和标志寄存器,而且其中任何一个数值都可通过鼠标双击来改变.同时它还提供了微机显示器、直流步进电机、交通灯、LED等虚拟外设。 本节对EMU 8086的使用方法作一简介,仍以例1的HELLO程序为例。 双击EMU8086图标,打开程序.此时会弹出welcome窗口,见图1.1所示,可将该窗口关闭直接进入编辑状态;也可点击它的new按钮,则会弹出代码模板选择框供用户选择(
4、可选择EXE模板),见图1。2所示,一般点击Cancel按钮,直接进入编辑状态。在编辑窗口,可直接将源程序输入,见图1.3所示。 图1.1 welcome窗口 图1.2 模板选择 图1.3编辑窗口输入源程序 点击compile(编译)按钮则进行汇编和链接,生成.EXE文件,并提示存盘. 点击emulate(仿真)按钮则可进入8086仿真器界面,见图1。4所示。界面中提供了寄存器窗口、内存单元窗口及反汇编窗口,下方一行按钮则提供了虚拟屏幕、源代码观察、复位、辅助工具、变量、DEBUG、堆栈及FLAGS(标志寄存器)观察等功能。 用户可点击run连续运行程序,也可点
5、击single step对程序进行单步调试。 图1.5为HELLO。EXE的运行结果,用户通过虚拟屏幕观察,非常形象生动。 图1。4 8086仿真器界面 图1.5 HELLO。EXE的运行结果 EMU 8086提供了断点设置功能,见图1.6所示,先用鼠标选中要设置为断点的指令,然后点击菜单debug——set break point,即可设置断点。若要清除断点,则点击菜单debug——clear break point. 图1.6 断点设置 EMU 8086也支持DEBUG调试程序,仿真器界面下方的一行按钮中有debug按钮,点击打开后可输入DEBUG命令进行调试。
6、见图1.7所示. 图1。7 EMU 8086提供的DEBUG 实验二 8086指令观察 一、实验目的和要求 1. 掌握汇编语言程序编辑、汇编、链接和调试的基本概念。 2。 掌握在PC机上建立、汇编、链接和运行8088汇编语言程序的过程。 3。 通过观察深入掌握数据传送类、算术运算类和逻辑运算类等各类指令的功能。 二、实验任务 编辑汇编程序,并汇编、链接和调试程序,验证结果。 三、实验设备和软件 PC机、EMU8086 四、实验内容 1. 寻找最大最小数程序实验 设内存缓冲区从BUF单元开始,存放若干个单字节数,其数据长度在BUF单元,要求找出最大数送MAX单元
7、最小数送MIN单元。 源程序: ;FILENAME:MAXMIN。ASM DATA SEGMENT BUF DB 9,-4,55,78,—9,0,41,124 B1 EQU $—BUF MAX DB ? MIN DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV CH, 0 MOV CL, B1 ;CX=数据个数 DEC
8、CX ;循环次数 MOV AL, BUF ;第一个数据送AL寄存器 MOV MAX, AL ;假设第一个数是最大数 MOV MIN,AL ;假设第一个数是最小数 MOV BX, OFFSET BUF+1 ;下一个数据地址 LAST: MOV AL, [BX] CMP AL, MAX ;比较 JG GREAT CMP AL, MIN JL LESS JMP NEXT GREAT: MOV MAX, AL ;大数-〉MAX JM
9、P NEXT LESS: MOV MIN, AL ;小数—〉MIN NEXT: INC BX LOOP LAST NOP ;实验时程序执行到此,通过D命令查看数据段结果 MOV AH, 4CH INT 21H CODE ENDS END START 2。 代码转换实验 从键盘输入2个十进制数组合成压缩BCD码存入DL,再将压缩BCD码转换成ASCII码送CRT显示。 源程序: CODE SEGMENT ASSUME CS:CODE ST: MOV
10、 AH, 01H ;键盘输入并回显,AL=输入字符 INT 21H MOV CL, 4 SHL AL, CL MOV DL, AL MOV AH, 01H INT 21H AND AL, 0FH OR DL, AL MOV BL, DL ;保护DL原值 SHR DL, CL OR DL, 30H MOV AH, 02H ;显示十位数,DL=输出字符 INT 21H MOV DL, BL AND DL, 0FH
11、 OR DL, 30H MOV AH, 02H ;显示个位数 INT 21H MOV AH, 4CH INT 21H CODE ENDS END ST 要求先编写汇编文件, EMU8086采用单步调试的方法进行运行调试,任意输入两个数字,验证实验结果。 五、实验报告 实验报告要求参考附录一。 实验三 顺序结构程序设计 一、实验目的和要求 1. 熟悉EMU8086集成环境软件的使用方法。 2. 熟悉8086汇编指令,能自己编写简单的程序,并调试运行验证结果。 二、实验任务 学习使用EMU808
12、6集成环境软件,验证及编写调试实验内容的程序。 三、实验设备和软件 PC机、EMU8086 四、实验内容 1. 编写简单程序,用数据运算指令,对两个16位数做加法运算。这两个数从地址10050H开始连续存放,低位在低地址一端,结果放在这两个数之后。 实验框图: 初始化 被加数→AX 开始 暂停 被加数+加数→AX AX→(00054)和(00050)单元 段地址DS:0000H , 被加数指针SI←50H 加数指针DI←52H ,和的指针BX←54H 段地址DS:0000H , 被加数指针SI←50H 清除AX和CF 程序清单: CODE
13、SEGMENT ASSUME CS:CODE BG: MOV AX,0000H MOV DS,AX MOV SI,50H MOV DI, 52H MOV BX, 54H CLC XOR AX, AX MOV AX, [SI] ADC AX, [DI] MOV [BX], AX HLT CODE ENDS END BG 2。 编写简单程序,实现组合BCD码转换成ASCII码送CRT显示。 程序清单: CODE
14、 SEGMENT ASSUME CS:CODE BEGIN: MOV AL,27H ;27的BCD码,先显示高位。 MOV DL, AL MOV CL, 4 SHR DL, CL OR DL, 30H MOV AH, 2 INT 21H ;显示'2’ MOV DL, AL AND DL, 0FH OR DL, 30H MOV AH, 2 INT 21H ;显示’7' MOV AH, 4CH INT
15、 21H CODE ENDS END BEGIN 3. 试用已学过的指令编程,运算以下算式: ⑴、5555H + 6666H + 8756H ⑵、5678 +(-1234)— 4321 4。 已知BX=12ABH,试编程将其内容转换成ASCII码送到数据段0100H单元开始存放. 五、实验报告 实验报告要求参考附录一. 实验四 分支结构程序设计 一、实验目的和要求 1。 学习分支结构程序的设计和调试方法; 2。 熟悉8086汇编指令中的程序控制指令的应用。 二、实验任务 学习使用EMU8086集成环境软件
16、验证及编写、调试实验内容。 三、实验设备和软件 PC机、EMU8086 四、实验内容 1。 已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中. 题目分析:根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用0减去这个数。8086/8088指令系统中有专门的求相反数的指令NEG. 实验框图: 开 始 AL≥0? N Y 结束 初始化 将X中的内容取到AL中 将AL中的内容求补 AL中的内容送RESULT单元 程序清单: DATA
17、 SEGMENT X DB -25 RESULT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS, AX ; 初始化 MOV AL, X ;X取到AL中 TEST AL, 80H ;测试AL正负 JZ NEXT ;为正,转NEXT NEG AL 否则AL求补 NEXT: MOV RESULT, AL ;送结果 MOV AH, 4CH
18、 INT 21H ;返回DOS CODE ENDS END START ;汇编结束 2。 编写计算下面函数值的程序: 1 X>0 Y= 0 X=0 —1 X<0 设输入数据为X、输出数据Y,且皆为字节变量. 3. 试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。 设三个带符号数分别在三个字变量X、Y、Z中存储。 五、实验报告 实验报告要求参考附录一。 实验五 循环结构程序设计 一、实验目的和要求 1.
19、 学习、掌握循环结构程序的设计和调试方法; 2. 熟悉8086汇编指令中的程序控制指令和LOOP指令的应用. 二、实验任务 学习使用EMU8086集成环境软件,验证及编写、调试实验内容。 三、实验设备和软件 PC机、EMU8086 四、实验内容 1. 编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止。统计被累加的自然数的个数送CN单元,累加和送SUM.流程图如下图所示。 实验框图: 开 始 AX≤1000? N Y 结束 初始化 0送AX,0送BX BX加1送BX AX加BX送AX BX送N,AX送SUM 程序清单: D
20、ATA SEGMENT SUM DW ? CN DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS, AX ; 初始化 MOV AX, 0 ;0送AX MOV BX, 0 LP: INC BX ;BX加1 ADD AX, BX ; 求累加和 CMP AX, 1000 ; 比较 JBE LP ; ≤1000转 MOV SUM, AX
21、 MOV CN, BX ; 送结果 MOV AH, 4CH INT 21H CODE ENDS END START ; 汇编结束 2. 采用LOOP指令来实现上例. 3。 已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数。 显然,每个元素为一个8位有符号二进制数,统计其中正元素的个数可用循环程序实现。 五、实验报告 实验报告要求参考附录一。 实验六 子程序设计 一、
22、实验目的和要求 学习子程序的结构、特点,以及子程序的设计和调试方法. 二、实验任务 学习使用EMU8086集成环境软件,验证及编写、调试实验内容。 三、实验设备和软件 PC机,EMU8086 四、实验内容 1. 设计一个子程序,功能是将一个字节的BCD码转换成二进制数. 说明:名称:BCD2BIN 功能:将一个字节的BCD码转换成二进制数 所用寄存器:CX 入口参数:AL存放两位BCD码 出口参数:AL存放二进制数 主程序及子程序清单: CODE SEGMENT
23、 ASSUME CS:CODE START: MOV AL,12H CALL BCD2BIN HALT BCD2BIN PROC NEAR ;子程序 PUSH CX MOV CH, AL AND CH, 0FH ;存低4位 MOV CL, 4 SHR AL, CL ;高4位右移4位后乘10 MOV CL, 10 MUL CL ADD AL, CH ;高4位加低4位 POP CX RET BCD2BIN ENDP
24、 CODE ENDS END START 2。 试编写一个将BCD码转换成ASCII码并显示的子程序。 3. 试编写一个求字变量绝对值的子程序。 五、实验报告 实验报告要求参考附录一。 附录1 汇编语言上机实验基础 1。1 汇编语言程序上机实验过程 图1。1 汇编语言程序上机实验过程 汇编语言上机实验的主要过程如图1.1所示,包括如下几个步骤: 1、建立和修改源程序文件 在编写出汇编语言源程序后,应建立源文件(扩展名为。ASM)。可运用Windows自带的记事本建立汇编源程序文件。 2、汇编源文件 .ASM源文件必须先由汇编程
25、序(如ASM、MASM、TASM等)把它汇编(翻译)为目标文件(扩展名为.OBJ),才能在计算机上运行。 3、链接(链接) 为了使目标程序文件能在特定的系统环境下执行,经汇编后产生的目标文件需经过链接生成可执行文件(扩展名为。EXE),才能在计算机上启动运行.链接过程通过调用链接程序来完成。 4、调试 程序必须经过试运行和调试后才能正式投入运行.若程序没有错误,前3步完成后即可运行程序。若程序有错误,则在汇编提示错误下修改程序,直到程序无误经过汇编、链接生成可执行文件。调用调试程序(如DEBUG、TDEBUG等)进行调试。 5、运行程序 在程序没有错误的情况下即可运行程序。
26、1。2 实验及实验报告要求 一、实验要求 上机实验是《微机原理及应用》课程一个重要的学习环节,要求学生在每次实验前应做充分的准备工作,认真预习,明确实验目的,在上机前自己编写出程序并认真检查,在实验过程中经过调试改正程序中的错误,得到正确的结果。自己有电脑的同学可预先在自己的电脑上进行调试。 在上机调试过程中,学生对遇到的问题要认真分析、找出原因给予解决.鼓励相互讨论,做到“动手、动脑、协作”,着重培养自主学习、研究性学习和协作学习的能力。要注意及时将调试的主要过程和结果记录或者拷屏保存. 二、实验报告要求 每次实验完成后,应认真撰写实验报告。实验报告的主要内容为: (1)实验目的和要求 (2)实验软件,写出本次实验用软件名称。 (3)实验内容,实验具体内容及实验结果记录 (4)调试说明和结果,指调试的主要过程和运行结果,以及有关的必要的说明。(流程图、源程序清单、拷屏截图等可以打印后以附件的形式粘贴在实验报告中。) (5)实验总结,对程序设计的技巧分析、对实验结果的分析等。 23






