微机实验报告Word下载.docx
- 文档编号:19365908
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:35
- 大小:405.59KB
微机实验报告Word下载.docx
《微机实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《微机实验报告Word下载.docx(35页珍藏版)》请在冰豆网上搜索。
MOVAL,10000000B
OUTDX,AL
MOVDX,0C40AH
MOVBL,6H;
设置延迟3秒
L1:
MOVAL,00100100B;
南北绿灯亮,东西红灯亮
OUTDX,AL
CALLDY;
调用延迟子程序
DECBL
JNZL1
MOVBL,4H;
设置第二次闪烁3次
L2:
MOVDX,0C40AH
MOVAL,01000100B;
南北黄灯亮,东西红灯亮
CALLDY
MOVAL,00000100B;
南北黄灯灭,东西红灯亮,实现要求闪的功能
DECBL
JNZL2
MOVBL,6H;
第三次设置亮灭时间为3秒
L3:
MOVAL,10000001B;
JNZL3
MOVBL,4H
L4:
MOVAL,10000010B;
南北红灯亮,东西黄灯亮
MOVAL,10000000B;
南北红灯亮,东西黄灯灭,实现闪的功能
OUTDX,AL
JNZL4
MOVDL,0FFH;
判断是否有键按下,结束程序
MOVAH,06H
INT21H
JZSTART;
没有键按下,进入下一次循环
MOVAH,4CH
CODEENDS
ENDSTART
六、实验出现错误及感想:
延时过短,经计算后采用新的循环数值,得到预期结果
此程序条理很清晰,调试非常顺利。
两个实验的独自完成,使我对汇编语言产生了浓厚的兴趣,对之后的实验也有了信心。
实验二可编程定时器/计数器(8253)
一、实验目的
1、掌握并行接口8253的基本原理
2、掌握8253的编程方法
二、实验内容
1、按图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。
2、按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。
三、编程分析
1、8253地址分析:
控制寄存器地址:
0C403H
计数器0地址:
04C400H
计数器1地址:
04C401H
CLK0连接时钟:
1MHz。
2、程序参考流程图
四、汇编语言程序
程序1
DATASEGMENT
NDB0BH
DATAENDS
STACK1SEGMENTPARASTACK
DB20DUP(0)
STACK1ENDS
CODE,DS:
DATA,SS:
STACK1
MOVAX,DATA
MOVDS,AX
MOVAL,10H
MOVDX,0C403H
OUTDX,AL;
写控制字
MOVAL,N
MOVDX,0C400H
写入计数器0初值,初始化完成
READ:
INAL,DX;
读入计数值
CMPAL,09H
JLEASCI
ADDAL,07H
ASCI:
ADDAL,30H;
转化成ascii码
MOVDL,AL
MOVAH,02H
INT21H;
显示计数值
MOVDL,0DH;
加回车符,只显示一个符号
有键按下回DOS
MOVAH,06H
JNZEXIT
JMPREAD
EXIT:
MOVAH,4CH
CODEENDS
程序2
ASSUMECS:
CODE
MOVDX,0C403H
MOVAL,00110110B;
计数器0方式3产生方波
MOVDX,0C400H
MOVAX,1000;
计数器0计数值1000
MOVAL,AH
MOVAL,01110110B;
计数器1方式3
MOVDX,0C401H
计数器1送入记数值1000
有按键时结束
实验三中断
一、实验目的:
1、掌握PC机中断处理系统的基本原理。
2、学会编写中断服务程序。
二、实验器件8259PC机
三、实验原理与内容
1、实验原理
PC机用户可使用的硬件中断只有可屏蔽中断由8259中断控制器管理中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源
中断源中断类型号中断功能
IRQO08H时钟
IRQ109H键盘
IRQ2OAH与从片连接
IRQ3OBH串行口2
IRQ4OCH串行口l
IRQ5ODH硬盘
IRQ6OEH软盘
IRQ7OFH并行打印机
8个中断源的中断请求信号线IRQ0IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为边沿触发普通结束方式。
对于PC/AT及286以上微机内又扩展了一片8259中断控制IRQ2用于两片8259之间级连,对外可以提供16个中断源
IRQ8O7OH实时时钟
IRQ9O7lH用户中断
IRQ10O72H保留
IRQllO73H保留
IRQ12074H保留
IRQ13O75H协处理器
IRQ14O76H硬盘
IRQ15O77H保留
2、原理图
虚线为实验中需要连的线。
直接用手动产生单脉冲作为中断请求信号,要求每按一次开关产生一次中断,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。
四:
流程图
五实验程序
;
386以上微机适用
纯dos下才能使用
tasm4.1或以上编译
接1根线,单脉冲--IRQ,输入一个脉冲中断一次,输入10次结束.
*********************;
*中断*;
datasegment
int_vectEQU0bH;
中断0-7的向量为:
08h-0fh,中断8-15的向量为:
70h-77h.中断类型号:
73是在本微机设备管理器中查出的.
irq_mask_2_7equ011110111b;
中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零
irq_mask_9_15equ011111111b;
中断0-7时全一,中断8-15时从低至高相应位为零
ioport_centequ0c000H;
tpc卡中9054芯片的io地址,地址0c000H是在本微机设备管理器中查出的.
csregdw?
ipregdw?
;
旧中断向量保存空间
irq_timesdw00h;
中断计数
msg1db0dh,0ah,'
TPCpcicardInterrupt'
0dh,0ah,'
$'
msg2db0dh,0ah,'
Pressanykeytoexit!
'
msg3db0dh,0ah,'
PressDMCtointerrupt10timesandexit!
dataends
stackssegmentstack
db100dup(?
)
stacksends
codesegment
assumecs:
code,ds:
data,ss:
stacks,es:
data
start:
EnableLocalInterruptInput
.386
cli
movax,data
movds,ax
moves,ax
movax,stacks
movss,ax
movdx,ioport_cent+68h;
设置tpc卡中9054芯片io口,使能中断
inax,dx
orax,0900h
outdx,ax
moval,int_vect;
保存原中断向量
movah,35h
int21h
movax,es
movcsreg,ax
movipreg,bx
movax,cs;
设置新中断向量
movdx,offsetint_proc
moval,int_vect
movah,25h
inal,21h;
设置中断掩码
andal,irq_mask_2_7
out21h,al
inal,0a1h
andal,irq_mask_9_15
out0a1h,al
movdx,offsetmsg2
movah,09h
movdx,offsetmsg3
movirq_times,0ah
sti
loop1:
cmpirq_times,0;
等待中断并判断中断10次后退出
jzexit
hlt
jzloop1;
按任意键退出
jmploop1
exit:
movbl,irq_mask_2_7;
恢复中断掩码
notbl
inal,21h
oral,bl
movbl,irq_mask_9_15
movdx,ipreg;
恢复原中断向量
movax,csreg
设置tpc卡中9054芯片io口,关闭中断
andax,0f7ffh
movah,4ch
int_procprocfar
pushax
pushdx
pushds
decirq_times
movax,data;
Interrupttodo
movdx,offsetmsg1
moval,20h;
SendEOI
out0a0h,al
out20h,al
popds
popdx
popax
iret
int_procendp
codeends
endstart
六实验说明
1、本实验需要在纯DOS环境中才能正常进行。
2、由于每台微机分配的中断号可能都不同,所以编程时需要了解当前的微机使用哪个中断号并进行设置。
获取方法是在纯DOS环境中,运行一个读PCI配置空间的程序“PORTR.EXE”,该程序能够获得本机TPC板卡或所有PCI板卡的硬件资源。
本实验中需要获得的数据如下:
(1)TPCpcicard9054chipI/OBaseAddress(9054I/O起始地址)通过查找可知为C000H
(2)TPCpcicardInterruptLine.通过查找可知0003H。
然后根据获得的中断请求号码来修改程序中的中断类型号、中断掩码的参数,并重新编译链接后即可。
注:
中断掩码即中断屏蔽字OCW1。
InterruptLine寄存器用于识别PCI中断请求引脚连接到中断控制器的哪个输入端。
3、中断时能代码:
设置tpc卡中9054芯片io口,使能中断
movdx,ioport_cent+68h
outdx,ax
ioport_cent是9054芯片寄存器组的I/O起始地址。
中断使能寄存器(INTCSR)的偏移地址是+68H。
4、程序退出前还要关闭9054的中断,代码如下:
设置tpc卡中9054芯片io口,关闭中断
movdx,ioport_cent+68h
5、PC机中断控制器8259主片的地址为20H、21H,从片地址为A0H、A1H,编程时要根据中断类型号设置中断向量,8259中断屏蔽寄存器IMR对应位要清零(允许中断,OCW1),每一次中断服务结束返回前要使用中断结束命令(OCW2):
MOVAL,20H
OUT20H,AL
OUTA0H,AL
七.实验总结
此次实验时第一次使用dos环境运行程序,因此在此环境中处理数据就占用了很长时间,因为不知道应该如何使用,所以只能按照老师讲的方法一步一步抄写下来,所以很费劲,以后还是应该多了解一下dos环境的应用。
实验四AD转换
1了解模/数转换的基本原理。
2掌握ADC0809的使用方法。
通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)
三、实验原理图
四、流程图
五、程序
*******************************;
*接收A/D转换器数据在屏幕上显示*;
ioportequ0c400h-0280h
io0809aequioport+298h
code
movdx,io0809a;
启动A/D转换器
outdx,al
movcx,0ffh;
延时(等待转换结束)
delay:
loopdelay
inal,dx;
从A/D转换器输入数据
movbl,al;
将AL保存到BL
movcl,4
shral,cl;
将AL右移四位
calldisp;
调显示子程序显示其高四位
moval,bl
andal,0fh
调显示子程序显示其低四位
movah,02
movdl,20h;
加空格
movdl,20h
movah,06h;
判断是否有键按下
movdl,0ffh
jestart;
若没有转START
movah,4ch;
退出
dispprocnear;
显示子程序
movdl,al
cmpdl,9;
比较DL是否>
9
jleddd;
若不大于则为'
0'
-'
9'
加30h为其ASCII码
adddl,7;
否则为'
A'
F'
再加7
ddd:
adddl,30h;
显示
ret
dispendp
endstart
实验五8250串行通信实验
1、掌握串行接口芯片8250的基本原理和编程方法
2、熟悉PC机串行的基本连接方法
3、进一步了解串行通信的基本原理
二、实验内容
1、PC机RS-232串口自发自收
2、自发自收实验:
将RS232C的DB9的电缆插头第2脚和第3脚短接,然后编程实现。
3、2台PC的串行通信:
用RS232C的DB9的电缆(交叉线)将两台机器连接,然后编程实现收发数据。
三、硬件连接
程序1-自发自收
CODESEGMENT
8250初始化,设DLAB=1
MOVDX,3FBH
MOVAX,30H;
写入除数低字节
MOVDX,3F8H
MOVAL,AH;
写入除数高字节
MOVDX,3F9H
MOVAL,00001010B;
7位数据,1位停止,奇校验
MOVDX,3FBH
OUTDX,AL;
写入线路控制寄存器
MOVAL,00010000B;
自检控制
MOVDX,3FCH
写入Modem控制寄存器
MOVAL,0
写中断允许寄存器,屏蔽中断
WAIT_FOR:
MOVDX,3FDH;
读线路状态寄存器
INAL,DX
TESTAL,00011110B;
出错否
JNZERROR;
出错,转ERROR
TESTAL,00000001B;
接收数据就绪否
JNZRECEIVE;
就绪,转接受
TESTAL,00100000B;
发送寄存器空否,不空,返回等待
JZWAIT_FOR
MOVAH,1
INT21H;
读键盘
MOVDX,3F8H;
发送
JMPWAIT_FOR;
返回等待
RECEIVE:
PUSHCX
MOVCX,02000H
T1:
MOVAX,0FFFFH
T2:
DECAX
JNZT2
LOOPT1;
读接收数据
ANDAL,01111111B;
保留7位数据
CMPAL,03H;
是Ctrl+C?
JNZCHAR
MOVAH,4CH;
返回DOS
CHAR:
MOVDL,AL
MOVAH,2H;
显示接收字符
ERROR:
出错则清除线路状态寄存器
MOVDL,'
?
;
显示'
JMPWAIT_FOR
ENDSTART
程序2-双机通信
发送部分:
MOVAL,80H;
8250初始化,设DLAB=1
MOVAX,0030H
MOVAL,0AH;
7位数据,1位停止,奇校验
MOVAL,03H;
数据终端就绪,请求发送数据
发送寄存器空否,不空,返回等待
SEND:
INT21H
CMPAL,21H
JZEXIT
读键盘,若是'
!
返回DOS,若不是,则发送
EXIT:
MOVAX,4C00H
接收部分:
CODE
M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验 报告