微机原理实验指导书.docx
《微机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理实验指导书
微机原理与接口实验指导书
皖西学院机械与电子工程学院
2012.10
实验一DOS命令与汇编源程序输入、汇编、连接、运行
一、实验目的
掌握在计算机上运行汇编语言程序的整个操作过程。
学会将自己编制的汇编语言源程序用EDIT编辑程序输入计算机并存盘;学会用MASM宏汇编程序对汇编语言源程序进行汇编形成二进制目标文件;学会用LINK连接程序对二进制目标文件连接形成可执行文件;学会运行经汇编和连接后形成的可执行文件;学会用DEBUG调试程序运行和调试可执行文件。
二、实验设备
1、PC系列不低于80286档次的微型机;
2、DOS3.3以上版本的操作系统;
3、EDIT,MASM,LINK,DEBUG执行程序。
三、实验步骤
1、用EDIT编辑汇编源程序
(1)MS-DOSEditor的启动与退出
Editor是在DOS系统提示符下启动,其命令格式为:
C:
EDIT[Path][filename]
在编辑完成后,选择屏幕菜单的File命令(按“ALT+F”键)中的Exit项即可退出Editor。
(2)建立文本文件
在MS-DOSEditor的屏幕菜单栏中File命令就是对文本文件的建立、存储和打印的操作。
A.建立文件(New)
打开屏幕菜单栏中File下拉菜单,选择New项。
B.编辑文件
将写好的汇编语言源程序输入到编辑文本区。
输入时,一行
结束后按回车键(Enter)换行。
C.保存文件(Save)
打开屏幕菜单栏中File下拉菜单,选择Save项在弹出的对
话框中键入文件名。
如果要把文件保存到非默认路径下,则在键入文件名的同时键入路径。
D.打开文件(Open)
打开屏幕菜单栏中File下拉菜单,选择Open项。
该窗口中有三个区可以选择要打开的文件:
文件名区:
可以直接键入要打开的文件名;
文件表区:
文件表中列出要打开的所有文件名,供用户选择;
目录/磁盘区:
键入的文件名是哪个磁盘目录中的,在该区中选择。
在Open对话框中用“Tab”或“Shift+Tab”键选择各区。
选完后按“OK”确定。
2.MASM宏汇编程序的使用方法
(1)命令格式和功能
命令格式:
MASM文件名
功能:
对汇编语言源程序进行汇编形成二进制目标文件
(2)操作过程
在DOS下,将目录切换到汇编语言所在目录下,然后调入MASM宏汇编程序。
屏幕显示与操作如下(其中下画线部分表示由用户键入,↙表示回车):
c:
\HB\masm↙
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.
Sourcefilename[.ASM]:
myfile↙
Objectfilename[myfile.OBJ]:
↙
Sourcelisting[NUL.LST]:
↙
Cross-reference[NUL.CRF]:
↙
51698+417454Bytessymbolspacefree
0WarningErrors
0SevereErrors
宏汇编程序被调入后,先显示版本号,然后依次提出提示。
请用户回答。
第一行提问被汇编的源文件的名字,方括号内表示此文件带有后缀.ASM(.ASM是该源程序文件的隐含扩展名),此时应键入将要汇编的源程序文件的名字,并按回车键。
第二行提问汇编后目标文件的名字,括号中的名字表示约定的文件名(其文件名部分自动采用源程序文件名),若采用这个名字则直接键入回车键,否则键入另起的名字。
第三行提问是否要建立列表文件。
括号中的NUL为“空”的意思,表示不建立列表文件。
若要建立,则需键入文件名,名字任选,也可同源程序文件名,但后缀必须为.LST,后缀可由用户连同文件名一起输入,也可不输入,即自动采用隐含值。
若不需要建立列表文件,则在第三行提问后直接按回车键。
第四行是询问是否建立交叉索引文件,操作方法同上。
3.LINK连接程序的使用方法
(1)命令格式和功能
命令格式:
LINK文件名
功能:
连接二进制目标文件为可执行文件
(2)操作过程
在DOS下,将目录切换到汇编语言所在目录下,然后调入MASM宏汇编程序。
屏幕显示与操作如下(其中下画线部分表示由用户键入,↙表示回车):
c:
\HB\link↙
Microsoft(R)8086ObjectLinkerVersion3.05
Copyright(C)MicrosoftCorp1983,1984,1985.Allrightsreserved.
ObjectModules[.OBJ]:
myfile↙
RunFile[MYFILE.EXE]:
↙
ListFile[NUL.MAP]:
↙
Libraries[.LIB]:
↙
Warning:
nostacksegment
第一行提示要求输入目标文件名。
此时应键入你要连接的目标文件名(后缀.OBJ可省略。
LINK程序自动加上.OBJ为后缀)。
若要连接的是多个目标模块时,一定要用+号或空格将每个文件名分开。
如果输入的名字一行放不下,就在该行的最后输入一个+号,然后按回车键,这时连接程序就提示用户追加目标文件。
所有目标文件输入完后回车。
第二行提示要求输入将要生成的可执行文件的文件名,括号内为LINK程序给出的隐含文件名,它与第一行提示中的目标模块名一样,只是将后缀换成.EXE。
若第一行回答的目标模块是多个的话,则隐含的可执行文件名取为第一个目标文件名。
此行可不输入文件名而直接回车。
第三行提示问是否要建立列表(映象)文件,若要建立,可键入列表文件名,这时可不输入扩展名,由LINK程序自动按隐含值.MAP为扩展名。
如果不要列表文件,可直接按回车键。
第四行提示问是否需要连接库文件。
不需要可直接回车。
连接程序在生成可执行程序时,若用到文件库中的某些目标文件时,就可在连接程序的第四行提示时给出库的名字,以供LINK程序调用。
4.调试程序(DEBUG)
(1)DEBUG的功能及其启动
汇编语言经过编译、连接后生成目标代码。
当运行目标代码时可能出现错误的结果,如果直接查找错误就比较困难。
MS-DOS本身所带的动态调试程序DEBUG是调试汇编语言的有力工具。
用户可以方便的通过DEBUG程序的运行。
可显示或修改存储器的内容,寄存器内容。
可设置单步或设置断点,,也可对存储器的目标代码进行反汇编等。
通过这些参数,可以查看程序的运行情况和查找错误。
DEBUG程序的启动格式如下:
DEBUG[d:
][path][filename][.ext][parm1][parm2]
其中DEBUG是调试程序的文件名,中括号[]代表可选项,d代表盘标识符,path指路径,filename是被调试的文件名,ext是被调试的文件名扩展名(亦称后缀),parm1,parm2代表被调试的文件所带的参数。
(2)DEBUG常用命令的用法
①显示内存单元的内容命令D(DumpCommand)
功能:
显示内存某一部分内容
格式:
D[address]或D[range]
说明:
address表示内存地址,range表示地址的范围。
显示内存内容分三部分:
左边是地址部分,表示此行的首地址(段:
偏移量);中间是存储器内容的以16进制数表示部分,以两位16进制数字表示一存储单元内容;右边是存储器内容的ASCⅡ码部分。
②检查和修改寄存器内容的命令R(RegisterCommand)
功能:
R命令有三种功能:
A.显示所有16位寄存器的内容,以及用字母表示标志位状态和将要执行的下条指令。
格式:
R
B.显示单个16位寄存器的内容,并带有修改这些内容的选择项。
格式:
R[registername]
C.显示8个双字母的标志位状态,并带有修改其中任何一个或全部修改的选择项。
格式:
RF
③执行命令G(GoCommand)
功能:
执行被调试的程序。
格式:
G[=address][address[address…]]
说明:
等号后的address符号代表执行地址,后面的address代表断点地址,最多可设10个断点地址。
程序执行是从当前指令开始,当前指令地址是由CS:
IP内容决定,除非用=address参数取代,(“=”必须输入,便于和后面的断点地址相区别。
)如果=address被指定了,则程序就从CS:
=address开始执行。
④跟踪命令T(TraceCommand)
功能:
本命令可以跟踪一条指令也可以跟踪多条指令。
每执行一条指令后,都显示出当前寄存器内容和标志位的状态以及下一条要执行的指令。
格式:
T[=address][Value]
⑤汇编命令A(AssembleCommand)
功能:
对指定的汇编语言程序段进行汇编。
格式:
A[address]
说明:
本命令是从指定地址开始,输入汇编语言语句,由A命令把它们汇编为机器代码并从指定地址单元开始连续存放。
本命令可输入整段程序汇编。
若在命令中没有指定地址,但前面用过汇编命令时,则接着上一个汇编命令的最后一个单元开始存放。
若前面没有用过汇编命令时,则从CS:
00开始存放。
⑥反汇编命令U(UnassmbleCommand)
功能:
对指令码进行反汇编(即将存储器内容翻译为汇编语言语句)并显示它们的地址,机器码和操作数,以及汇编语言语句。
本命令可将内存区中某段程序的目标代码反汇编为源程序,以便于了解次段程序的内容。
格式:
U[address]或U[range]
说明:
反汇编字节数取决于系统显示格式(系统为40列显示格式时,反汇编16字节,对80列显示格式反汇编32字节)以及反汇编命令的选择方式。
⑦退出命令Q(quiteCommand)
功能:
退出DEBUG管理,返回DOS。
格式:
Q
说明:
Q命令不保存内存中正被调试的程序,若需要这个文件,必须用W命令将它存盘。
5、调试程序一
codesegment
assumecs:
code
start:
moval,33h
movdl,35h
adddl,al
subdl,30h
movah,02h
int21h
movah,4ch
int21h
codeends
endstart
6、调试程序二
(1)用edit输入下述程序,保存为*.asm文件:
假设有一组数据:
5,-4,0,3,100,-51,请编一程序判断:
每个数大于0,等于0,还是小于0,分别输出1,0,-1。
(2)根据要求,将原始数据及存放结果的内存单元分别定义成字变量或字节变量。
(3)利用编辑程序,把编写好的源程序建立为汇编语言源程序文件并存盘。
(4)对源程序文件进行汇编、连接,且修改至无错误,然后运行程序。
(5)利用调试程序观察运行结果。
如果有错,分析并找出错误原因,改写程序并重新调试。
datasegment
xxdb5,-4,0,3,100,-51
yy1db‘y=0’,0dh,0ah,’$’
yy2db‘y=+1’,0dh,0ah,’$’
yy3db‘y=-1’,0dh,0ah,’&’
dataends
stacksegmentparastack‘stack’
db10dup(?
)
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
procfar
movax,data
movds,ax
movax,0
movbx,offsetxx
movcx,6
lop:
moval,[bx]
cmpal,0
jgebigr
movdx,offsetyy3
jmpcrt
bigr:
jeequl
movdx,offsetyy2
jmpcrt
equl:
movdx,offsetyy1
crt:
movah,09h
int21h
incbx
looplop
movah,4ch
int21h
codeends
endstart
实验二排序及循环程序设计
一、实验目的
掌握排序及循环程序的编写。
二、实验设备
1、PC系列不低于80286档次的微型机;
2、DOS3.3以上版本的操作系统;
3、EDIT,MASM,LINK,DEBUG执行程序。
三、实验内容
将内存中10个无符号数:
9150,3756,10345,4060,12576,300,66,3420,456,1024由小到大排序。
四、程序设计方法
1.从最后一个数(或第一个数)开始,依次把相邻的两个数进行比较,即第10个数与第9个数比较,第9个数与第8个数比较……若第9个数大于第10个数,则两者交换,否则不交换,直到10个数的相邻两个数都比较完为止。
此时,10个数中的最小数将被排在10个数的最前列。
2.对剩下的9个数重复第1步,找到9个数中的最小数。
3.重复第2步,直到10个数全部排好序为止。
五、实验报告要求
整理好运行正确的源程序和结果,写出实验的心得体会。
参考程序:
实验三8253计数器/定时器的实验
一、实验目的
掌握8253定时器的编程原理及应用
练习使用Proteus仿真软件
二、实验内容
利用Proteus仿真实现8253控制LED的闪烁,要求LED点亮0.5秒,熄灭0.5秒。
三、实验步骤
1、画硬件连接图
(1)启动Proteus,点击开始、程序、Proteus7professional、ISIS7professional
(2)放置元件,点击
,再点击
,出现
依次输入808674LS3734LS138NAND8253ALED-REDPULLUP
(3)按下图连接电路
(4)放置标号,点击
,依次放置总线标号,网络标号(如上图)
(5)放置电源和终端,点击
(6)修改元件属性,双击LED,出现如下对话框,将ModelType改为Digital
(7)放置时钟信号,点击
,选择DCLOCK,双击信号源出现如下对话框,将频率改为2M
2、加载软件
(1)启动emu80864.07,生成.com文件或.Exe文件
(2)在emu80864.07,输入程序
参考程序如下;
PORT_0equ0e8h
PORT_1equ0eah
PORT_2equ0ech
PORT_CTRequ0eeh
moval,00110101B
movdx,PORT_CTR
outdx,al
movdx,PORT_0
movax,00h
outdx,al
movax,10h
outdx,al
moval,01110110B
movdx,PORT_CTR
outdx,al
movdx,PORT_1
movax,0e8h
outdx,al
movax,03h
outdx,al
(3)编译程序,点击
,生成.com文件或.Exe文件
(4)加载程序,双击仿真图中的8086CPU,出现如下对话框,点击
加载软件,同时将各参数修改如下图
3.仿真,点击
,系统开始仿真。
四实验报告要求
整理好运行正确的源程序,画出程序流程图,并列出源程序清单,写出实验的心得体会。
实验四8255并行口的实验
一、实验目的
掌握8255A的使用方法。
二、实验内容
1、按下图连接硬件线路。
2、打开emu8086,编制程序,读取开关数据并用LED上显示。
(具体方法同实验三)参考程序如下
a8255equ0F0h;
b8255equ0F2h;
c8255equ0F4h;
m8255equ0F6h;
MOVDX,M8255;
MOVAL,10010000B;
OUTDX,AL
TEST_IT:
MOVDX,a8255
INAL,DX
notal
MOVDX,b8255
OUTDX,AL
JMPTEST_IT
3、仿真
四实验报告要求
整理好运行正确的源程序,画出程序流程图,并列出源程序清单,写出实验的心得体会。