80868088微机原理及应用Ⅰ实验指导书.docx
- 文档编号:24524611
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:41
- 大小:94.74KB
80868088微机原理及应用Ⅰ实验指导书.docx
《80868088微机原理及应用Ⅰ实验指导书.docx》由会员分享,可在线阅读,更多相关《80868088微机原理及应用Ⅰ实验指导书.docx(41页珍藏版)》请在冰豆网上搜索。
80868088微机原理及应用Ⅰ实验指导书
8086/8088微机原理与接口技术
实验指导书
第一部分软件部分实验
实验一汇编语言上机环境及基本操作
一、实验目的及要求
1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验内容
1建立软件工作环境
为了正常运行汇编程序,需要如下程序:
masm.exe或tasm.exe
link.exe
debug.exe
等
2建立汇编文件
例在屏幕上输出'Thisisamasmsample!
'
使用edit编辑如下文件,并保存为sample.asm:
;Programisanexample
datasegment
astrDB'Thisisamasmsample!
',0dh,0AH,'$'
dataends
codesegment
assumeCS:
code,DS:
data
mainprocfar
start:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,code
MOVDS,AX
LEADX,astr
MOVAH,09h
INT21h
RET
mainendp
codeends
endstart
1)使用汇编
c:
\>masmsample---开始汇编
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.……---软件提示
ObjectFilename[sample.obj]:
---提示输入目标文件名,可省略
Sourcelisting[Nul.lst]:
---提示输入列表文件名,可省略
Crossreference[NUL.crf]:
WarningSevere
注意:
若汇编的错误提示不为0,则须重新调用editsample.asm修改错误,然后再汇编,该过程直到错误提示为0为止。
2)使用link产生EXE文件
c:
\>linksample
………….
…………
Runfile[sample.exe]:
--提示输入可执行文件名,可以省略
Listfile[NUL.map]:
--提示输入连接映象文件
Libraries[.lib]--输入文件用到的库文件名
……
…..
3)执行
c:
\>sample或debugsample.exe
附:
ms-dos方式,是windows提供的一个字符界面的shell窗口,通过“开始\程序\ms-dos方式”进入ms-dos方式后,可以按下“ALt+Enter”获得全屏幕的窗口,再该窗口下,主要通过键入命令和观察结果获得交互信息。
命令简介
1、DIR命令
显示当前目录下的文件和目录
格式为:
dir
2、CD命令
改变当前工作目录
格式为:
cdd:
\student\your_name
3、MD命令
建立一个新的目录
格式为:
mdyour_name
4、DEL命令
删除文件
格式为:
delfirst01.asm
5、RD命令
删除目录,要求要删除的目录下无任何目录或文件
格式为:
rdyour_name
6、COPY命令
拷贝命令
格式为:
copyfirst01.asmfirst02.org(将文件first01.asm复制为first01.org)
实验二DEBUG调试程序的应用
一、实验目的及要求
1.了解并掌握常用DEBUG调试指令。
2.能够在熟悉汇编程序开发过程的同时,利用DEBUG调试环境对源程序进行调试、跟踪及修改相应的逻辑错误。
二、实验内容
1.直接启动DEBUG程序
如DEBUGCOM在C盘的根目录下,启动的方法是:
C:
\>DEBUG
这时屏幕上会出现“_"提示符,等待键入DEBUG命令。
2.启动DEBUG程序的同时装入被调试文件
命令格式如下:
C:
\>DEBUG[d:
][PATH]filename[.EXE]
其中,【d:
】【PATH】是被调试文件所在盘及其路径,filename是被调试文件的文件名,【.EXE】是被调试文件的扩展名。
例如:
BCDSUM.EXE可执行文件在A盘,用DEBUG对其进行调试的操作命令如下。
C:
\>DEBUGA:
\BCDSUN.EXE
DOS在调用DEBUG程序后,再由DEBUG把被调试文件装入内存,当被调试文件的扩展名为COM时,装入偏移量为100H的位置,当扩展名为EXE时,装入偏移量为0的位置,并建立程序段前缀PSP,为CPU寄存器设置初始值。
3.退出DEBUG
在DEBUG命令提示符“_"下键入Q命令,即可结束DEBUG的运行,返回DOS操作
系统。
4.在DEBUG环境下建立和汇编程序
在DEBUG环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。
比如,在DEBUG下运行如下程序:
MOVDL,33H;字符3的ASCII码送DL
MOVAH,2;使用DOS的2号功能调用
INT21H进入功能调用,输出‘3'
INT20H:
BIOS中断服务,程序正常结束。
该程序运行结果是在显示器上输出一个字符‘3’。
如果要输出其它字符,请改变程序中‘33H’为相应字符的.ASCII码。
其中涉及DOS和BIOS功能调用。
因为我们是在DOS的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入输出指令直接通过端口输入/输出,而必须使用DOS内部提供的子程序完成输入输出。
DOS功能调用就是为诸如此类的目的设置的。
DOS功能调用要求在进入INT21H调用前,首先将功能调用号送AH寄存器,并根据功能调用号准备初始数据。
也就是说INT21H的2号功能调用是输出DL寄存器中的字符。
INT20H是BIOS中断服务,这一软中断用来正常结束程序。
运行步骤:
(1)进入DEBUG
设C盘上有DEBUG.COM程序,进入DOS环境后键人DEBUG
C:
\>DEBUG
随后屏幕显示:
“_"号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。
现在用A命令输入程序如下。
(2)输入程序并汇编
_A100
169C:
0100MOVDL,33
169C:
0102MOVAH,2
169C:
0104INT21.
169C:
0106INT20
169C:
0108
至此程序已输入完毕,并汇编成机器指令。
现在用G命令运行程序如下:
(3)执行机器指令程序
_G=200
3
Programterminatednormally
5.编程,并对实验一中的源程序进行DEBUG调试。
附:
常用DEBUG命令
DEBUG命令是在命令提示符”_”下由键盘键入的。
每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键(ENTER)。
命令及参数的输入可以是大小写的结合。
Crtl+Break键可中止命令的执行。
Crtl+NumLoek键可暂停屏幕卷动,按任一键继续。
所用的操作数均为十六进制数,不必写H。
1.汇编命令A
格式:
(1)A<段寄存器名>:
<偏移地址>
(2)A<段地址>:
<偏移地址>
(3)A<偏移地址>
(4)A
功能:
汇编命令是将用户输入的汇编语言指令,汇编为可执行的机器指令。
键人该命令后显示段地址和偏移地址并等待用户从键盘逐条键入汇编语言指令。
每当输入一行语句后按“ENTER"键,输入的语句有效。
若输入的语句中有错,DEBUG会显示“^Error",要求用户重新输入,直到显示下一地址时用户直接键入回车键返回到提示符”_”。
其中
(1)用指定段寄存器内容作段地址;(3)用CS内谷作段地址;(4)以cs:
100作地址。
以后命令中提及的各种地址形式,均指
(1)、
(2)、(3)中A命令后的地址形式。
2.比较命令C
格式:
C<源地址范围>,<目标地址>
其中<范围>是由<起始地址×终止地址>指出的一片连续单元,或由<起始地址>L<长度>指定的。
功能:
从<源地址范围>的起始地址单元起逐个与目标起始地址以后的单元顺序比较单元的内容,直至源终止地址为止。
遇有不一致时,以<源地址><源内容><目标内容×目标地址>的形式显示失配单元及内容。
3.显示内存单元命令D
格式:
(1)D<地址>
(2)D<地址范围>
(3)D
其中
(1)以CS为段寄存器;(3)显示CS:
l00为起始地址的一片内存单元内容。
功能:
该命令将显示一片内存单元的内容,左边显示行首字节的段地址:
偏移地址,中间是以十六进制形式显示的指定范围的内存单元内容,右边是与十六进制数相对应字节的ASCII码字符,对不可见字符以'.'代替。
4.修改内存单元命令E
格式:
(1)E<地址><单元内容>
(2)E<地址><单元内容表>
其中<单元内容>是一个十六进制数,或是用引号'(或")括起来的字符串;<单元内容表>是以逗号分隔的十六进制数,或是用,或"括起来的字符串,或者是二者的组合。
功能:
(1)将指定内容写入指定单元后显示下一地址,以代替原来内容。
可连续键入修改内容,直至新地址出现后键入回车
(2)将<单元内容表>逐一写入由<地址>开始的一片单元中,该功能可以将由指定地址开始的连续内存单元中的内容,修改为单元内容表中的内容。
例如:
_EDS:
30F8,AB,’AB’
该命令执行后,从DS:
30到DS:
33的连续4个存储单元的内容将被修改为F8H,ABH,4lH,42H。
5.填充内存命令F
格式:
F<范围><单元内容表>
功能:
将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。
例如:
F05BC:
200L10B2,‘XYZ',3C
该命令将由地址05BC:
200开始的10H(16)个存储单元顺序填充“B2,58,59,5A,3C,B3,58,59,5A,3C,B2,58,59,5A,3C,B2"
6.连续执行命令G
格式:
(1)G
(2)G=<地址>
(3)G=<地址>,<断点>
其中
(2)、(3)中的”=”是不可缺省的。
功能:
默认程序从CS:
IP开始执行。
程序从当前的指定偏移地址开始执行。
从指定地址开始执行,到断点自动停止并显示当前所有寄存器、状态标志位的内容和下一条要执行的指令。
DEBUG调试程序最多允许设置l0个断点。
7.跟踪命令T
格式:
T【=<地址>】【<条数>】
功能:
如果键入T命令后直接按“ENTER"键,则默认从CS:
IP开始执行程序,且每执行一条指令后要停下来,显示所有寄存器、状态标志位的内容和下一条要执行的指令。
用户也可以指定程序开始执行的起始地址。
<条数>的缺省值是一条,也可以由<条数>指定执行若干条命令后停下来。
例如:
T
该命令执行当前指令并显示所有寄存器、状态标志位的内容和下一条要执行的指令。
又例如:
T10
该命令从当前指令开始执行10H条指令后停下来,所有寄存器、状态标志位的内容和下一条要执行的指令。
8.反汇编命令U
格式:
(1)U<地址>
(2)U<地址范围>
功能:
反汇编命令是将机器指令翻译成符号形式的汇编语言指令。
该命令将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。
注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。
地址及范围的缺省值是上次U指令后下一地址的值。
这样可以连续反汇编。
9.执行过程命令P
格式:
P
功能:
执行一条指令或一个过程(子程序),然后显示各寄存器的状态。
说明:
该命令主要用于调试程序。
它与跟踪命令T的作用类似,T命令是跟踪一条或多条指令,而P命令是执行一条指令(包括带重复前缀的数据串操作指令)或一个完整的过程(子程序)。
例如:
设有如下指令序列
MOVAH,02H
INT21H;
当要执行1NT21H这条指令时,若用T命令进行跟踪,则进入INT21H程序(DOS功能调用)后,需要数十次T命令才能返回当前程序;若采用P命令进行调试,则只执行1NT20H一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。
因此,当以后遇到CALL、INTn指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用P命令。
10.定义待装入文件命令N
格式:
N【d:
】【PATH】fllename[.EXE】
功能:
N命令一般和L命令联合使用,为L命令定义指定路径的待装入文件。
11.装入文件命令L
格式:
L<地址><盘号><起始逻辑扇区><所读扇区个数n>
其中<地址>的缺省值为CS:
100。
逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:
物理扇区是按0面0道1区,0面0道2区,…….0面0道9区,0面l道l区,……0面39道9区,l面0道l区,……l面39道9区排列。
而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道l扇区至9扇区,逻辑扇区号为0~8;物理扇区l面0道l扇区至9扇区,逻辑扇区号为9~llH:
物理扇区0面l道l扇区至9扇区,逻辑扇区号为12----1AH……这样每道先0面后l面一直排下去。
其中<盘号>为0、l或2,0表示A盘,l表示B盘,2表示硬盘。
功能:
将<盘号>指定的盘上,从<起始逻辑扇区>起,共n个逻辑扇区上的所有字节顺序读入指定内存地址的一片连续单元。
当L后的参数缺省时,必须在L之前由N命令指定(或进A.DEBUG时一并指出)所读盘文件名。
此时L执行后将该文件装入内存。
例如:
_NEXAMPLE
_L
将当前盘上的EXAMPLE文件装入CS:
100起始的一片内存单元。
12.内存单元搬家命令M
格式:
M<源地址范围×目标起始地址>
其中源及目标地址若仅输入偏移量,则隐含相对DS。
功能:
把<源地址范围>中的内容顺序搬至<目标起始地址>起的一片连续单元。
例如:
MCS:
100110600
该命令把由CS:
100起到CS:
110止共17个字节搬至DS:
600至.DS:
610的一片单元。
13.写盘命令W
格式:
W<地址><盘号><起始逻辑扇区><所写逻辑扇区数n>
功能:
该命令是将内存<地址>起始的一片单元内容写入指定扇区。
只有W而没有参数时,与N命令配合使用使用户完成写盘操作。
用户可用N命令先定义被调试的文件,再将被调试文件的字节长度值送BX、CX(BX寄存器存放字节长度值的高位,CX寄存器存放字节长度值的低位),.最后用写盘命令W将被调试文件存入磁盘。
例如:
欲将D1.COM文件写入磁盘,设文件长度为40字节,可进行如下操作。
_ND1.COM
-RCX
CXxxxx:
0040
_RBX
BXxxxx:
0000
_W
Writing00040bytes
14.显示命令R
格式:
(1)R
(2)R<寄存器名>
功能:
显示当前所有寄存器内容、状态标志及将要执行的下一指令的地址(即CS:
IP)、机器指令代码及汇编语句形式。
其中对状态标志寄存器FLAG以状态标志位的形式显示,详见教材。
15.端口输出命令。
格式:
O<端口地址><字节>
功能:
将该<字节>由指定<端口地址>输出。
例如:
O2F4F
该命令将4FH从2FH口输出.
16.搜索指定内存命令S
格式:
S<地址范围><表>
功能:
在指定范围搜索表中内容,找到后显示表中元素所在地址
例如:
S10011041
屏幕显示:
04BA:
0104
04BA:
010D
表示在l00H~llOH之间的一片存储单元中,104H和10DH两个单元有41H。
又如:
SCS:
100L10‘AB'
表示在当前代码段位移100H至11OH处搜索连续3个字节内容为41H、42H(分别对应A、B的ASCII码)的单元。
17.十六进制算术运算指令H
格式:
H<值l><值2>
功能:
求十六进制数<值l>和<值>的和与差并显示结果。
18.端口输入命令I
格式:
I<端口地址>
功能:
将从指定端口输入的内容显示出来。
19.结束DEBUG返回DOS命令Q
格式:
Q
功能:
返回DOS提示符下。
实验三多精度十进制加法程序设计
一、实验目的
1.学习数据传送和算术运算指令的用法。
2.掌握加法计算程序的设计思路和设计方法。
3.熟悉在PC机上建立、汇编、连接和调试程序的方法。
二、实验内容
1.将两个多精度十进制数相加。
2.要求被加数和加数均以组合BCD码形式各自存放在以DATA1和DATA2为首的连续的5个内存单元中,结果送回被加数单元。
三、编程思路
该题目要求掌握ADC指令和DAA指令的应用。
为了实现指定功能,应从以下几个方面考虑:
(1)组织数据时,要按照高位在高地址,低位在低地址的原则。
(2)要完成多精度字节数据相加,最低字节用ADD指令,而其他高位字节则要用ADC指令。
(3)因为被加数和加数都以BCD码表示,所以在加法指令之后要有加法调整指令。
(4)题目要求完成5个字节十进制数相加,所以要用循环程序。
四、参考程序
Crlfmacro
Movdl,0dh
Movah,0ah
Int21h
Movdl,0ah
Int21h
Endm
Datasegment
Data1db37h,49h,53h,19h,46h
Data2db90h,87h,49h,31h,25h
Dataends
Codesegment
Assumecs:
code,ds:
data
Start:
Movax,data
Movds,ax
Movsi,offsetdata1
Movbx,5
Calldispl
Crlf
Movsi,offsetdata2
Movbx,5
Calldispl
Crlf
Movsi,offsetdata1
Movdi,offsetdata2
Movcx,5
Calladda
Movsi,offsetdata1
Movbx,5
Calldispl
Crlf
Movah,4ch
Int21h
Displprocnear
Addsi,bx
Decsi
Ds1:
movdh,[si]
Movdl,dh
Movcl,4
Shrdl,cl
Ordl,30h
Movah,02h
Int21h
Movdl,dh
Anddl,0fh
Ordl,30h
Int21h
Decsi
Decbx
Jnzds1
Ret
Displendp
Addaprocnear
CLC
Ad1:
moval,[si]
Adcal,[di]
Daa
Mov[si],al
Incsi
Incdi
Loopad1
Ret
Addaendp
Codeends
Endstart
五、思考题
1)在子程序ADDA中,为什么需要CLC这条语句,没有行不行?
2)在这个程序中,回车换行是用宏指令完成的,如果把宏指令改为子程序应如何设计程序?
3)如果要完成多精度十进制减法,应如何设计程序?
实验四数学表达式计算
一、实验目的
1.掌握算术运算指令的应用方法。
2.理解计算机中除法溢出的含义。
二、实验内容
1.设W、X、Y、Z均为l6位带符号数。
2.要求完成计算表达式(W-(X*Y+Z-220))/X。
3.将表达式的商和余数存入数据区RESULT单元开始的区域中。
三、编程思路
该题目要求掌握乘除法运算中带符号数和无符号数运算的区别。
为了实现指定功能,应从以下几个方面考虑:
(1)带符号数的乘除法运算应选用的指令。
(2)乘、除法运算中操作数的长度问题。
(3)带符号数的扩展问题。
四、参考程序清单
DATASEGMENT
WDW-304
XDW1000
YDW-12
ZDW20
RESULTDW2DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X
IMULY
MOVCX,Ax
MOVBX,DX
MOVAX,Z
CWD
ADDCX,AX、
ADCBX,DX
SUBCX,220
SBBBX,0
MOVAX,W
CWD
SUBAX,CX
SBBDX,BX
IDIVX
MOVRESULT,AX
MOVRESULT+2,DX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
五、思考题
1)如果是无符号数,乘除时应如何选择指令?
2)如果要求表达式中的X,Y,Z,W从键盘输入应如何设计程序?
实验五分支结构程序设计
一、实验目的
1.掌握多分支结构程序设计的方法;
2.掌握无符数和带符号数比较大小转移指令的区别。
二、实验内容
1.在数据区中定义三个带符号字节变量。
2.编写程序将其中的最大数找出送到MAX单元中。
三、编程思路
该题目要求掌握多分支程序设计方法。
为了实现指定功能,应从以下几个方面考虑:
(1)确定编程的算法思想。
(2)确定带符号数比较大小转移应选择哪一组条件转移指令。
四、参考程序清单
DATASEGMENT
XDB115
YDB23
ZDB-20
MAXDB?
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVAL,X
CMPAL,Y
JGNEXT
MOVAL,Y
CMPAL,Z
JGEXIT
MOVAL,Z
JMPEXIT
NEXT:
CMPAL,Z
JGEXIT
MOVAL,Z
EXIT:
MOVMAX,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART;返回DOS
五、思考题
1)如果用子程序的方法来设计程序,应如何修改此程序?
2)如果是无符号数比较大小,条件转移时应选择哪一组指令?
实验六循环结构程序设计
一、实验目的
1.掌握循环结构程序设计的方法;
2.掌握数据块传送程序设计的方法;
3.掌握串传送指令的应用。
二、实验内容
1.编写程序实现将数据段STR1单元开始的20个字符移到STR2开始的存储区。
2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 80868088 微机 原理 应用 实验 指导书