微机原理可能的四次实验讲义Word格式文档下载.docx
- 文档编号:17289113
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:21
- 大小:540.67KB
微机原理可能的四次实验讲义Word格式文档下载.docx
《微机原理可能的四次实验讲义Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理可能的四次实验讲义Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
io8253bequioport+280h
codesegment
assumecs:
code
start:
moval,14h;
设置8253通道0为工作方式2,二进制计数
movdx,io8253a
outdx,al
movdx,io8253b;
送计数初值为0FH
moval,0fh
lll:
inal,dx;
读计数初值
calldisp;
调显示子程序
pushdx
movah,06h
movdl,0ffh
int21h
popdx
jzlll
movah,4ch;
退出
int21h
dispprocnear;
显示子程序
pushdx
andal,0fh;
首先取低四位
movdl,al
cmpdl,9;
判断是否<
=9
jlenum;
若是则为'
0'
-'
9'
ASCII码加30H
adddl,7;
否则为'
A'
F'
ASCII码加37H
num:
adddl,30h
movah,02h;
显示
movdl,0dh;
加回车符
movdl,0ah;
加换行符
ret;
子程序返回
dispendp
codeends
endstart
4、参考程序2:
E8253_2.ASM)
Ioportequ0d400h-0280h
io8253aequioport+280h
io8253bequioport+281h
io8253cequioport+283h
code
start:
movdx,io8253c;
向8253写控制字
moval,36h;
使0通道为工作方式3
outdx,almovax,1000;
写入循环计数初值1000
movdx,io8253aoutdx,al;
先写入低字节
moval,ahoutdx,al;
后写入高字节
movdx,io8253c
moval,76h;
设8253通道1工作方式2
outdx,al
movax,1000;
movdx,io8253b
outdx,al;
先写低字节
后写高字节
程序退出
endstart
实验四可编程并行接口
(一)(8255方式0)
掌握8255方式0的工作原理及使用方法。
2、实验内容
1.实验电路如图5,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2.编程从8255C口输入数据,再从A口输出
图5图6
3、编程提示
1、8255控制寄存器端口地址28BH
A口的地址288H
C口的地址28AH
2、参考流程图(见图6):
3、参考程序:
E8255.ASM
ioportequ0d400h-0280h
io8255aequioport+288h
io8255bequioport+28bh
io8255cequioport+28ah
codesegment
assumecs:
movdx,io8255b;
设8255为C口输入,A口输出
moval,8bh
inout:
movdx,io8255c;
从C口输入一数据
inal,dx
movdx,io8255a;
从A口输出刚才自C口
所输入的数据
movdl,0ffh;
判断是否有按键
int21h
jzinout;
若无,则继续自C口输入,A口输出
否则返回DOS
实验九中断
1、掌握PC机中断处理系统的基本原理。
2、学会编写中断服务程序。
二、实验原理与内容
1、实验原理
PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。
中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。
IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源:
中断源中断类型号中断功能
IRQ008H时钟
IRQ109H键盘
IRQ20AH保留
IRQ30BH串行口2
IRQ40CH串行口1
IRQ50DH硬盘
IRQ60EH软盘
IRQ70FH并行打印机
8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。
对于PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供16个中断源:
IRQ8070H实时时钟
IRQ9071H用户中断
IRQ10072H保留
IRQ11073H保留
IRQ12074H保留
IRQ13075H协处理器
IRQ14076H硬盘
IRQ15077H保留
PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&
P的设置来和某一根中断相连接才能进行中断申请。
图7中断电路
实验电路如图7,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)。
要求每按一次开关产生一次中断,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。
1.由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯DOS的环境中才能正常运行。
这里指的纯DOS环境是指微机启动时按F8键进入的DOS环境。
WINDOWS重启进入MSDOS方式由于系统资源被重新规划过,所以也不能正常实验。
2.由于TPC卡使用PCI总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法请参看汇编程序使用方法的介绍。
(也可使用自动获取资源分配的程序取得中断号)
3.在纯DOS环境下,有些微机的BIOS设置中有将资源保留给ISA总线使用的选项,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为使用即插即用。
4.在纯DOS环境下,有些微机的BIOS设置中有使用即插即用操作系统的选项,如果在使用即插即用操作系统状态下,BIOS将不会给TPC卡分配系统资源,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为不使用即插即用操作系统。
5.由于TPC卡使用9054芯片连接微机,所以在编程使用微机中断前需要使能9054的中断功能,代码如下:
movdx,ioport_cent+68h;
设置tpc卡中9054芯片io口,使能中断
inax,dx
orax,0900h
outdx,ax
其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看本书结尾部分的介绍。
(也可使用自动获取资源分配的程序取得),+68H的偏移是关于中断使能的寄存器地址,设置含义如下:
设置INTCSR(68H)寄存器,中断模式设置
程序退出前还要关闭9054的中断,代码如下:
movdx,ioport_cent+68h;
设置tpc卡中9054芯片io口,关闭中断
inax,dx
andax,0f7ffh
outdx,ax
6.PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令:
MOVAL,20H
OUT20H,AL
中断结束返回DOS时应将IMR对应位置1,以关闭中断。
四、参考流程图
图8中断
五、参考程序
程序名:
INT.AS
;
386以上微机适用
纯dos下才能使用
tasm4.1或以上编译
datasegment
int_vectEQU071H;
中断0-7的向量为:
08h-0fh,中断8-15的向量为:
70h-77h
irq_mask_2_7equ011111011b;
中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零
irq_mask_9_15equ011111101b;
中断0-7时全一,中断8-15时从低至高相应位为零
ioport_centequ0d800h;
tpc卡中9054芯片的io地址
Csregdw?
ipregdw?
;
旧中断向量保存空间
irq_timesdw00h;
中断计数
msg1db0dh,0ah,'
TPCpcicardInterrupt'
0dh,0ah,'
$'
msg2db0dh,0ah,'
Pressanykeytoexit!
'
msg3db0dh,0ah,'
PressDMCtointerrupt10timesandexit!
dataends
stackssegment
db100dup(?
)
stacksends
code,ds:
data,ss:
stacks,es:
data
EnableLocalInterruptInput
.386
cli
movax,data
movds,ax
moves,ax
movax,stacks
movss,ax
orax,0900h
outdx,ax
moval,int_vect;
保存原中断向量
movah,35h
movax,es
movcsreg,ax
movipreg,bx
movax,cs;
设置新中断向量
movds,ax
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
movds,ax
movdx,offsetmsg2
movah,09h
movdx,offsetmsg3
movirq_times,0ah
Sti
loop1:
cmpirq_times,0;
等待中断并判断中断10次后退出
jzexit
movah,1
int16h
jnzexit;
按任意键退出
jmploop1
exit:
movbl,irq_mask_2_7;
恢复中断掩码
notbl
inal,21h
oral,bl
movbl,irq_mask_9_15
inal,0a1h
movdx,ipreg;
恢复原中断向量
movax,csreg
movah,25h
moval,int_vect
inax,dx
andax,0f7ffh
outdx,ax
movax,4c00h
int_procprocfar;
中断处理程序
cli
pushax
pushds
decirq_times
movax,data;
Interrupttodo
movdx,offsetmsg1
moval,20h;
SendEOI
out0a0h,al
out20h,al
popds
popdx
popax
sti
iret
int_procendp
codeends
endstar
实验十四串行通讯
1、了解串行通讯的基本原理。
2、掌握串行接口芯片8251的工作原理和编程方法。
二、实验内容
1、按图9连接好电路,(8251插通用插座)其中8253计数器用于产生8251的发送和接收时钟.TXD和RXD连在一起。
2、编程:
从键盘输入一个字符,将其ASCII码加1后发送出去,再接收回来在屏幕上显示。
实现自发自收。
图9串行通讯电路
3、实验提示
1、图示电路8251的控制口地址为2B9H,数据口地址为2B8H。
2、8253计数器的计数初值=时钟频率/(波特率×
波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
3、收发采用查询方式。
四、参考流程图(见图10)
图10
5、参考程序:
E8251.ASM
ioportequ0d400h-0280h
io8253aequioport+280h
io8253bequioport+283h
io8251aequioport+2b8h
io8251bequioport+2b9h
mes1db'
youcanplayakeyonthekeybord!
0dh,0ah,24h
mes2ddmes1
dataends
data
movax,data
设置8253计数器0工作方式
moval,16h
outdx,al
moval,52;
给8253计数器0送初值
movdx,io8251b;
初始化8251
xoral,al
movcx,03;
向8251控制端口送3个0
delay:
callout1
loopdelay
moval,40h;
向8251控制端口送40H,使其复位
moval,4eh;
设置为1个停止位,8个数据位,波特率因子为16
moval,27h;
向8251送控制字允许其发送和接收
ldsdx,mes2;
显示提示信息
movah,09
waiti:
movdx,io8251b
inal,dx
testal,01;
发送是否准备好
jzwaiti
movah,01;
是,从键盘上读一字符
cmpal,27;
若为ESC,结束
jzexit
movdx,io8251a
incal
outdx,al;
发送
movcx,0F00h
s51:
loops51;
延时
next:
testal,02;
检查接收是否准备好
jznext;
没有,等待
准备好,接收
movah,02;
将接收到的字符显示在屏幕上
jmpwaiti
movah,4ch;
int21h
out1procnear;
向外发送一字节的子程序
pushcx
gg:
loopgg;
popcx
ret
out1endp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 可能 四次 实验 讲义