微机原理实验指导书.docx
- 文档编号:23784820
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:19
- 大小:255.51KB
微机原理实验指导书.docx
《微机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书.docx(19页珍藏版)》请在冰豆网上搜索。
微机原理实验指导书
微型计算机原理与接口技术
实验指导书
陈裕国编
武汉工程大学电气信息学院自动化教研室
二0一四年二月
实验一汇编软件使用与基本编程实验
一、实验目的
1.熟悉8086汇编语言程序设计的实验环境。
2.掌握汇编语言程序设计的上机步骤,初步学会利用TurboDebugger调试工具来调试汇编语言程序。
二、实验环境
汇编语言程序设计的实验环境如下:
1.硬件环境
微型计算机(Intelx86系列CPU)1台。
2.软件环境
·WindowsXP操作系统。
·任意一种文本编辑器,如EDIT、NOTEPAD(记事本)等。
·汇编程序,如MASM.EXE或TASM.EXE。
·连接程序,如LINK.EXE或TLINK.EXE。
·调试程序,如DEBUG.EXE或TD.EXE。
本实验指导中,文本编辑器使用NOTEPAD(记事本),汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用TD.EXE。
三、上机步骤
1.建立汇编语言程序设计的实验环境
(1)通过WindowsXP的资源管理器找到D盘的根目录,在D盘的根目录窗口中点击鼠标右键,在弹出的菜单中选择“新建”“文件夹”选项,新建一个文件夹,并把新建的文件夹命名为ASM。
该目录就为以后源程序的存放目录。
(2)把MASM.EXE、LINK.EXE、TD.EXE都拷贝到新建的ASM目录中。
2.建立ASM源程序
在WindowsXP桌面的“开始”菜单中选择“程序”“附件”“记事本”选项,屏幕上出现记事本的编辑窗口。
在编辑窗口输入源程序代码。
在输入、编辑源程序的过程中,可充分利用记事本的“编辑(E)”菜单中“剪切”、“复制”、“粘贴”和“撤消”等功能。
源程序输入完毕后,选择记事本的“文件(F)”菜单,用其中的“保存(S)”功能将文件存盘。
这时会弹出一个“另存为”窗口,在这个窗口中将保存源程序的路径选择为前面建立的D:
\ASM目录,“保存类型(T)”选择为“所有文件(*.*)”,文件名为HELLO.ASM(本例为D:
\ASM\HELLO.ASM),如图11-1所示。
实验参考程序代码:
DATASEGMENT
ONEDB20DUP(32),'HELLO!
',7,13,10
COUNTEQU$-ONE
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,SEGDATA
MOVDS,AX
MOVSI,OFFSETONE
MOVCX,COUNT
NEXT:
MOVDL,[SI]
MOVAH,2
INT21H
INCSI
LOOPNEXT
3.用MASM.EXE汇编源程序产生目标文件
源文件HELLO.ASM建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ文件)。
在WindowsXP桌面上的“开始”菜单中选择“程序”“附件”“命令提示符”选项,打开“命令提示符”窗口。
输入“D:
”并回车,进入D盘的根目录,接着输入“CD\ASM”进入前面新建的ASM目录。
输入“MASMHELLO.ASM”并回车,MASM程序会提示让你输入目标文件名(ObjectFilename),并在方括号中显示默认的目标文件名[HELLO.OBJ]。
此时可按ENTER键确认目标文件名为默认的目标文件名HELLO.OBJ,也可重新输入新的目标文件名(建议输入目标文件的完整路径名,如:
D:
\ASM\HELLO.OBJ)。
后面的两个提示为可选项,可直接按ENTER键跳过,也可输入汇编时产生的列表文件名(如HELLO.LST)和交叉文件名(HELLO.CRF)。
注意,若打开MASM程序时未给出源程序名,则MASM程序会首先提示让你输入源程序文件名(SourceFilename),此时输入源程序文件名HELLO.ASM并回车,然后进行的操作与上面完全相同操作时的屏幕显示如图11-2所示。
如果源程序有错误,汇编程序MASM会指出错误所在的行号和错误的原因。
源程序的错误类型有两种类型:
(1)警告错误(WarningErrors)。
警告不影响程序的运行,但可能会得出错误的结果。
(2)严重错误(SevereErrors)。
出现错误,MASM将无法生成OBJ文件。
在错误信息中,圆括号里的数字为有错误所在的行号,后面给出了错误类型及具体错误原因。
如果汇编时产生很多的错误,以至于出现滚屏,不易查看汇编程序指出的错误信息,此时需要用记事本打开(“文件类型(T)”选择为“所有文件(*.*)”)汇编时产生的列表文件HELLO.LST来查看。
注意,汇编程序只能指出程序的语法错误,而无法指出程序逻辑的错误。
修改源程序中的错误并保存文件,然后重新对源程序进行汇编。
如果汇编时没有错误,MASM就会在当前目录下建立一个HELLO.OBJ文件(名字与源文件名相同,只是扩展名不同)。
4.用LINK.EXE产生EXE可执行文件
在上一步骤中,汇编程序产生的是二进制目标文件(OBJ文件),它是不可执行的。
要想使我们编写的程序能够运行,还必须用连接程序(LINK.EXE)把OBJ文件连接为可执行的EXE文件。
在“D:
\ASM>”命令提示符下输入“LINKHELLO.OBJ”并回车,进入LINK程序后,连接程序会提示让你输入可执行文件名(RunFile),并在方括号中显示默认的可执行文件名[HELLO.EXE]。
此时可按ENTER键确认可执行文件名为默认的可执行文件名HELLO.EXE,也可重新输入新的可执行文件名(建议输入可执行文件的完整路径名,如:
D:
\ASM\HELLO.EXE)。
后面的三项提示为可选项,可直接按ENTER键跳过;对于本例,只需输入定位图文件名HELLO.MAP即可。
注意,若打开LINK程序时未给出目标程序名,则LINK程序会首先提示让你输入目标程序名(ObjectMoodules),此时输入目标程序名HELLO.OBJ并回车,然后进行的操作与上面完全相同。
如果没有错误,LINK就会建立一个HELLO.EXE文件。
如果OBJ文件有错误,LINK会指出错误的原因。
本例中,对于无堆栈警告(warning:
nostacksegment)信息,可以不予理睬,它不影响程序的执行。
当然,也可以在本例的程序中加入一个堆栈段,来消除这一警告错误信息,读者不妨试试。
操作时的屏幕显示如图11-3所示。
对于LINK同时建立的HELLO.MAP文件,为包含程序连接的信息以及各段的地址信息,可同样用记事本打开查看。
5.执行程序
生成了HELLO.EXE文件后,就可以直接在命令提示符下运行此程序。
在“D:
\ASM>”命令提示符下输入“HELLO”并回车。
本例程序的功能是在屏幕上输出显示20个空格和“HELLO!
”字符并且回车、换行,自动返回DOS。
如果源程序没有功能性错误,正确的结果会显示在屏幕上。
如果程序不显示结果,我们如何发现程序的功能性问题呢?
这时,我们就要使用TD.EXE调试工具来查看运行结果。
实际上,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时需要使用TD.EXE。
6.学习使用TD.EXE
在“D:
\ASM>”命令提示符下键入“TDHELLO.EXE”并回车。
TD启动后,呈现的是一个具有窗口形式的用户界面,如图11-4所示。
窗口分为代码区、数据区、寄存器区、堆栈区和标志位区。
在5个区域中,光标所在的区域称为当前区域。
用户可以使用Tab键或Shift+Tab键切换当前区域,也可以在相应的区域中单击鼠标左键选中某区为当前区。
在代码区和堆栈区分别显示一个称为箭头的特殊标志,代码区中的箭头标志指示出当前程序指令的位置(CS:
IP),堆栈区中的箭头标志指示出当前堆栈指针位置(SS:
SP)。
然后,按以下步骤操作:
(1)查看代码区汇编指令,逐行与HELLO.ASM源程序比较,看看源程序中那些语句有机器码,那些语句没有机器码。
记录源程序中的SEGDATA、OFFSETONE、COUNT、NEXT在HELLO.EXE中的具体值并加以说明。
源程序
机器码
回答的问题
START:
MOVAX,SEGDATA
B8705B
SEGDATA的值=?
5B70
MOVDS,AX
8ED8
MOVSI,OFFSETONE
BE0000
OFFSETONE的值=?
0000
MOVCX,COUNT
B91D00
COUNT的值=?
001D
。
。
。
(以下略)
(2)按F8键(单步运行)两次,查看并记录寄存器区AX和DS的变化。
单步运行两次前的值
单步运行两次后的值
AX
0000
5B70
DS
5B60
5B70
(3)按Tab键切换当前区域,直至当前区域为数据区(也可以在相应的区域中单击鼠标左键选中某区为当前区)。
然后按Alt+F10组合键激活数据区局部菜单(也可以在相应的区域中单击鼠标右键激活该区局部菜单),选中Goto命令,输入DS:
0000H并回车,观看数据区内容的变化,并留意数据区右边ASCII码字符区的内容,与HELLO.ASM源程序中ONEDB20DUP(32),'HELLO!
',7,13,10语句对比。
单元地址
DS:
0000H
DS:
0001H
DS:
0002H
DS:
0003H
DS:
0004H
DS:
0005H
DS:
0006H
DS:
0007H
单元值
20
20
20
20
20
20
20
20
ASCII
SP
SP
SP
SP
SP
SP
SP
SP
单元地址
DS:
0008H
DS:
0009H
DS:
000AH
DS:
000BH
DS:
000CH
DS:
000DH
DS:
000EH
DS:
000FH
单元值
20
20
20
20
20
20
20
20
ASCII
SP
SP
SP
SP
SP
SP
SP
SP
单元地址
DS:
0010H
DS:
0011H
DS:
0012H
DS:
0013H
DS:
0014H
DS:
0015H
DS:
0016H
DS:
0017H
单元值
20
20
20
20
48
45
4C
4C
ASCII
SP
SP
SP
SP
H
E
L
L
单元地址
DS:
0018H
DS:
0019H
DS:
001AH
DS:
001BH
DS:
001CH
DS:
001DH
DS:
001EH
DS:
001FH
单元值
4F
21
07
0D
0A
00
00
00
ASCII
O
!
REL
CR
LF
NUL
NUL
NUL
根据观察结果画出本例程序的数据段,标注起始地址、段末地址,以及存储单元的内容。
并记录下此时所有寄存器的内容。
(4)继续不断地按F8键,观看寄存器区、标志位区和堆栈区的不断变化,并注意代码区箭头标志位置的变化。
直至代码区箭头标志的位置移至MOVAH,4CH语句时,停止按F8键。
记录下此时所有寄存器的内容,与前面记录的寄存器内容比较并分析发生的变化。
START:
MOVAX,SEGDATA;执行前:
AX=0000执行后:
AX=5B70
MOVDS,AX;执行前:
AX=5B70DS=5B60
执行后:
AX=5B70DS=5B70
MOVSI,OFFSETONE;执行前:
SI=0000执行后:
SI=0000
MOVCX,COUNT;执行前:
CX=0000执行后:
CX=001D
(以下是循环,按F8键单步运行,观看每次循环各条指令运行结果,分析为什么?
)
NEXT:
MOVDL,[SI];执行前:
DL=00SI=0000
执行后:
DL=20SI=0000
MOVAH,2;执行前:
AH=5B执行后:
AH=02
INT21H;执行前:
AH=02执行后:
AH=02
INCSI;执行前:
SI=0000执行后:
SI=0001
LOOPNEXT;执行前:
CX=001D执行后:
CX=0000
(5)代码区箭头标志位置移至MOVAH,4CH语句时,按ALT+F5键查看被调试程序的显示输出。
7.熟练使用TD.EXE
按ALT+F5键切换到TD用户界面,用FILE菜单OPEN项重新载入可执行文件HELLO.EXE,重复上面⑴~⑶步骤。
在第⑶步时,选中Goto命令,输入DS:
0000H并回车,然后使用方向键把光标移到0014H地址单元处(注意数据区的光标是一个下划线),将0014H~001FH地址单元的内容改为01H、57H、45H、4CH、43H、4FH、4DH、45H、20H、59H、4FH、55H,继续上面“6.学习使用TD.EXE”中的⑷和⑸步骤,查看被调试程序的显示输出。
分析程序显示输出的结果。
有关更多的如何使用TD.EXE,请参阅课外读物“TD使用说明”部分。
四、实验参考程序代码
DATASEGMENT
ONEDB20DUP(32),'HELLO!
',7,13,10
COUNTEQU$-ONE
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,SEGDATA
MOVDS,AX
MOVSI,OFFSETONE
MOVCX,COUNT
NEXT:
MOVDL,[SI]
MOVAH,2
INT21H
INCSI
LOOPNEXT
MOVAH,4CH
INT21H
CODEENDS
实验二循环结构程序设计
一、实验目的
1.熟悉循环指令系统,并熟悉其加、减、乘、除运算
2.掌握DEBUG调试程序主要命令的使用方法
3.掌握循环结构程序的设计、调试。
二、实验条件
汇编语言程序设计的实验环境如下:
1.硬件环境
微型计算机(Intelx86系列CPU)1台。
2.软件环境
·WindowsXP操作系统。
·任意一种文本编辑器,如EDIT、NOTEPAD(记事本)等。
·汇编程序,如MASM.EXE或TASM.EXE。
·连接程序,如LINK.EXE或TLINK.EXE。
·调试程序,如DEBUG.EXE或TD.EXE。
本实验指导中,文本编辑器使用NOTEPAD(记事本),汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用TD.EXE。
三、实验内容
多字节无符号加法:
在DATAS中存放10个双字节无符号数,用循环结构设计程序,通过程序运算,把这10个双字节无符号数相加,其和存入紧邻加数之后的四个单元中。
用TDEBUG调试程序预置数据并查看运算结果。
四、上机步骤
1.建立汇编语言程序设计的实验环境
在D盘新建一个文件夹,并把新建的文件夹命名为ASM。
把MASM.EXE、LINK.EXE、TD.EXE文件都拷贝到新建的ASM目录中。
2.建立汇编源程序
打开记事本。
在编辑窗口输入源程序代码。
编程提示:
(1)用DW等伪指令建立数据段,数据段应包含两项内容:
一是任意输入的10个双字节无符号数,二是存入加数和的四个单元的双字变量;
(2)编写程序代码时,整个程序应是一个循环结构,循环次数为10。
源程序输入完毕后,选择记事本的“文件(F)”菜单,“保存(S)”文件,注意将保存源程序的路径选择为前面建立的D:
\ASM目录,“保存类型(T)”选择为“所有文件(*.*)”,文件名为“HELLO”,扩展名为.ASM。
3.用MASM.EXE汇编源程序产生目标文件
在WindowsXP桌面上的“开始”菜单中选择“程序”“附件”“命令提示符”选项,打开“命令提示符”窗口。
输入“D:
”并回车,进入D盘的根目录,接着输入“CD\ASM”进入前面新建的ASM目录。
输入“MASMHELLO.ASM”并回车。
如果源程序有错误,汇编程序MASM会指出错误所在的行号和错误的原因。
在错误信息中,圆括号里的数字为有错误所在的行号。
修改源程序中的错误并保存文件,然后重新对源程序进行汇编。
如果汇编时没有错误,MASM就会在当前目录下建立一个“HELLO.OBJ”文件(名字与源程序文件名相同,只是扩展名不同)。
4.用LINK.EXE产生EXE可执行文件
在“D:
\ASM>”命令提示符下输入“LINKHELLO.OBJ”并回车。
如果没有错误,LINK就会建立一个EXE文件。
对于无堆栈警告(warning:
nostacksegment)信息,可以不予理睬,它不影响程序的执行。
5.执行程序
生成了EXE文件后,就可以直接在命令提示符下运行此程序。
在“D:
\ASM>”命令提示符下直接输入“HELLO”并回车。
这时我们就要使用TD.EXE调试工具来查看运行结果。
实际上,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时需要使用TD.EXE。
使用计算器验证程序运行结果是否正确。
五、实验报告要求
2.实验内容、实验要求;
3.画出程序流程框图;
4.给出程序清单;
5.给出程序运行结果。
六、实验参考程序
DATASEGMENT
NUMDW1234H,0ABCH,5678H,456H,0ACCDH,0F0FDH,4056H,8979H,3565H,0D0DFH;
COUNTDW2DUP(0);
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,10
MOVSI,OFFSETNUM
MOVDI,OFFSETCOUNT
XORAX,AX
XORDX,DX
NEXT:
ADDAX,WORDPTR[SI];求和
ADCDX,0
INCSI
INCSI
LOOPNEXT
MOVWORDPTR[DI],AX;保存结果
MOVWORDPTR[DI+2],DX;
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验三分支结构程序设计
一、实验目的
1.熟悉控制转移指令系统,并熟悉其加、减、乘、除运算指令。
2.掌握分支程序编程方法,复杂分支程序的查表法等。
二、实验条件
汇编语言程序设计的实验环境如下:
1.硬件环境
微型计算机(Intelx86系列CPU)1台。
2.软件环境
·WindowsXP操作系统。
·任意一种文本编辑器,如EDIT、NOTEPAD(记事本)等。
·汇编程序,如MASM.EXE或TASM.EXE。
·连接程序,如LINK.EXE或TLINK.EXE。
·调试程序,如DEBUG.EXE或TD.EXE。
本实验指导中,文本编辑器使用NOTEPAD(记事本),汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用TD.EXE。
三、实验内容
学生课程成绩分段统计:
用单字节表示每个学生的学号,学生的课程成绩用两位十进制数表示(最低0分,最高99分),规定0F0H表示作弊,0F1H表示缺考,0FFH为一组学生成绩的结束符。
学生成绩在内存的存放形式为“学号,成绩”,每个学生占两个字节,从内存SCORE为首址开始存放。
要求学生人数不少于10个,试编程序,按0~9、10~19、20~29、……、80~89、90~99及作弊、缺考等12种情况把学生的课程成绩进行分段统计,将统计结果存入以COUNT为首址的12个单元中。
用TDEBUG调试程序预置数据和查看程序运行结果,以验证程序正确性。
或将统计的结果显示在屏幕上。
四、上机步骤
1.建立汇编语言程序设计的实验环境
在D盘新建一个文件夹,并把新建的文件夹命名为ASM。
把MASM.EXE、LINK.EXE、TD.EXE文件都拷贝到新建的ASM目录中。
2.建立汇编源程序
打开记事本。
在编辑窗口输入源程序代码。
编程提示:
(1)用DB等伪指令建立数据段,数据段应包含两项内容:
一是任意输入的学生成绩,二是实验内容要求的以COUNT为首址的12个字节变量;
(2)编写程序代码时,整个程序应是一个循环结构,循环次数是前面输入的学生成绩个数。
循环内部是分支结构的统计各段成绩个数的程序代码,统计成绩个数时,应当先使用“等不等于”条件转移指令分别统计“0F0H--作弊”、“0F1H--缺考”的个数,然后使用“小于等于”条件转移指令分别统计0~9、10~19、20~29、……、80~89、90~99各分数段的个数。
源程序输入完毕后,选择记事本的“文件(F)”菜单,“保存(S)”文件,注意将保存源程序的路径选择为前面建立的D:
\ASM目录,“保存类型(T)”选择为“所有文件(*.*)”,文件名为“HELLO”,扩展名为.ASM。
3.用MASM.EXE汇编源程序产生目标文件
在WindowsXP桌面上的“开始”菜单中选择“程序”“附件”“命令提示符”选项,打开“命令提示符”窗口。
输入“D:
”并回车,进入D盘的根目录,接着输入“CD\ASM”进入前面新建的ASM目录。
输入“MASMHELLO.ASM”并回车。
如果源程序有错误,汇编程序MASM会指出错误所在的行号和错误的原因。
在错误信息中,圆括号里的数字为有错误所在的行号。
修改源程序中的错误并保存文件,然后重新对源程序进行汇编。
如果汇编时没有错误,MASM就会在当前目录下建立一个“HELLO.OBJ”文件(名字与源程序文件名相同,只是扩展名不同)。
4.用LINK.EXE产生EXE可执行文件
在“D:
\ASM>”命令提示符下输入“LINKHELLO.OBJ”并回车。
如果没有错误,LINK就会建立一个EXE文件。
对于无堆栈警告(warning:
nostacksegment)信息,可以不予理睬,它不影响程序的执行。
5.执行程序
生成了EXE文件后,就可以直接在命令提示符下运行此程序。
在“D:
\ASM>”命令提示符下直接输入“HELLO”并回车。
如果源程序没有功能性错误,正确的结果会显示在屏幕上。
如果程序不显示结果,这时我们就要使用TD.EXE调试工具来查看运行结果。
实际上,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时需要使用TD.EXE。
五、实验报告
1.实验内容、实验要求;
2.画出程序流程框图;
3.给出程序清单;
4.给出程序运行结果。
六、实验参考程序
DATASEGMENT
NUMDB92,7,23,78,89,76,65,55,88,80,77;
DB33,97,68,69,90,0F0H,0F1H,0FFH;
CNTEQU$-NUM;
COUNTDB12DUP(0);
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导书