实验报告Word格式.doc

上传人:b****2 文档编号:14566763 上传时间:2022-10-23 格式:DOC 页数:14 大小:300.50KB
下载 相关 举报
实验报告Word格式.doc_第1页
第1页 / 共14页
实验报告Word格式.doc_第2页
第2页 / 共14页
实验报告Word格式.doc_第3页
第3页 / 共14页
实验报告Word格式.doc_第4页
第4页 / 共14页
实验报告Word格式.doc_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验报告Word格式.doc

《实验报告Word格式.doc》由会员分享,可在线阅读,更多相关《实验报告Word格式.doc(14页珍藏版)》请在冰豆网上搜索。

实验报告Word格式.doc

五.实验流程图

六.原程序代码

;

*************************;

*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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1