实验报告Word格式文档下载.doc
- 文档编号:6974503
- 上传时间:2023-05-07
- 格式:DOC
- 页数:14
- 大小:300.50KB
实验报告Word格式文档下载.doc
《实验报告Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《实验报告Word格式文档下载.doc(14页珍藏版)》请在冰点文库上搜索。
*8253方式0计数器实验*;
io8253a equ283h-0280h
io8253b equ280h-0280h
io_port_addre equ0cf8h ;
32位配置地址端口
io_port_data equ0cfch ;
32位配置数据端口
io_plx_id equ0540610b5h ;
TPC卡设备及厂商ID
datasegment
io_9054base_addressdb4DUP(0) ;
TPC卡9054芯片I/O基地址暂存空间
io_base_addressdb4DUP(0) ;
TPC卡I/O基地址暂存空间
memory_base_addressdb4DUP(0) ;
TPC卡MEMORY基地址暂存空间
interrupt_linedb2DUP(0) ;
TPC卡中断号暂存空间
pcicardnotfind db0dh,0ah,'
TPCpcicardnotfindoraddress/interrupterror!
!
'
0dh,0ah,'
$'
io9054baseaddressdb0dh,0ah,'
TPCpcicard9054ChipI/OBaseAddress:
'
'
iobaseaddress db0dh,0ah,'
TPCpcicardI/OBaseAddress:
memorybaseaddress db0dh,0ah,'
TPCpcicardMemoryBaseAddress:
intnumber db0dh,0ah,'
TPCpcicardInterruptLine:
enter_return db0dh,0ah,'
dataends
stackssegment
db100dup(?
)
stacksends
codesegment
assumecs:
code,ds:
data,SS:
STACKS,es:
data
.386
start:
movax,data
movds,ax
moves,ax
movax,stacks
movss,ax
callfindtpc1 ;
查找TPC卡资源并显示
moval,14h;
设置8253通道0为工作方式2,二进制计数
movdx,wordptrio_base_address
adddx,io8253a
outdx,al
adddx,io8253b;
送计数初值为0FH
moval,0fh
lll:
inal,dx;
读计数初值
calldisp;
调显示子程序
pushdx
movah,06h
movdl,0ffh
int21h
popdx
jzlll
movah,4ch;
退出
dispprocnear;
显示子程序
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
findtpc1procnear ;
pushad
pushfd
movebx,080000000h
findtpc1_next:
addebx,100h
cmpebx,081000000h
jnzfindtpc1_continue
movdx,offsetpcicardnotfind ;
显示未找到tpc卡提示信息
movah,09h
int21h
movah,4ch
int21h ;
findtpc1_continue:
movdx,io_port_addre
moveax,ebx
outdx,eax ;
写地址口
movdx,io_port_data
ineax,dx ;
读数据口
cmpeax,io_plx_id
jnzfindtpc1_next ;
检查是否发现tpc卡
addeax,14h
movdwordptrio_9054base_address,eax
andeax,1
jzfindtpc1_next ;
检查是否为i/o基址信息
moveax,dwordptrio_9054base_address
andeax,0fffffffeh
movdwordptrio_9054base_address,eax;
去除i/o指示位并保存
addeax,18h
movdwordptrio_base_address,eax
moveax,dwordptrio_base_address
movdwordptrio_base_address,eax ;
addeax,1ch
movdwordptrmemory_base_address,eax
andeax,1h
检查是否为memory基址信息
moveax,dwordptrmemory_base_address
andeax,0fffffff0h
movdwordptrmemory_base_address,eax ;
去除memory指示位并保存
addeax,3ch
andeax,0ffh
movwordptrinterrupt_line,ax ;
去除interrupt其它指示位并保存
movdx,offsetio9054baseaddress ;
显示i/o提示信息
movax,wordptrio_9054base_address
callfindtpc1_disp ;
显示i/o基地址
movdx,offsetiobaseaddress ;
movax,wordptrio_base_address
movdx,offsetmemorybaseaddress ;
显示memory提示信息
movax,wordptrmemory_base_address+2
显示memory基地址高16位
movax,wordptrmemory_base_address
shrax,16
显示memory基地址低16位
movdx,offsetintnumber ;
显示interrupt提示信息
movax,wordptrinterrupt_line
显示interrupt号
movdx,offsetenter_return ;
加回车符,换行符
popfd
popad
ret
findtpc1endp
findtpc1_dispprocnear ;
pushdx
pushcx
pushbx
movcx,4
movbx,16
findtpc1_disp_loop1:
pushax
subbx,4
movcx,bx
shrax,cl
andal,0fh ;
movdl,al
cmpdl,9 ;
jlefindtpc1_disp_num ;
adddl,7 ;
findtpc1_disp_num:
adddl,30h
movah,02h ;
popcx
popax
loopfindtpc1_disp_loop1
popbx
popdx
ret ;
findtpc1_dispendp
codeends
endstart
计数器
按图17连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)
1、 8253控制寄存器地址 283H
五,实验流程图
六.实验原代码
*******************
*8253分频*
io8253a equ280h-0280h
io8253b equ281h-0280h
io8253c equ283h-0280h
assumecs:
movdx,wordptrio_base_address
adddx,io8253c;
向8253写控制字
moval,36h;
使0通道为工作方式3
outdx,al
movax,1000;
写入循环计数初值1000
adddx,io8253a
outdx,al;
先写入低字节
moval,ah
后写入高字节
adddx,io8253c
moval,76h;
设8253通道1工作方式2
adddx,io8253b
先写低字节
后写高字节
movah,4ch;
程序退出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告