- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字式秒表汇编程序
inttype equ 08h;设置中断类型码
p8253ctrl equ 43h;8253的控制口
p8253cto equ 40h;8253的数据口
p8255ctl equ 0e803h;8255的控制口
rowport equ 0e801h
colport equ 0e802h
segport equ 0e800h ;段选
bitport equ 0e801h ;位选
cnto equ 11930 ;用来计算频率
.model small
.data ;数据段
str db 36 dup (?) ;定义一个数组用来存放前八个成绩
flag db 0 ;定义标志位
mc db 1 ;定义名次
num db 1
point dw str ;定义指针
point2 dw str ;定义指针
count db 0 ;用来计时,初始化为0
buff db 0,0,0,0 ;初始化数据缓冲区
buff2 db 0,0,0,0 ;初始化数据缓冲区
bit db 1 ;位码置1
mess db 0-开始比赛 1-记录成绩 2-显示成绩 3-退出返回DOS 4-比赛结束 5-暂停计时:,0dh,0ah,$
dseg db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;数据‘0’~‘9’
asctab db 0123456789ABCDEF
.code ;代码段
.startup ;开始
mov ah,9
lea dx,mess
int 21h
mov al,36h;写8253的方式字
mov dx,p8253ctrl
out dx,al
mov ax,cnto ;
mov dx,p8253cto;写初值
out dx,al
mov al,ah
out dx,al
mov al,81h ;8255初始化
mov dx,p8255ctl
out dx,al
mov al,inttype ;DOS调用,读取中断向量
mov ah,35h
int 21h
push es ;将es,bx,ds入栈保护
push bx
push ds
mov ax,@data
mov es,ax
mov dx,offset intp ;取intp的偏移量
mov ax,seg intp ;取intp的段地址
mov ds,ax
mov al,inttype ;设置inttpye的新中断向量
mov ah,25h
int 21h
pop ds ;将ds出栈
in al,21h ;CPU开中断(开IR0)
and al,0feh
out 21h,al
sti
ab:
call button
cmp al,3 ;如果为F,则退出
jz fp
cmp al,1 ;如果为1,且标志位D0位为1,D2为1,则可保存成绩
jz mp
cmp al,2
jz pp
cmp al,4 ;比赛结束,即可以重新开始比赛
jz ap
cmp al,5 ;暂停计时
jz pap
cmp al,0
jnz ab
OR flag,05h ;如果按键为B,则置标志位最后一位为1
jmp ab
mp: ;存储的代码
test flag,04h ;先判断是否还能存储,不能则跳到ab,否则继续
jz ab
mov al,mc ;将第一位的名次先放到buff,然后一起放入数组
mov buff,al
lea si,buff
mov di,point
mov cx,4
cld
rep movsw
cmp mc,8 ;如果名次到了8个,则将标志位置零,然后就不能存储了。
jz go3
inc mc
add point,4
jmp ab
go3:and flag,0fah
lea bx,str
mov point,bx
jmp ab
pp:
and flag,0feh
cmp num,9 ;判断是否按过8次,是退出,否则继续
jz ab
inc num
lea di,buff
mov si,point2
mov cx,4
cld
rep movsw
add point2,4
jmp ab
ap:
push bx
and flag,0 ;对标志和名次及num都进行初始化,以便比赛重新开始
mov mc,1
mov num,1
lea bx,str
mov point,bx
mov point2,bx
mov buff,0
mov buff+1,0
mov buff+2,0
mov buff+3,0
pop bx
jmp ab
pap:
and flag,0feh
jmp ab
文档评论(0)