微机原理与接口实验指导书.docx
- 文档编号:12182072
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:33
- 大小:317.99KB
微机原理与接口实验指导书.docx
《微机原理与接口实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理与接口实验指导书.docx(33页珍藏版)》请在冰豆网上搜索。
微机原理与接口实验指导书
目录
实验一、调试软件的使用1
实验二、寄存器与存储器6
实验三、指令与寻址方式9
实验四、汇编语言程序设计11
实验五、宏程序设计23
实验六、中断服务程序设计24
实验一、调试软件的使用
【实验目的】
掌握调试软件的基本用法和常用命令,学会用调试软件观察计算机的内部结构,汇编、反汇编程序,跟踪、调试程序。
【实验内容】
1.调试软件的基本操作。
2.察看和修改寄存器与存储器内容。
3.汇编与反汇编。
4.跟踪和调试程序。
5.简单程序设计。
【实验准备】
1.复习调试软件的基本用法和常用命令。
2.复习8086数据传送类指令。
3.复习8086算术运算指令。
【实验步骤】
1.调试程序DEBUG的启动与退出。
1)启动DEBUG:
在DOS提示符下键入:
DEBUG。
进入后显示DEBUG提示符‘-’。
2)DEBUG帮助:
在DEBUG提示符下键入:
?
。
DEBUG会列出所有命令及使用方法简单提示,如下图:
3)十六进制数加减法:
在DEBUG提示符下键入:
H1234ABCD。
观察结果。
4)退出DEBUG:
在DEBUG提示符下键入:
Q。
即可退出,进入DOS。
2.显示与修改寄存器的内容。
1)显示所有寄存器内容:
在DEBUG提示符下键入:
R。
显示:
2)显示和修改指定寄存器内容:
在DEBUG提示符下键入:
RAX。
显示AX内容,如需修改,则直接键入要修改的值(图中1234),若不想修改,直接回车便可,如下图:
3)显示修改标志寄存器:
在DEBUG提示符下键入:
RF。
显示当前标志,如需修改,则直接键入要修改的值(可按任意顺序),若不想修改,直接回车便可,注意标志位的缩写:
0标志—NVUPDIPLNZNAPONC
1标志—OVDNEINGZRACPECY,如下图:
4)请参照上述操作步骤,显示和修改各寄存器内容及标志寄存器内容,观察结果并记录。
3.显示与修改存储器的内容。
1)显示存储器的内容,格式:
D[地址]或D[范围],如:
D100:
显示100H单元开始的80个字节的内容。
D10011F:
显示100H~11F单元的内容。
D100L8:
显示100H单元开始的8个字节的内容。
D:
显示上一个D命令显示单元的后续80个字节的内容。
如下图:
2)修改存储器的内容,格式:
E地址[数据数据...]。
注意:
地址不能省略,但数据可以省略。
省略数据列表时可以交互输入,空格继续,回车结束。
如:
EDS:
10001A2B3C4D5E,‘WINDOWS’:
将字节列表中给出的11个字节填入DS:
1000开始的存储单元。
E100:
将从100单元开始逐个修改存储单元内容。
如下图:
4.汇编与反汇编命令。
1)汇编命令:
格式:
A[地址],若省略地址,则默认为当前的CS:
IP。
如:
A100:
从100单元开始逐句输入汇编指令,回车后DEBUG自动翻译成机器码,如下图:
2)反汇编命令:
格式:
U[地址]或U[地址范围],若省略地址,则默认为当前的CS:
IP。
如:
U100:
将100H单元开始的32个字节的内容翻译成汇编指令并显示,如下图:
5.程序运行跟踪命令。
1)运行命令:
格式:
G[=地址],若省略地址,则默认为当前的CS:
IP。
初次调试时不建议采用,可能会因为程序设计不当,造成意想不到的结果。
2)跟踪命令:
格式:
T[=地址][指令条数],若省略地址,则默认为当前的CS:
IP。
跟踪命令从指定的地址开始执行指令条数规定的指令后暂停,并显示寄存器内容和当前标志值。
若不指定指令条数,则默认为1,即为单步跟踪。
如下图:
3)参照步骤1、2所述,观察并记录一下指令执行的结果:
MOV、ADD、ADC、SUB、SBB、INC、DEC。
6.简单程序的设计。
编写实现以下要求的简单汇编指令程序(任选其一),调试运行、观察并记录结果。
1)交换SI的高低字节。
2)计算200H开始的3个字节单元的累加和。
3)计算XY(X、Y为16位任意整数),结果存放到200H开始的单元。
参考程序。
1)交换SI的高低字节。
MOVAX,SI
XCHGAL,AH
MOVSI,AX
INT3;断点中断调用指令,便于程序调试。
2)计算200H开始的3个字节单元的累加和。
SUBAX,AX
ADDAL,[200]
ADCAH,0
ADDAL,[201]
ADCAH,0
ADDAL,[202]
ADCAH,0
INT3
3)计算XY。
MOVAX,X;X为被乘数
MOVBX,Y;Y为乘数
IMULBX
MOV[200],AX;低16位
MOV[202],DX;高16位
INT3
【实验要求】
1.叙述使用DEBUG调试程序的过程。
2.分析实验过程中出现的错误的原因。
3.记录指令运行和程序运行的结果。
4.编写、调试运行程序,分析实验过程中出现的错误的原因。
实验二、寄存器与存储器
【实验目的】
掌握计算机的内部结构,学会用调试软件观察计算机内部的数据状态。
【实验内容】
1.显示与修改寄存器的内容。
2.显示与修改存储器的内容。
【实验准备】
1.复习计算机中数据的表示。
2.复习8086CPU内部结构,特别是8086CPU中的寄存器。
3.复习8086CPU存储器组织,存储器的分段、逻辑地址、物理地址等概念。
4.复习DEBUG软件的基本用法。
【实验步骤】
进入DEBUG命令方式。
1.显示与修改寄存器的内容。
1)显示所有寄存器内容:
在DEBUG提示符下键入:
R。
显示:
2)显示和修改指定寄存器内容:
在DEBUG提示符下键入:
RAX。
显示AX内容,如需修改,则直接键入要修改的值(图中1234),若不想修改,直接回车便可,如下图:
3)显示修改标志寄存器:
在DEBUG提示符下键入:
RF。
显示当前标志,如需修改,则直接键入要修改的值(可按任意顺序),若不想修改,直接回车便可,注意标志位的缩写:
0标志—NVUPDIPLNZNAPONC
1标志—OVDNEINGZRACPECY,如下图:
4)请参照上述操作步骤,显示和修改各寄存器内容及标志寄存器内容,观察结果并记录。
2.显示与修改存储器的内容。
1)显示存储器的内容,格式:
D[地址]或D[范围],如:
D100:
显示100H单元开始的80个字节的内容。
D10011F:
显示100H~11F单元的内容。
D100L8:
显示100H单元开始的8个字节的内容。
D:
显示上一个D命令显示单元的后续80个字节的内容。
如下图:
2)修改存储器的内容,格式:
E地址[数据数据...]。
注意:
地址不能省略,但数据可以省略。
省略数据列表时可以交互输入,空格继续,回车结束。
如:
EDS:
10001A2B3C4D5E,‘WINDOWS’:
将字节列表中给出的11个字节填入DS:
1000开始的存储单元。
E100:
将从100单元开始逐个修改存储单元内容。
如下图:
【实验要求】
1.叙述使用DEBUG调试程序的过程。
2.分析实验过程中出现的错误的原因。
实验三、指令与寻址方式
【实验目的】
掌握8086CPU的指令系统,学会用调试软件汇编与反汇编指令,分析机器指令与符号指令的格式,验证指令的功能,验证寻址方式的作用。
【实验内容】
1.分析机器指令与符号指令的格式。
2.验证指令的功能。
3.验证寻址方式的作用。
【实验准备】
1.复习调试软件的基本用法和常用命令。
2.复习8086CPU的指令系统。
3.复习8086CPU的寻址方式。
【实验步骤】
进入DEBUG命令方式。
1.分析机器指令与符号指令的格式。
1)输入符号指令。
A100MOVAX,1234:
从100单元开始输入汇编指令,回车后DEBUG自动翻译成机器码,如下图:
2)查看机器指令。
U100:
将100H单元开始的32个字节的内容翻译成汇编指令并显示,如下图:
3)输入机器指令,查看对应的符号指令。
E100B83412:
将机器指令输入到100H单元开始的3个字节中。
U100:
查看机器指令对应的符号指令。
4)通过多条相关指令的格式对比,分析机器指令位格式。
2.验证指令的功能。
1)编写指令序列并运行。
例如:
MOVAX,1234
ADDAX,FFFF
2)观察相关的寄存器、标志位和存储器单元的变化。
3)参照前两个步骤,验证其他指令的功能。
如:
MUL、DIV、PUSH、POP、LOOP、CALL、RET、INT、IRET等指令
3.验证寻址方式的作用。
1)编写同一指令类型,但采用不同寻址方式的指令,分别运行并观察、分析指令运行的结果。
例如:
MOVAX,1234
MOVAX,[1234]
【实验要求】
1.指导书只给出操作方法的示例,实验人员应按照示例完成一定数量的实验操作。
2.要详细记录实验过程和观察现象,通过表格、图形等形式分析实验结果,获取规律性的结论。
3.如果对某项内容研究较深入,其他项目可以选做。
实验四、汇编语言程序设计
【实验目的】
1.熟悉汇编语言源程序的一般结构。
2.熟悉常用伪指令的使用。
3.掌握汇编程序MASM和连接程序LINK的使用方法和从源程序建立到生成可执行文件的汇编连接全过程。
【实验内容】
1.建立汇编语言源程序文件.ASM。
2.利用汇编程序将源文件汇编成用机器码表示的目标文件.OBJ。
3.用连接程序把目标文件转化成可执行文件.EXE。
4.运行可执行文件。
【实验准备】
1.复习汇编语言程序上机过程。
2.复习汇编语言语句格式及伪指令。
3.复习汇编语言的段结构。
【实验步骤】
1.汇编语言源程序的建立。
1)选择一个或自编一个你熟悉的完整的汇编语言源程序。
2)使用编辑程序录入。
格式:
EDIT[文件名]。
如:
在DOS提示符下,键入EDITABC.ASM:
用文本编辑程序打开或新建文件名为ABC.ASM的汇编语言源程序
3)逐句输入源程序,输入完毕,保存。
2.汇编为目标文件
1)使用汇编程序MASM。
格式:
MASM[源文件名.asm],[目标文件名.obj],[列表文件名.lst],[交叉索引文件名.crf]。
若省缺文件名,则MASM采用交互式提示输入。
如下图:
2)注意汇编过程和结束后的错误与警告提示。
MASM分警告错误(WarningErrors)和严重错误(SevereErrors)。
出现严重错误时汇编不能进行,此时应分析错误提示,找出原因,仍用EDIT修改后重新汇编,直到错误为0为止。
3)汇编正确,将至少产生目标文件(.OBJ)。
3.用连接程序生成可执行文件
1)目标文件不能直接运行,需要用到连接程序。
连接程序LINK可将多个.OBJ文件(即一个程序的多个模块)连接生成一个可执行文件.EXE。
格式:
LINK[目标文件1.OBJ],[目标文件2.OBJ]…。
若省缺文件名,则采用交互式输入。
如下图:
2)同样注意连接过程的错误与警告信息。
若有错误,在分析错误提示,找出原因后,仍须用EDIT修改源程序,重新汇编,重新连接,直到错误为0为止。
4.执行程序
1)通过以上的操作我们得到了一个可直接执行的文件。
在DOS提示符下键入文件名即可运行程序。
如:
ABC
2)有时程序可执行了,但在屏幕上看不到结果或者不是我们预期的结果,这时我们就又要用到上个实验中的DEBUG程序进行察看或调试。
3)直接调试可执行文件的方法。
格式:
DEBUG文件名.EXE。
如:
DEBUGABC.EXE
参考程序。
功能:
从内存中存放的10个无符号字节整数中找出最小数并保存在AL中。
DATASEGMENT
BUFDB23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH
CNEQU$-BUF
DATAENDS
STACKSEGMENTSTACK'STACK'
STADB10DUP(?
)
TOPEQU$-STA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETBUF
MOVCX,CN
DECCX
MOVAL,[BX]
INCBX
LP:
CMPAL,[BX]
JBENEXT
MOVAL,[BX]
NEXT:
INCBX
DECCX
JNZLP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
【实验要求】
1.输入源程序,在实验报告中列出源程序清单。
2.分析实验过程中出现的错误的原因,说明解决办法。
3.执行程序,记录运行结果。
【程序设计示例】
一、顺序结构程序设计。
1.问题
编程计算数学表达式:
(W-(X*Y+Z-220))/X,并将结果(商和余数)存入RESULT开始的数据区中。
其中W、X、Y、Z均为16位有符号数。
2.设计思想
1)本实验将用到加减乘除运算。
2)16位乘法结果可能有32位,因此本实验中的加减运算要考虑32位。
3)计算步骤依照表达式中的先后次序。
3.流程图:
4.程序
DATASEGMENT
WDW-303
XDW1000
YDW-15
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,0
SUBCX,220
SBBBX,0
MOVAX,W
CWD
SUBAX,CX
SBBDX,BX
IDIVX
MOVRESULT,AX
MOVRESULT+2,DX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
二、分支结构程序设计。
1.问题
在数据区中定义三个带符号数的字节变量,编写程序将其中的最大数找出来送到MAX单元。
2.设计思想
1)本实验将用到带符号数比较转移指令。
2)可先比较两个数,选出其中大者,再与第三个数比较。
3.程序流程图
Y
N
Y
N
4.程序
DATASEGMENT
XDB115
YDB23
ZDB-20
MAXDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,X
CMPAL,Y
JGNEXT
MOVAL,Y
NEXT:
CMPAL,Z
JGOK
MOVAL,Z
OK:
MOVMAX,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
三、循环程序设计
1.问题
编程将数据段STR1单元开始的N个字符移到STR2开始的区域。
2.设计思想
1)本实验为数据块移动操作,既可用MOV传送指令,也可用串操作指令。
2)可以从数据块的首地址开始也可从末地址开始。
2.参考流程图(MOV指令,首地址开始):
Y
N
Y
4.参考程序。
DATASEGMENT
STR1DB‘WHATISYOUNAME?
’,0AH,0DH,’$’
CNEQU$-STR1
STR2DBCNDUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,CN
LEASI,STR1
LEADI,STR2
LP:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
四、子程序设计
1.问题
从键盘向缓冲区BUF输入若干位十进制数的ASCII码,转换成二进制数存于BIN开始的字单元中。
BUF中的数字以0DH结束。
2.设计思想
1)本实验将用到DOS功能调用的1号功能。
2)可以边读键盘输入边存入到BUF开始的缓冲区,0DH结束。
3)设输入的十进制数为d4d3d2d1d0(不超过65535,化为二进制数后为16位)。
则d4d3d2d1d0=((((010+d4)10+d3)10+d2)10+d1)10+d0。
4)可把di+110+di设计为子程序,调用次数=输入数据位数。
3.参考程序
DATASEGMENT
BUFDB5DUP(?
)
BINDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
MOVCX,0
MOVAH,1
SCAN:
INT21H
CMPAL,0DH
JECVT
SUBAL,30H
MOV[SI],AL
INCSI
INCCX
JMPSCAN
CVT:
LEASI,BUF
LEADI,BIN
CALLCHANGE
MOVAH,4CH
INT21H
;子程序:
CHANGE
CHANGEPROCNEAR
PUSHDX
PUSHBX
MOVAX,0
MOVDX,10
NEXT:
PUSHDX
MULDX
POPDX
MOVBL,[SI]
MOVBH,0
ADDAX,BX
INCSI
LOOPNEXT
MOV[DI],AX
POPBX
POPDX
RET
CHANGEENDP
CODEENDS
ENDSTART
五、中断调用程序设计
1.问题
1)接收键盘输入的字符。
2)将其中的小写字母转换为大写字母,放到输入缓冲区。
3)遇到回车符表示本次输入结束,显示输入缓冲区的内容。
4)CTRL+C表示程序结束。
2.设计思想
1)用DOS中断中的01H号功能实现读键盘输入,用09H号功能实现显示。
2)边读入字符边判别边存放,若是大写字母(41H~5AH)不转换,若是小写字母(61H~7AH)则转换,若是回车符(0DH)则显示缓冲区的内容,若是CTRL+C(03H)则结束程序。
3)显示缓冲区内容时要在末尾添加0AH,’$’。
3.参考程序。
DATASEGMENT
BUFDB80DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVBX,OFFSETBUF
LP:
MOVSI,0
LP1:
MOVAH,1
INT21H
CMPAL,03H
JZEXIT
CMPAL,0DH
JZNEXT1
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT
SUBAL,20H
NEXT:
MOV[BX+SI],AL
INCSI
JMPLP1
NEXT1:
MOV[BX+SI],AL
MOVAL,0AH
MOV[BX+SI+1],AL
MOVAL,’$’
MOV[BX+SI+2],AL
MOVDL,0DH
MOVAH,02H
INT21H
MOVDL,0AH
INT21H
MOVDX,BX
MOVAH,09H
INT21H
JMPLP
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
六、宏汇编程序设计
1.问题
将两个用压缩BCD码表示的4位十进制数相加,结果存入RESULT单元中,将此功能定义为宏,并进行调用。
2.设计思想
1)共定义三个形参:
分别表示两个十进制数和一个结果。
2)十进制加法需要调整(DAA指令)
3.参考程序(仅宏定义)
BCDADDMACROVARX,VARY,RESULT
MOVAL,VARX
ADDAL,VARY
DAA
MOVRESULT,AL
MOVAL,VARX+1
ADCAL,VARY+1
DAA
MOVRESULT+1,AL
ENDM
七、模块化程序设计
1.问题
主程序和子程序不在同一程序模块中时变量的传送方法。
2.设计思想
1)利用DATA段用COMMON合并成为一个覆盖段。
2)或把变量定义为全局变量。
3.各模块分别汇编,然后整体连接生成.EXE文件
4.调试、运行程序并观察、记录结果。
八、与C语言混合编程
1.问题
汇编语言与C语言混合编程的几种方法。
2.设计思想
1)方法1:
C语言内嵌汇编,如:
TurboC2.0:
asmmovax,0
c++:
asm{
movax,0
movbx,ax
}
2)方法2:
模块连接,如:
;文件a.asm
public_a
.modellarge;存储模式大模式(多个代码段和多个数据段)
.code;简化的段定义
_aproc;c语言对公共标识符加下划线
pushbp
movbp,sp
movax,[bp+6];第一个实参
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 实验 指导书