微机原理实验指导报告Word文件下载.docx
- 文档编号:21037461
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:19
- 大小:21.59KB
微机原理实验指导报告Word文件下载.docx
《微机原理实验指导报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导报告Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
incbx
loopAgain;
计数减一后判断,若不为零,则跳转到Again
movah,4ch;
返回DOS
int21h
codeends
endstart
五、实验步骤
1.用编辑软件(记事本或EDIT)输入源程序,建立*.asm文件,并存盘(注意路
径)。
2.用汇编程序masm.exe对源程序进行编译;
若程序没有语法错误,则生成*.obj
文件。
3.用连接程序link.exe对生成的*.obj文件进行连接;
若没有逻辑错误,则生成
*.EXE文件。
4.执行程序。
5.用DEBUG调试程序(常用命令见附录2)。
在DEBUG环境下:
(1)用U命令反汇编程序;
(2)用D命令查看数据缓冲区的内容;
(3)执行程序(用G命令全速或设断点执行程序或T命令单步执行程序);
(4)用D命令查看数据缓冲区的内容,检查程序执行是否正确;
(5)用E命令或F命令给数据段的前16个单元分别送0到0FH;
(6)再D命令查看内存单元的内容是否更改;
(7)用R命令查看各个寄存器的内容。
六、思考题
1.写出设断点执行程序的DEBUG命令格式。
2.如何用R命令查看程序运行后的各个寄存器的内容?
与你分析的结果是否一
致?
(提示:
不能用全速运行程序的方式)。
3.写出将可执行程序装入到DEBUG环境的两种方式。
教师签字日期
河_______南理工大学电气学院
实验二程序设计及DOS功能调用
1.掌握程序设计方法。
2.掌握指令的用法。
3.熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。
4.掌握DOS功能调用方法。
二、实验内容
1.从键盘输入N(范围:
0~9)
2.编制程序计算S=1*2+2*3+3*4+4*5+……+N*(N+1),将结果保存到RESULT单
元,并在屏幕上显示出来。
三、实验预习
1.预习指令系统和程序设计方法。
2.预习DOS功能调用方法。
3.预习在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。
4.画出程序流程图。
5.编写源程序(读懂并补全程序,指出各条指令的寻址方式)。
4
DATASEGMENT
INPUTDB‘N=’,’$’
BUFDB0DH,0AH,’S=1*2+2*3+3*4+4*5+…+N*(N+1)=’,’$’
RESULTDW0
RESDB4DUP(0),’H$’
DATAENDS
CODESEGMENT
ASSUME
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINPUT
MOVAH,09H
INT21H
MOVAH,
ANDAL,0FH
MOVCL,AL
MOVDX,
MOVAH,09H
XORDX,DX
MOVBL,1
NEXT:
MOVAL,BL
INCBL
MULBL
ADD,AX
DEC
JNZNEXT
MOV,;
保存结果
MOVCX,0004H
MOVDI,OFFSETRES
ADDDI,03H
NEXT1:
MOVAX,DX
ANDAX,000FH
CMPAL,0AH
JBNEXT2
ADDAL,
NEXT2:
ADDAL,30H
MOV[DI],AL
DECDI
PUSHCX
MOVCL,
DX,CL
POPCX
LOOPNEXT1
MOVDX,OFFSETRES
MOVAH,4CH
CODEENDS
ENDSTART
执行程序,屏幕上显示结果为:
四、实验步骤
1.用编辑软件输入源程序,建立*.asm文件,并存盘(注意路径)。
2.用汇编程序masm.exe对源程序进行汇编,若程序没有语法错误,则生成*.obj
文件;
3.用连接程序link.exe对生成的*.obj文件进行连接,若没有逻辑错误,则生成
4.执行文件,检查结果。
5.用DEBUG调试程序。
在DEBUG环境中,程序的执行可用G命令设断点执行或全程执行,也可用T命令单
步跟踪执行。
用D、R命令检查执行结果。
AXDX
RESULT
的段基址
的偏移量
的内容
程序运行前
程序运行后
五、思考题
1.在调试过程中用到了哪些DEBUG命令?
写出各条DEBUG命令的格式。
2.补全程序,并写出相应指令的寻址方式及功能(写在源程序右边)。
3.写出两种返回DOS操作系统的方法。
实验三程序调试(在伟福环境下执行)
注意:
做实验之前请先阅读附录3:
伟福环境简介。
1.了解数据排序的简单算法;
2.了解数列的有序和无序概念。
二、实验要求
给出一组随机数,将此组数据排序,使之成为有序数列。
三、实验说明
有序的数列更有利于查找。
本程序用的是“冒泡排序”法,算法是将一个数与后面
的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会
在数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序。
四、程序流程图
五、补全、运行程序并记录现象
datasegment
Lenequ10
Arraydb5H,2,1,0FH,20H,3,88H,6,5,9
Changedb0
codesegment
cs:
movax,
Sort:
movbx,
movcx,
movChange,0
Goon:
moval,[bx]
cmpal,[bx]
jNext;
前小后大,不交换
movChange,1;
前大后小,置交换标志
movah,[bx]
mov[bx],al;
交换
mov[bx-1],ah
Next:
loopGoon
cmpChange,0
jneSort
movah,4ch
1.在伟福环境中如何观察程序运行结果?
2.在伟福环境中如何设置待排序数据?
3.你所排序的数据是有符号数还是无符号数?
从哪条指令可以体现出来?
实验四8259外部中断实验
1.学习8088/86与8259的连接方法;
2.学习8088/86对8259的控制方法;
3.掌握赛思SICElab-G2010+实验箱的使用方法。
用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。
要求程
序中对每次中断进行计数,并将计数结果用数码管显示。
三、实验电路及连线
实验电路图如上图所示,将图中虚线部分连接,实线部分实验箱内部已经连接好
(以后实验相同)。
四、补全、运行程序并记录现象
OUTBITequ0e101h;
位控制口
CLK164equ0e102h;
段控制口(接164时钟位)
DAT164equ0e102h;
段控制口(接164数据位)
ICW1equ;
单片8259,上升沿中断,要写ICW4
ICW2equ;
中断号为20H
ICW4equ;
工作在8086/88方式
OCW1equ;
只响应INT0中断
CS8259Aequ0A000h;
8259地址
CS8259Bequ0A001h
LEDBufdb6dup(?
);
显示缓冲
Numdb1dup(?
显示的数据
DelayTdb1dup(?
LEDMAPdb3fh,06h,5bh,4fh,66h,6dh,7dh,07h;
八段管显示码
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
CNTdb0
Delayprocnear;
延时子程序
pushax
pushcx
moval,0
movcx,ax
loop$
popcx
popax
ret
Delayendp
DisplayLEDprocnear;
数码管的动态显示程序,可以不读
movbx,offsetLEDBuf
movcl,6;
共6个八段管
movah,00100000b;
从左边开始显示
DLoop:
movdx,OUTBIT
outdx,al;
关所有八段管
moval,[bx]
movch,8;
送164
DLP:
pushax
movah,0
testal,80h
jzGN1
movah,1
GN1:
movdx,DAT164;
输出数据位
moval,ah
andal,0fdh
outdx,al
movdx,CLK164;
送出时钟脉冲
oral,02h
shlal,1
decch
jnzDLP
movdx,OUTBIT
moval,ah
outdx,al;
显示一位八段管
movah,1
callDelay
shrah,1
deccl
jnzDLoop
movdx,OUTBIT
DisplayLEDendp
IEnterprocnear
pushdx
incCNT
movdx,CS8259A
moval,20h;
中断服务程序结束指令
outdx,al
popdx
iret
IEnterendp
IInitproc
moval,
movdx,CS8259B
IInitendp
Startprocnear
cli
movax,data
movdx,0e100h
moval,03h
movLEDBuf,07Fh;
显示8.2.5.9.0.0
movLEDBuf+1,05Bh
movLEDBuf+2,06Dh
movLEDBuf+3,06Fh
movLEDBuf+4,0
movLEDBuf+5,0
movax,0
movbx,4*ICW2;
中断号
movax,code
movcl,4
shlax,cl;
x16
addax,offsetIEnter;
中断入口地址(段地址为0)
mov[bx],ax
mov[bx],ax;
代码段地址为0
callIInit
movCNT,0;
计数值初始为0
sti
MLoop:
moval,CNT
movNum,al
movsi,offsetLEDMap
andal,0fh;
低四位
addax,si
movsi,ax
moval,[si];
数据转换成显示码
movLEDBuf+5,al
moval,Num;
高四位
shral,cl
movah,0
addax,si
movsi,ax
moval,[si]
movLEDBuf+4,al
movDelayT,2
DispAgain:
callDisplayLED;
显示
decDelayT
jnzDispAgain
jmpMLoop
Startendp
1.写出8259初始化的顺序。
2.加下划线的指令的功能,说明20H的各位的含义。
3.写出程序中装入中断向量相关的指令。
实验五8255输入、输出实验
1.了解8255芯片结构及编程方法。
2.了解8255输入/输出实验方法。
利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PC口作输出,
PB口作输入。
8255的/CS接地址译码/YC2,则命令字地址为0A003H,PA口地址为0A000H,PB
口地址为0A001H,PC口地址为0A002H。
PC0-PC7(PC口)接L0-L7(LED),PB0-PB7(PB
口)接S0-S7(开关量)。
四、实验说明
可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。
本实
验采用的是方式0:
PA,PC口输出,PB口输入。
modeequ;
方式0,PA,PC输出,PB输入
PortAequ0A000h;
PortA
PortBequ0A001h;
PortB
PortCequ0A002h;
PortC
CAddrequ0A003h;
控制字地址
code
mainprocnear
start:
moval,
movdx,CAddr
dx,al;
输出控制字,PortB输入PortC输出
movdx,PortB
inal,dx;
读入PortB
movdx,PortC;
PortC输出
movah,200
calldelay
jmpStart
mainendp
delayprocnear
moval,0
delayendp
1.画出程序流程图。
2.若希望8255B口的内容取反后再输出到A口,如何修改程序?
3.当开关全打在上方后,让8个发光二极管实现流水效果,写出程序并运行。
实验六8253计数器实验
1.学习8088/86与8253的连接方法。
2.学习8088/86对8253的控制方法。
利用8088/86外接8253
可编程定时器/计数器,可以
实现对外部事件进行计数。
设
置断点读回计数器的值。
本实验中计数器按方式0
工作。
即十六位二进制计数
器。
当计数设置好后,计数器
就开始计数。
如果要读入计数
器的值,要先锁存计数值,才能读到计数值。
本实验所设计数值为5,也就是外部5个
脉冲,计数器值加1。
同时OUT脚输出一个高电平。
实验时,可以将OUT0接到L0上,
观察计数器是否工作。
五、实验流程图
六、补全、运行程序并记录现象
CONTROLequ0a003h
COUNT0equ0a000h
COUNT1equ0a001h
COUNT2equ0a002h
startprocnear
moval,;
通道0,方式0
movdx,CONTROL
dx,al
moval,5;
计数器初始值。
movdx,COUNT0;
开始设置工作方式锁存计数值读回计数值
低八位
高八位
moval,;
锁存计数器值
movdx,COUNT0
读入计数值低八位
movbl,al
读入计数值高八位
movah,al
moval,bl
jmpAgain
startendp
七、思考题
1.实验中,需要按多少次脉冲按钮,才能观察到实验现象?
与计数初值之间的关
系是什么?
分析原因。
2.在将计数初值赋给8253后,马上就可以启动并进行定时或计数吗?
3.如果要读入计数器的值,要先锁存计数值,才能读到计数值。
写出相关指令。
实验环境
硬件条件:
高档PC机
赛思SICElab-G2010+实验箱
软件条件:
DOS操作系统。
任意一种编辑程序,如EDIT.EXE。
宏汇编程序MASM.EXE。
连接程序LINK.EXE。
调试程序DEBUG.EXE。
附录2:
DEBUG命令集
附录3:
伟福环境简介
1.点击图标,出现调试环境如下图:
2.点击[仿真器\仿真器设置],出现以下画面,进行仿真器设置:
仿真器选择为“G6W”、
仿真头为“8088\86实验”、CPU选择为“8088\86”,去了“使用伟福软件模拟器”前的
“”。
(如果只使用纯软件环境,不配合实验箱使用,不去掉“使用伟福软件模拟器”
前的“”。
3.点击[仿真器\仿真器设置\语言],出现以下画面,仿真器所使用的语言进行设置。
4.点击[仿真器\仿真器设置\通讯设置],出现以下画面,进行仿真器所使用的通讯口、
波特率设置。
在进行“测试串行口”后,接收和发送都无误时,表示设置正确。
(如果
纯软件调试程序不需要进行此项设置。
5.在上面设置完后,点[好],出现以下画面表示连机正确
6.用鼠标点一下[文件\打开文件]键,输入文件名NAME0.ASM,创造新文件,进入编辑
窗口,在该窗口中输入程序,点击保存键存盘。
在该目录中,此文件名应为唯一
的一个。
7.用鼠标点[项目\全部编译]窗,对当前窗口的源文件进行编译。
如果编译有错,信息
窗口将自动弹出来,并表明出错的状态和地方,用鼠标双击信息窗口信息条,则自动定
位源文件中出错的地方,你可修改存盘后再编译,直到编译通过为止。
8.编译正确后,即可进行仿真调试,可以单步运行(F7键),跟踪运行(F8键),全
速运行(Crtl+F9键),断点运行(设断点可用鼠标双击有效语句首端,再双击,即可
取消断点)。
9.打开[窗口],观察程序运行结果及相关信息。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导 报告