实验指导书 最终版.docx
- 文档编号:24405976
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:50
- 大小:294.22KB
实验指导书 最终版.docx
《实验指导书 最终版.docx》由会员分享,可在线阅读,更多相关《实验指导书 最终版.docx(50页珍藏版)》请在冰豆网上搜索。
实验指导书最终版
微机原理与接口技术
实验指导书
许昌学院电气信息工程学院
二○○九年十月
前言
《微型计算机原理及应用》是一门实践性很强的专业技术基础课,因此,必须在课堂教学的基础上配以足够的实验或实践性教学环节,以便理论联系实际,使学生能深入理解课堂教学内容,加强学生动手能力,以加深对理论学习的理解和掌握,提高学生分析问题﹑解决问题的能力。
本实验指导书是《微型原理与接口技术》一书的配套教材。
本实验指导书主要包括汇编语言上机操作、汇编程序调试方法及软件部分实验。
对于每一个实验都给出了实验目的﹑实验内容﹑预习要求﹑报告要求﹑实验提示等。
实验提示部分我们仅给出部分文字提示和参考流程图,以作为学生自己编程时的参考。
我们主张学生在做实验前,必须要充分预习,充分准备,要依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的结果。
这样做实验,才能真正有收获,才能真正提高分析问题和解决问题的能力。
本实验指导书在编写的过程中,得到了本系的领导和老师的支持﹑指导和帮助,在此表示衷心的谢意。
由于编者水平有限,书中不妥或错误之处在所难免,欢迎大家在使用过程中多多提出宝贵意见。
李耀辉、吴泽
2009年10月08日
实验须知
一、预习要求
1.实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。
2.每次实验前做好充分的预习,对所需预备知识做到心中有数。
3.实验前应编好源程序,并对调试过程、实验结果进行预测。
二、实验设备
PC微型计算机1台(配置相关的汇编程序及汇编应用软件)
二、实验要求
1.实验课请勿迟到,缺席。
2.爱护设备,保持清洁,不随意更换设备。
3.认真完成实验任务,实验结果经教师检查。
4.做硬件实验时,严禁带电操作,即所有的接线、改线及拆线操作均应在不带电的状态下进行,并注意防止导线堵塞插孔。
5.发生事故,应立即切断电源,并马上向教师报告,检查原因,吸取教训。
6.实验完毕,请整理实验设备,再离开实验室。
三、报告要求
每次实验后,应递交一份实验报告,报告中应包含下列内容:
1.实验名称、实验人姓名、学号、班级,所用设备号。
2.实验目的、任务。
3.实验应画出各任务的完整流程图。
4.画出各任务程序流程图。
5.写出实验调试情况,包括上机时遇到的问题及解决办法、实验结果分析等,并附上调试好的程序清单(应加适量注释)。
6.总结实验中的心得体会,提出对实验内容、方案等的建议、意见或设想等。
目录
实验一汇编语言上机环境的熟悉和DEBUG命令使用1
实验二数据传送指令9
实验三算术逻辑运算及移位指令12
实验四串操作指令16
实验五分支及循环程序设计19
实验六子程序及DOS功能调用27
附录1MasmforWindows集成实验环境32
附录2ASCII码表36
附录3DOS功能调用表39
实验一汇编语言上机环境的熟悉和DEBUG命令使用
一.实验目的
1.熟悉程序的汇编过程以及MasmforWindows6.0的使用。
2.学习使用DEBUG中的各种命令。
3.掌握用DEBUG调试自编程序的方法,为以后实验打下基础。
二.实验内容
1.熟悉汇编语言的编译环境。
1)DOS下的编译环境(课本P87)。
2)Windows下的编译环境(MasmforWindows6.0)。
2.熟悉使用将源程序转换为可执行程序。
;HelloWorldprogram(hello.asm)
DATASEGMENT
MSGDB’Hello,World!
’,0AH,0DH,’$’
DATAENDS
STACKSEGMENT
DB100HDUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
STARTPROCFAR
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAH,9
MOVDX,OFFSETMSG
INT21H
RET
STARTENDP
CODEENDS
ENDSTART
注:
找出本程序与MasmforWindows6.0的example文件下的hello.asm的区别。
3.用DEBUG调试、运行可执行程序。
1)进入DEBUG后,首先用命令R查看当前DS和IP寄存器内容,记录此值。
2)学习R,D,A,U,T,G,Q命令的使用。
3)用命令A汇编下列指令,并判断指令正误并说明原因。
(1)RORAX,8
(2)LEADI,[AX]
(3)MOVDS,2010
(4)PUSHAL
(5)OUT900,AL
(6)MOV[BX],0
(7)MOVCS,AX
(8)MOVBP,SP
(9)MOVIP,AX
(10)MOVAX,6[BX][SI]
4)用A命令汇编下列程序段,完成将DS:
2000开始的5个字节内存内容相加,并把相加的结果存放在DS:
2005内存单元中,将程序写到硬盘上,然后用DEBUG调试并运行该程序,查看运行结果,观察程序段能否完成指定功能,若不能,说明原因。
MOVCX,5
MOVAL,0
MOVBX,2000
NEXT:
ADDAL,[BX]
INCBX
LOOPNEXT
MOV[BX],AL
INT3
三.预习要求
1.仔细阅读实验一后的【实验提示】及【DEBUG的启动及其基本命令的使用】中的内容
2.“汇编语言上机操作过程及程序调试技术”内容。
3.根据实验要求,对各项结果进行预测。
四.实验报告
1.写出hello.asm程序清单、程序执行及调试过程中寄存器(含FR)的内容。
2.举例写出利用dubug调试中你所用的命令的功能。
3.分析任务3中各条指令错误原因。
4.写出做完本实验的心得体会。
五.实验提示
1.DEBUG的进入
(1)如果是首次进入DEBUG编程,则只要在DOS提示符下键入DEBUG↙,即可进入DEBUG环境,显示提示符“-”。
(2)如果要对某个程序使用DEBUG进行调试,只要在DOS提示符下键入DEBUG文件名↙,即可进入DEBUG环境,显示提示符“-”。
2.程序的汇编与反汇编
(1)源程序可以在DEBUG下,用汇编命令A输入到内存中,只需在DEBUG提示符“-”下,键入汇编命令A↙,并在显示“段寄存器地址:
偏移地址”后面键入你自己编写的程序,每键入一条,按一次回车键。
-A↙
127B:
0100MOVCX,5↙
127B:
0103MOVAL,0↙
127B:
0105MOVBX,2000↙
┇
(2)如果进入DEBUG时是使用“DEBUG文件名↙”进入的,那么在进入DEBUG状态后,可用反汇编命令U,将调入的程序显示出来:
-U↙
127B:
0100B90500MOVCX,5
127B:
0103B000MOVAL,0
127B:
0105BB0020MOVBX,2000
┇
3.在DEBUG状态下,对所编写文件存盘的步骤
1给程序命名
-N文件名.COM↙
2将文件长度放入BX、CX中(高位放入BX,低位放入CX中)
-RBX↙(注意!
!
!
由于文件长度一般较小,所以切记BX中赋0值)
-RCX↙(文件最末偏移地址减去文件开始的偏移地址即文件长度)
3用写盘命令W把正在调试的内存中程序写入磁盘中
-W〈地址〉↙(文件开始地址)
退出DEBUG状态用Q命令:
-Q↙
4.在DEBUG状态下,建议使用DOS分配给用户的内存可用区
在DEBUG状态下,用户可对所有寄存器、RAM内存随意查看和修改,但由于对DOS操作系统在内存中存放情况不了解,可能会将存放有操作系统程序的内存内容破坏,从而可能引起系统的异常,出现死机现象,故建议使用DOS分配给用户的内存可用区,其低端地址是刚进入DEBUG时,用命令R查看到的DS:
IP。
5.用连续执行命令G应注意问题
用连续执行命令G执行程序时,注意给出执行程序的首地址,并注意执行的程序中有返回DEBUG功能的程序段,如指令INT20H或断点设置INT3,否则发出命令后,很容易出现死机,原因是无返回程序段使系统返回命令接受状态,CPU将不断到内存中取指令、执行指令,使用户失去对系统的控制。
为避免这种情况,可在用户程序段结尾加上一条INT20H指令,或INT3指令。
六、DEBUG的启动及其基本命令的使用
DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动
在DOS提示符下,可键入命令:
C>DEBUG[d:
][path][文件名][参数1][参数2]
其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。
2、DEBUG的主要命令
(1)汇编命令A,格式为:
-A[地址]
该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2)反汇编命令U,有两种格式:
1)-U[地址]
该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2)-U范围
该命令对指定范围的内存单元进行反汇编,例如:
-U04BA:
01000108或–U04BA:
0100L9
此二命令是等效的。
(3)运行命令G,格式为:
-G[=地址1][地址2[地址3…]
其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
(4)追踪命令T,有两种格式:
1)逐条指令追踪:
-T[=地址]
该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(5)显示内存单元内容的命令D,格式为:
-D[地址]或-D[范围]
(6)修改内存单元内容的命令E,它有两种格式:
1)用给定的内容代替指定范围的单元内容:
-E地址内容表
例如:
-E2000:
0100F3“XYZ”8D
其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:
0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
2)逐个单元相继地修改:
-E地址
例如:
-E100:
18E4:
010089.78
此命令是将原100号单元的内容89改为78。
78是程序员键入的。
(7)检查和修改寄存器内容的命令R,它有三种方式:
1)显示CPU内部所有寄存器内容和标志位状态;格式为:
-R
R命令显示中标志位状态的含义如下表所示:
标志名
置位
复位
溢出Overflow(是/否)
OV
NV
方向Direction(减量/增量)
DN
UP
中断Interrupt(允许/屏蔽)
EI
DI
符号Sign(负/正)
NG
PL
零Zero(是/否)
ZR
NZ
辅助进位AuxiliaryCarry(是/否)
AC
NA
奇偶Parity(偶/奇)
PE
PO
进位Carry(是/否)
CY
NC
2)显示和修改某个指定寄存器内容,格式为:
-R寄存器名
例如打入:
-RAX
系统将响应如下:
AXFIF4
:
表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:
-RBX
BX0369
:
059F
则BX内容由0369改为059F
3)显示和修改标志位状态,命令格式为:
-RF
系统将给出响应,如
OVDNEINGZRACPECY-
这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。
如OVDNEINGZRACPECY-PONZDINV
(8)命名命令N,格式为:
-N文件名
此命令将文件名格式化在CS:
5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。
(9)装入命令L,它有两种功能:
1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:
-L地址驱动器扇区号扇区数
2)装入指定文件,格式为:
-L[地址]
此命令装入已在CS:
5CH中格式化的文件控制块所指定的文件。
在用L命令前,BX和CX中应包含所读文件的字节数。
(10)写命令W,有两种格式:
1)把数据写入磁盘的指定扇区:
-W地址驱动器扇区号扇区数
2)把数据写入指定文件中:
-W[地址]
此命令把指定内存区域中的数据写入由CS:
5CH处的FCB所规定的文件中。
在用W命令前,BX和CX中应包含要写入文件的字节数。
(11)退出DEBUG命令Q,该命令格式为
Q它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。
实验二数据传送指令
一.实验目的
1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、掌握数据在内存中的几种寻址方式和掌握简单指令的执行过程。
二.实验内容
1、用masm和link对以下程序进行汇编和连接,调试程序在DEBUG调试程序状态下进行(或通过MasmforWindows6.0实现)。
用单步执行的方法,分析每条指令源地址的形成过程。
问题:
用表格的形式写出AX在程序中的内容的变化?
DATASEGMENT
ORG0300H
ADB12H,23H,34H,45H,56H,67H,78H,89H,9AH
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,BX
MOVAX,0300H
MOVAX,[0300H]
MOVAX,[BX]
MOVSI,2
MOVAX,0001[BX]
MOVAX,[BX][SI]
MOVAX,0001[BX][SI]
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2、用查表的方法计算平方值。
设0~9的平方值连续存放在以TABLE开始的存储区域中,求VARX单元内容(设为0~9中的某个数)的平方值,要求结果放在RSLT单元中。
用masm.exe和link.exe对源程序进行汇编程和连接(或利用MasmforWindows6.0),用DEBUG调试程序。
问题:
根据查表程序所必备的条件以及查表运行的过程及结果分析该程序的执行情况。
改变VARX的值,看AL中的值是否改变。
;找到0-9中数5的平方,并放入RSLT中
DATASEGMENT
VARXDB5
RSLTDB?
TABLEDB0,1,4,9,16,25,36,49,64,81;0-9的平方
DATAENDS
STACKSEGMENT
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX;保证DOS返回
MOVAX,DATA
MOVDS,AX
LEABX,TABLE
MOVAL,VARX
MOVAH,0
ADDBX,AX
MOVAL,[BX]
MOVRSLT,AL
RET
STARTENDP
CODEENDS
ENDSTART
三.实验要求
实验前做好充分准备,包括汇编程序清单、调试方法及对程序的分析。
四.实验报告
1、程序说明:
说明程序的功能、结构。
2、调试说明:
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、写出源程序清单和执行结果,并对所提问题进行书面回答。
实验三算术逻辑运算及移位指令
一.实验目的
1.学习算术运算及移位指令的用法。
2.了解标志寄存器各标志位的意义和指令对它的影响。
3.将完整的程序用masmforWindows6.0运行并调试汇编语言程序的过程。
二.实验内容
实验程序段及结构表格如下:
表3-1
标志位
CF
ZF
AF
PF
SF
OF
程序段1:
MOVAX,1018H
MOVSI,230AH
ADDAX,SI
ADDAL,30H
MOVDX,3FFH
ADDAX,BX
MOV[20H],1000H
ADD[20H],AX
PUSHAX
POPBX
0
0
0
0
0
0
表3-2
标志位
CF
ZF
AF
PF
SF
OF
程序段2:
MOVAX,0A0AH
ADDAX,0FFFFH
MOVCX,0FF00H
ADCAX,CX
SUBAX,AX
INCAX
ORCX,0FFH
ANDCX,0F0FH
MOV[10H],CX
0
0
0
0
0
0
表3-3
标志位
CF
ZF
AF
PF
SF
OF
程序段3:
MOVBL,25H
MOVBYTEPTR[10H],4
MOVAL,[10H]
MULBL
0
0
0
0
0
0
表3-4
标志位
CF
ZF
AF
PF
SF
OF
程序段4:
MOVWORDPTR[10H],80H
MOVBL,4
MOVAX,[10H]
DIVBL
0
0
0
0
0
0
表3-5
标志位
CF
ZF
AF
PF
SF
OF
程序段1:
MOVAX,0
DECAX
ADDAX,3FFFH
ADDAX,AX
NOTAX
SUBAX,3
ORAX,0FBFDH
ANDAX,0AFCFH
SHLAX,1
RCLAX,1
0
0
0
0
0
0
三.实验要求
1.实验前要认真复习8086指令系统中的算术逻辑类指令和移位指令。
2.做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
3.按要求在实验前编写好实验中的程序段。
四.实验报告
1、整理出运行正确的各题源程序和表格内的运行结果,写入实验报告。
2、调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、总结算术逻辑类指令和移位指令对状态标志位的影响。
实验四串操作指令
一.实验目的
1、熟悉串操作指令的功能及串操作的使用方法。
2、了解汇编语言的基本程序结构。
3、熟悉在PC机上汇编程序的全过程。
二.实验内容
1.编写程序框架,定义串操作指令要求的数据段或附加数据段,并定义代码段。
2.在代码段中输入以下程序并运行之,回答后面的问题。
CLD
MOVDI,1000H
MOVAX,55AAH
MOVCX,10H
REPSTOSW
上述程序经汇编、链接生成可执行文件并执行后:
(1)从ES:
1000H开始的16个字单元的内容是什么?
(2)DI=?
CX=?
并解释其原因。
3.在上题的基础上,在代码段在输入以下程序段并运行之,回答后面的问题。
MOVSI,1000H
MOVDI,2000H
MOVCX,20H
REPMOVSB
程序段执行后:
(1)从ES:
2000H开始的16个字单元的内容是什么?
(2)SI=?
DI=?
CX=?
并分析之。
4.在以上两题的基础上,在代码段在输入以下三段程序段并运行之。
程序段1:
MOVSI,1000H
MOVDI,2000H
MOVCX,10H
REPZCMPSW
程序段1执行后:
(1)ZF=?
根据ZF的状态和CX的内容,你认为两个串是否比较完了?
(2)SI=?
DI=?
CX=?
并分析之。
程序段2:
MOVBX,2008H
MOVWORDPTR[BX],4455H
MOVSI,1000H
MOVDI,2000H
MOVCX,10H
REPZCMPSW
程序段2执行后:
(1)ZF=?
根据ZF的状态和CX的内容,你认为两个串是否比较完了?
(2)SI=?
DI=?
CX=?
并分析之。
程序段3:
MOVAX,4455H
MOVDI,2000H
MOVCX,10H
REPNZSCASW
程序段3执行后:
(1)ZF=?
根据ZF的状态和CX的内容,你认为在串中是否找到了4455H?
(2)SI=?
DI=?
CX=?
并分析之。
5.从DS:
1000H开始存放一个字符串“Thisisastring”,要求把这个字符串从后向前传送到DS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验指导书 最终版 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)