《微机原理与应用技术》实验指导书.docx
- 文档编号:26875461
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:37
- 大小:741.96KB
《微机原理与应用技术》实验指导书.docx
《《微机原理与应用技术》实验指导书.docx》由会员分享,可在线阅读,更多相关《《微机原理与应用技术》实验指导书.docx(37页珍藏版)》请在冰豆网上搜索。
《微机原理与应用技术》实验指导书
《微机原理》
实
验
指
导
书
中国民航大学计算机学院
2012年07月
目录
第1部分 实验预备知识………………………………………………2
1.1 汇编语言程序的上机过程…………………………………...2
1.2 常用DEBUG命令介绍………………………………………3
1.3 Dais-x86系统介绍…………………………………………...8
第2部分 实验……………………………………………..………….15
实验1Debug命令及汇编指令和寻址的应用………….......15
实验2汇编语言程序的调试与运行……………………………16
实验3分支结构程序设计…………………………................17
实验4循环程序设计………………………………………........18
实验5串操作指令应用…………………………………............20
实验6 DOS中断功能调用程序设计……………………...........21
实验7 子程序设计……………………........................................22
实验8 存储器扩展实验……………………................................23
实验9 8259单级中断控制实验……………………...................24
实验10 8259多级中断控制实验......……………………...........25
第一部分实验预备知识
1.1 汇编语言程序的上机过程
一、所需文件
为运行汇编语言程序至少要在磁盘上建立以下文件:
EDIT.COM(编辑程序)或其他编辑软件
MASM.EXE(汇编程序)
LINK.EXE(连接程序)
DEBUG.EXE(调试程序,DOS外部命令文件)
二、运行汇编语言程序的操作步骤
1.用EDIT编辑程序建立.ASM源文件;
2.用MASM汇编程序把ASM文件转换成.OBJ文件;
3.用LINK连接程序把OBJ文件转换成.EXE文件;
4.用DOS命令直接输入文件名就可执行该程序。
5.如果程序有错,还要用到DEBUG调试程序调试。
三、汇编语言源程序上机操作过程
第一步:
建立汇编源程序(即:
建立文件名.asm)
这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。
将源程序代码录入计算机的方法很多,下面将介绍具体方法。
通过windows自带的文本编辑器进行输入。
双击图标或在DOS提示符下键
入:
EDIT回车,EDIT的操作画面便会出现在屏幕上,用户就可在提示符下进行录入了,当录入完毕后,选择存盘并给输入的文件起一个文件名,形式:
filename.asm;(其中filename为用户自己起的文件名,由1-8个字符组成),.ASM是为汇编程序识别而必须加上去的,不可更改。
说明:
也可以用用户自己所熟悉的文本编辑器进行录入、编辑,如c语言或pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
第二步:
汇编目标文件(即:
编译为.obj.lst.crf文件)
这个过程计算机将把用户自己编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。
如果此时用户的程序有语法错误,系统将报错,并指出在第几行,什么类型的错误,用户可根据提示去逐一修改。
具体过程介绍如下:
双击图标或在DOS提示符下键入MASMfilename回车。
这时汇编程序的输出文件可以有3个(分别为:
.obj.lst.crf),便会出现三次提问,在这可以一路回车即可。
下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行下一步。
但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。
但如果错误太多还未等看清就显示过去了,可用如下命令形式将错误信息存于一个用户自己指定的文件,再用文本编辑器去查看。
MASMfilename>filen(filen为用户自己起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。
第三步:
编译不通过,重新修改(错误类型:
源程序语句不合法)
在执行过第二步后,如有出错信息时,就不能跳跃到第四步去,如果强行执行第四步,将无任何有效结果。
说明:
要清楚,在第二步中检测出的错误均为每一条语句的语法或用法错误,它并不能检测出程序的逻辑设计(语句安排位置)错误,所以就要记好出错的行号。
在记录行号后,就应再次执行第一步,这时的操作应是打开已编好的源程序(以EDIT为例:
在DOS提示符下键入:
EDITfilename.asm回车,依据行号进行修改并存盘,再次进行汇编,直至第二步通过为止。
便可继续向下执行第四步。
第四步:
连接为可执行文件(即:
连接为.exe或.com文件)
在这个过程中一般没有意外,如果有也就是文件名打错了。
双击
或在DOS提示符下输入命令:
LINKfilename回车
第五步:
运行编译好的可执行文件
当第四步通过后,会产生一个可执行文件,这时只需运行这个程序,看它是否按自己所想象那样得出结果。
在试运行期间,要尽量试一些临界状态,看程序是否运行稳定、结果是否正确。
如一切正常,便可进入第六步了。
第六步:
用调试工具DEBUG调试,重新修改(逻辑错误)
1.2 常用DEBUG命令介绍
一、DEBUG的主要用途及DEBUG的调用
DEBUG是为汇编语言设计的一种调试工具,它通过单步执行、设置断点等方式为汇编语言程序员提供了非常有效的程序调试手段。
DEBUG可以直接用来检查和修改内存单元、装入、存储及启动运行程序、检查及修改寄存器,也就是说DEBUG可深入到计算机的内部,可使用户更紧密地与计算机中真正进行的工作相联系。
不仅如此,对汇编语言初学者来说,DEBUG也是练习使用汇编指令的一种有效工具。
初学者可以直接在DEBUG环境下执行汇编指令。
然而,在DEBUG下运行汇编语言源程序也受到了一些限制,它不宜汇编较长的程序,不便于分块程序设计,不便于形成以DOS外部命令形式构成的.EXE文件,不能使用浮动地址,也不能使用ASM和MASM提供的绝大多数伪指令。
在DOS系统中,DEBUG是以DOS外部命令文件形式提供给用户的,名为DEBUG.EXE。
进入DEBUG的提示符是符号“-”。
即,出现提示符“-”就表示可以接受DEBUG命令了。
当进入DEBUG时,寄存器和标志设成以下数值,这些值用于DEBUG调试中的程序。
◆段寄存器CS,DS,ES和SS均指向DEBUG末尾的第一个段。
◆IP寄存器置为0100H。
栈指针SP指向尾部或装入程序的暂存部分的底部。
◆其余寄存器皆取零值,但若用户调用时含文件说明,则CX含文件长度(长度大于64K时BX含长度的高位);标志为各自的复位值;驱动器传送地址在代码段位移80H处。
注意:
若DEBUG装入扩展名为.EXE的文件,则DEBUG需重定位且设置段寄存器指示器为文件中所定义的值。
但DS,ES指向最低可用段处的程序区前缀。
BX和CX为文件容量值。
而.EXE文件如果在连接时选择了装入内存高处的参数,则该程序装入高处。
二、DEBUG的主要命令功能与格式
DEBUG命令是在DEBUG提示符“-”下,由键盘键入的。
每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键Enter。
命令及参数的输入可以是大小写的结合。
Ctrl+Break键可中止命令的执行。
Ctrl+NumLock键可暂停屏幕卷动,按任一键继续。
所用数均为十六进制数,且不必写H。
1.*汇编命令A
格式:
A[[<段寄存器名>/<段地址>:
]<段内偏移>]
以上格式有以下4种具体格式:
(1)A<段寄存器名>:
<段内偏移>
(2)A<段地址>:
<段内偏移>
(3)A<段内偏移>
(4)A
功能:
键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。
说明:
其中
(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:
100作地址。
以后命令中提及的各种‘地址’形式,均指
(1)、
(2)、(3)中A后的地址形式。
2.*显示内存命令D
格式:
D[<地址>/<范围>]
以上格式有以下3种具体格式:
(1)D<地址>
(2)D<范围>
(3)D
功能:
以两种形式显示指定范围的内存内容。
一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以‘.’代替。
说明:
其中
(1)以CS为段寄存器。
(3)显示CS:
100起始的一片内容。
3.*修改内存命令E
格式:
E<地址>[<单元内容表>]
以上格式有以下2种具体格式:
:
(1)E<地址>
(2)E<地址><单元内容表>
其中<单元内容表>是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。
功能:
(1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter为止。
(2)将<单元内容表>逐一写入由<地址>开始的一片单元。
4.填充内存命令F
格式:
F<范围><单元内容表>
功能:
将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。
例如:
-F5BC:
200L10B2,‘XYZ’,3C
5.*执行命令G
格式:
G[=<地址>[,<断点>]]
以上格式有以下3种具体格式:
(1)G
(2)G=<地址>
(3)G=<地址>,<断点>
功能:
执行内存中的指令序列
说明:
(1)从CS:
IP所指处开始执行
(2)从指定地址开始执行
(3)从指定地址开始执行,到断点自动停止。
6.读盘命令L
格式:
L<地址>
其中<地址>的缺省值为CS:
100。
功能:
必须在L之前由N命令指定(或进入DEBUG时一并指出)所读驱动器文件名。
此时L执行后将该文件装入内存。
例如:
-NEXAMPLE
-L
将当前驱动器上的EXAMPLE文件装入CS:
100起始的一片内存单元。
7.命名命令N
格式:
N<文件名>
功能:
为L/W命令指定待装入/写盘文件
8.结束DEBUG返回DOS命令Q
格式:
Q
功能:
返回DOS提示符下
9.*显示修改寄存器命令R
格式:
R[<寄存器名>]
以上格式有以下2种具体格式:
(1)R
(2)R<寄存器名>
功能:
(1)显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句形式。
其中对状态标志FLAGS以每位的形式显示,详见表1-1。
表1-1状态标志显示形式
标志位
溢出OF
方向DF
中断IF
符号SF
零ZF
辅助AF
奇偶PF
进位CF
状态
有/无
减/增
开/关
负/正
零/非
有/无
偶/奇
有/无
显示
OV/NV
DN/UP
EI/DI
NG/PL
ZR/NZ
AC/NA
PE/PO
CY/NC
(2)显示指定寄存器内容
例如:
-RAX
-RF
10.跟踪命令T
格式:
T[=<地址>][<条数>]
功能:
执行由指定地址起始的、由<条数>指定的若干条命令。
其中<地址>的缺省值是当前IP值,<条数>的缺省值是一条。
例如:
-T
-T10
11.*反汇编命令U
格式:
U[<地址>/<地址范围>]
以上格式有以下3种具体格式:
:
(1)U<地址>
(2)U<地址范围>
(3)U
功能:
将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。
注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。
地址及范围的缺省值是上次U指令后下一地址的值。
这样可以连续反汇编。
12.写盘命令W
格式:
W<地址>
功能:
W命令与L命令不同的地方是将内存从<地址>起始的一片单元内容写入指定磁盘。
注意:
要求读者对其中打"*"的DEBUG命令必须能熟练使用。
三、使用DEBUG调试和运行可执行文件
用户程序经过编辑、汇编、连接后得到一个可执行文件(.EXE),这时借助于调试程序DEBUG对用户程序进行调试,查看程序是否能完成预定功能。
对于初学者,如何选用DEBUG中各命令,有效地调试与运行程序,需要一个学习过程。
在初次使用DEBUG时,可参照下列步骤进行。
1.调用DEBUG,装入用户程序
可以在调用DEBUG是直接装入用户程序可执行文件,也可以在进入DEBUG环境后使用N命令和L命令装入用户程序可执行文件。
无论用哪种方法,装入用户程序可执行文件时,一定要指定文件全名(即文件名和扩展名)。
2.观察寄存器初始状态
程序装入内存后,用R命令查看寄存器内容。
从各段寄存器现在的内容,便能了解用户程序各逻辑段(代码段,堆栈段等)在内存的分布及其段基值。
R命令亦显示了各通用寄存器和标志寄存器的初始值,显示的第三行就是即将执行的第一条指令。
3.以单步工作方式开始运行程序
首先用T命令顺序执行用户程序的前几条指令,直到段寄存器DS和/或ES已预置为用户的数据段。
在用T命令执行程序时,每执行一条指令,显示指令执行后寄存器的变化情况,以便用户查看指令执行结果。
4.观察用户程序数据段初始内容
在第3步执行后DS和/或ES已指向用户程序的数据段和附加段,这时用D命令可查看用户程序的原始数据。
5.继续以单步工作方式运行程序
对于初学者,一般编写的程序比较短,用T命令逐条执行指令,可清楚地了解程序的执行过程:
现在执行的是什么指令,执行后的结果在哪里(寄存器,存储单元)?
所得结果是否正确?
等等。
在逐次使用T命令时,若有需要,可选用D命令了解某些内存单元的变化情况。
用T命令逐条执行程序时,如遇上用户程序中的软中断指令INT(如INT21H),这时,通常不要用单步工作方式执行INT指令。
因为系统提供的软中断指令INT是以中断处理子程序形式实现功能调用,且这种处理子程序常常是较长的。
若用T命令去执行INT指令,那么将跳转到相应的功能调用于程序中,要退出该子程序需要化费较多时间。
如果既要执行INT指令,又要跳过这段功能调用子程序,则应使用连续工作方式(G命令),且设置断点,其断点应为INT指令的下一条指令。
例如要以单步工作方式执行下面一段程序:
10B0:
0022MOVDX,0010
10B0:
0026MOVAH,09
10B0:
0028INT21
10B0:
002AMOVCX,00
当用T命令完成“MOVAH,09”指令后,应使用G命令:
-G002A
这样,以连续工作方式实现功能调用后,即暂停在偏移量为002A的“MOVCX,00”指令处(未执行),如同用单步工作方式完成INT指令的执行一样。
6.连续工作方式运行程序
在用单步工作方式运行程序后,可再用连续工作方式从头开始运行程序,查看运行结果。
在用G命令时,注意指定运行程序的起始地址。
若G命令中未指定起始地址,就隐含为从当前CS:
IP指向的指令开始。
7.修改程序和数据
经过上面几步后,若发现程序有错,则需要适当进行修改。
这时,如果仅需作个别修改,可在DEBUG状态下,使用A命令。
这种修改仅仅是临时修改内存中的可执行文件,未涉及源程序。
当确认修改正确后,应返回至编辑程序,修改源程序,然后再汇编、连接。
为了确认用户程序的正确性,常常需用几组不同的原始数据去运行程序,查看是否都能获得正确结果。
这时,可用E命令在用户程序的数据段和附加段中修改原始数据,然后再用T命令或G命令运行程序,查看运行结果,直到各组数据都能获得正确结果为止。
8.运用断点调试程序
如果已确认程序是正确的,在连续工作方式下,可快速地运行程序;如果已知程序运行结果不正确,用G命令运行程序,中途不停,很难查找错误。
改用T命令,虽然可以随意暂停程序的执行,但是运行速度慢,如果运用断点,可快速查找错误。
这里的“断点”是程序连续运行时要求暂停的指令位置(地址),用要求暂停的一条指令首字节地址表示。
当程序连续运行到这断点地址时,程序就暂停,并显示现在各寄存器内容和下面将要执行的指令(即断点处指令)。
为了准确设置断点,可用反汇编命令U察看源程序。
运用断点,可以很快地查找出错误发生在哪一个程序段内,缩小查找错误的范围。
然后在预计出错的范围内,再用T命令仔细观察程序运行情况,确定出错原因和位置,完成程序的调试。
1.3 Dais-x86系统介绍
一、系统组成
Dais微机仿真实验系统由系统单元、目标CPU、接口实验单元和内置稳压电源组成,可通过USB口或RS232C串行接口与PC微机相连,系统硬件主要内容如下:
CPU管理CPU89C52、目标CPU8032/78E438系统存储器监控在89C52内E2PROM(8K)、RAM6264、RAM61256一片(32K)、BPRAM61256(32K)。
接口芯片及单元实验8253、8255、8259、ADC0809、DAC0832、6264、164、273、244、393分频、电子发声单元,电机控制单元,开关及发光二极管、单脉冲触发器、继电器控制、16×16点阵、8155扩展3×3键盘、四位LED显示、2×16LCD液晶显示、40芯锁紧式接口扩展及*8250、8251串行通信等。
外设接口打印接口,RS232C串口、D/A驱动接口、步进电机驱动接口、音频驱动接口、支持P0口、P2口及P3.6、P3.7的第二功能(PIO)的仿真、2×16LCD液晶显示接口显示器6位LED、二路双踪示波器键盘32键自定义键盘EPROM编程器对EPROM2764/27128快速读出系统电源+5V/2A,±12V/0.5A
二、系统功能与特点
(1)自带键盘、显示器,能独立运行,也可以PC机为操作平台。
两种工作方式任意选择。
(2)系统采用紧耦合多CPU技术,用89C52作为系统管理CPU,8032或438作为目标机仿真与实验CPU,其软硬件资源100%开放。
(3)目标CPU8032/438采用主频为6MHz,向用户提供实验方式和两种仿真方式(RAM方式和EPROM方式)。
(4)配有一片RAM61C256构成系统的32K程序空间,地址范围为0000H~7FFFH,还配一片61C256(32K)作为用户设置的断点区(BPRAM)。
(5)通过USB或RS232通信接口,在Windows/DOS集成软件的支持下,利用上位机丰富的软件硬件资源,实现用户程序的编辑、编译、调试运行,提高实验效率。
(6)具有最丰富的调试手段,系统全面支持硬件断点,可无限制设置断点,同时具有单步、宏单步、连续运行及无限制暂停等功能,100%保护用户现场,返回监控。
三、系统资源分配
实验系统寻址范围定义如下:
空间地址
器件选用
用途与说明
0000H~7FFFH
61C256
仿真程序空间
0000H~0FFFFH
EPROM
目标机程序空间
0000H~0FFFFH
实验接口电路
实验空间
0000H~0FFFFH
RAM/IO
目标机数据空间
系统已定义的I/O地址如下:
接口芯片
口地址
用途
74LS2730
FFDDH
字位口
74LS2730
FFDCH
字形口
74LS245
0FFDEH
键入口
8255A口
0FFD8H
EP总线
8255B口
0FFD9H
EP地址
8255C口
0FFDAH
EP控制
8255口
0FFDBH
控制字
四、实验操作步骤
1、实验箱与微机的连接,如下图所示
实验仪两根线:
一根接电源,一根USB线。
2、开实验仪,电源在实验仪后左侧
3、查看端口
(1)在桌面上右键单击“我的电脑”,在弹出的窗口中选择“属性”。
(2)在弹出的“系统属性”窗口中,选择“硬件”。
(3)单击“设备管理器”,在设备管理器窗口中查看“端口”。
会新出现一个USB的端口“COMi”(COM3或COM4)
4、进入“微机原理”实验集成环境。
方法为:
双击桌面上的“
”,在弹出的界面中选择相应的端口,如COM3;点“确定”进入集成环境。
5、连线
(1)在“集成环境”中,单击“实验指导”,选择“硬件项目”中的相应实验。
(2)再在“实验指导”中选择“实验指导”。
就会调出“实验指导”的内容。
五、操作说明
1、系统操作说明
打开电源开关,系统应显示闪动的“P.”,处于待命状态;否则按下RESET键,如仍再不显示,应立即切断电源,检查后重新进行。
在闪动的“P.”状态下按键:
[MOVE]→0000→[STEP]→[EXEC],系统以连续方式运行“8”字循环右移程序,若6位LED出现跑“8”显示,说明系统已进入正常工作状态,可按RESET键返“P.”待令。
2、集成环境中的“快捷使用”说明
●点击工具条中“
”图标,在打开的对话框中双击要操作的.asm文件,可进入实验源程序的编辑窗口。
●点击工具条中“
”图标,可进行源文件的编译、装载,在出现编译成功的对话框后点击“OK”框可自动进入源文件调试状态。
●在工具条中点击所需的运行方式:
“
”单步、“
”宏单步、“
”运行。
●若需要以断点方式运行,可直接点击源语句行前的“
”图标来完成所需断点的设置与清除,然后再点击断点图标进入断点运行状态。
3、提示说明
(1)新建文件夹。
在C:
\Dais下新建一文件夹MASM,其中复制MASM、LINK文件。
(2)新建文件。
C:
\Dais下新建一文件,以.asm命名并保存。
(3)编译、连接。
“编译”菜单如下图
(4)“装载”。
(5)运行测试。
运行时要先设断点(断点设置有两种方法)。
然后运行(通过菜单或工具栏)都可以。
4、138译码器及LED数码管编程说明
(1)LED数码管显示器编程说明
●数码管笔段名称及位置
实验箱使用的是共阴数码管,即0点亮、1熄灭。
排列顺序:
dpgfedcba
若显示“P.”:
00001100
相应的字形码为:
0Ch
●数码管显示字形与字位控制口
字形控制口:
FFDCh(字形编码见上图)
字位控制口:
FFDDh(从左到右第1到6位分别对应20h,10h,08h,04h,02h,01h)
●运用示例
实验箱数码管是动态扫描显示,每一时刻只能显示6位数码管中的其中一位。
当循环扫描时,利用“视觉残留”的特性,可以看到第1到6位均有显示。
若要在第1位显示“P.”字样,相关指令为:
MOVDX,0FFDDH;字位控制口
MOVAL,20H;指向第1位
OUTDX,AL
MOVDX,0FFDCH;字形控制口
MOVAL,0C0H;装入“P.”字形
OUTDX,AL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与应用技术 微机 原理 应用技术 实验 指导书