《微机原理与接口》
实验指导书
盐城工学院
光电信息技术研究所
周 锋 编写
2019年6月8日
基础软件实验部分共有8个实验组成,通过对这些实验程序的编写、调试,使学生熟悉8086/8088的指令系统等,了解程序设计过程,掌握汇编程序设计方法以及如何使用实验系统提供的各种调试、分析手段来排除程序错误。
实验一 EMU 8086软件使用
EMU 8086是一款基于Windows的集编辑、汇编、链接、调试运行于一体的可视化的8086
CPU仿真软件,有着与8086十分相近的功能。EMU8086是交互式学习汇编语言(Assembly Language)、计算机结构(Computer Architecture)和逆向工程(Reverse Engineering)的完整仿真体系。其内部集成了汇编程序汇编器、链接器、虚拟硬件、参考资料、例程、学习指南等。EMU8086是学习Intel 8086微处理器的理想工具,它模拟真实微处理器的每一步骤,并显示内部寄存器、存储器、堆栈、变量和标志寄存器,而且其中任何一个数值都可通过鼠标双击来改变。同时它还提供了微机显示器、直流步进电机、交通灯、LED等虚拟外设。
实验1对EMU 8086的使用方法作一简介,以HELLO程序为例,参考例程如下所示:
;****************************************************************
DSEG SEGMENT
MSG1 DB 'Hello,this is a sample program!',0DH,0AH,'$'
DSEG ENDS
;****************************************************************
SSEG SEGMENT STACK
ST1 DB 100 DUP()
TDP EQU $-ST1
SSEG ENDS
;****************************************************************
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START: MOV AX,DSEG
MOV DS,AX
MOV AX,SSEG
MOV SS,AX
MOV SP,TDP
MOV AH,9
MOV DX,OFFSET MSG1
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
;****************************************************************
双击EMU8086图标,打开程序。此时会弹出welcome窗口,见图1-1所示,可将该窗口关闭直接进入编辑状态;也可点击它的new按钮,则会弹出代码模板选择框供用户选择(可
选择EXE模板),见图1-2所示,一般点击Cancel按钮,直接进入编辑状态。在编辑窗口,可直接将源程序输入,见图1-3所示。
图1-1 welcome窗口
图1-2 模板选择
图1-3编辑窗口输入源程序
点击compile(编译)按钮则进行汇编和链接,生成.EXE文件,并提示存盘。
点击emulate(仿真)按钮则可进入8086仿真器界面,见图1-4所示。界面中提供了寄存器窗口、内存单元窗口及反汇编窗口,下方一行按钮则提供了虚拟屏幕、源代码观察、复位、辅助工具、变量、DEBUG、堆栈及FLAGS(标志寄存器)观察等功能。
用户可点击run连续运行程序,也可点击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命令进行调试。见图1-7所示。
图1-7 EMU 8086提供的DEBUG
实验二 数据传送实验
一、实验目的和要求
1. 熟悉8086指令系统的数据传送指令及8086的寻址方式。
2. 利用EMU8086调试工具调试汇编语言程序。
3. 通过观察深入掌握数据传送类指令的功能。
4. 初步理解汇编语言程序设计方法。
二、实验任务
编辑汇编程序,并汇编、链接和调试程序,验证结果。
三、实验设备和软件
PC机、EMU8086
四、实验内容
1. MOV指令实验
通过下述程序段的输入和执行来熟悉EMU8086的实用,并用单步调试的方式来观察每条指令执行的结果。
MOV BL,08H
MOV CL,BL
MOV AX,03FFH
MOV BX,AX
MOV DS:[0020H],BX
2. 堆栈操作指令实验
用一下程序段将一组数据压入堆栈区,并观察以三种方式出栈的结果,并把程序调试的结果写入表2-1中。(按照完整的汇编语言程序设计步骤进行)
表2-1 出栈后数据的变化
第一种出栈方式 | 第二种出栈方式 | 第三种出栈方式 | |
AX= | |||
BX= | |||
CX= | |||
DX= | |||
程序段如下:
MOV AX,0102H
MOV BX,0304H
MOV CX,0506H
MOV DX,0708H
PUSH AX
PUSH BX
PUSH CX
PUSH DX
;****************************************************************
第一种出栈方式:
POP DX
POP CX
POP BX
POP AX
;****************************************************************
第二种出栈方式:
POP AX
POP BX
POP CX
POP DX
;****************************************************************
第三种出栈方式:
POP CX
POP DX
POP AX
POP BX
3.将DS:1000H字节存储单元中的内容发送到DS:2020H单元中存放。试着分别用8086的直接寻址、寄存器间接寻址、寄存器相对寻址方式实现数据传送。
参考程序如下:
;****************************************************************
; 第一种方式,直接寻址
MOV [1000H],1234H ;设置初始值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论