汇编语言定时器Word文档下载推荐.docx
《汇编语言定时器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编语言定时器Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。
TISH6DB'
|Function2:
Continue(C)$'
TISH7DB'
|Function3:
Zero(Z)$'
TISH9DB'
+-----------------------------------------------------------------------------+$'
DATASENDS
STACKSSEGMENT
FDDB50DUP(0)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,SS:
STACKS,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
CALLCLEAR
MOVDX,0100H
CALLSET_POINT
CALLMENU
MOVDX,0903H
CALLSET_POINT;
移动光标到指定位置
MOVDX,OFFSETTISH3
CALLSHOW
CALLSET_TIME
WA:
MOVDX,0A18H
MOVDX,OFFSETTISH1
MOVDX,0C20H
MOVDX,OFFSETGG
CALLSHOW;
显示开始计时提示语
MOVAH,01H
INT21H
CMPAL,20H
JZTT
CALLSET_INT
CALLMAIN;
进入主程序
MOVAH,4CH
TT:
LOOPWA
;
----------------------------------------------------------------------
MAINPROC
PUSHAX
PUSHSI
PUSHDX
PUSHBX
PUSHDS
FF:
MOVDX,OFFSETTISH2
显示退出提示语
移动光标到屏幕中间
CALLSET_SZSZ;
根据小端法则将数据交叉放在指定空间
CALLPDDS;
判断是否到定时时间
MOVDX,OFFSETYY
INT16H
JZFF
MOVAH,00H
JZQUIT
CMPAL,70H;
P
JZPAUSE
CMPAL,63H;
C
CMPAL,7AH;
Z
JZZERO
LOOPFF
PAUSE:
CLI
CMPAL,63H
JNZPAUSE
STI
ZERO:
MOVAX,0
MOVSI,OFFSETHH
MOV[SI],AX
MOV[SI+2],AX
MOV[SI+4],AX
QUIT:
MOVAX,251CH;
回复原中断向量
MOVDX,INT_SEG
MOVDS,DX
MOVDX,INT_OFF
POPDS
POPBX
POPDX
POPSI
POPAX
RET
MAINENDP
-----------------------------------------------------------------------
CLEARPROC;
刷新屏幕
PUSHCX
MOVAX,0600H
MOVBH,01010001B
MOVCX,0000H
MOVDX,084FFH
INT10H
MOVBH,00110000B
MOVCX,0900H
MOVDX,0A4FH
MOVBH,01110000B
MOVCX,0B00H
MOVDX,184FH
POPCX
CLEARENDP
------------------------------------------------------------------------
SET_POINTPROC;
设置光标
MOVAH,02H
MOVBH,00H
SET_POINTENDP
MENUPROC;
功能栏显示
MOVDX,OFFSETTISH9
MOVDX,0300H
MOVDX,OFFSETTISH4
MOVDX,0400H
MOVDX,OFFSETTISH5
MOVDX,0500H
MOVDX,OFFSETTISH6
MOVDX,0600H
MOVDX,OFFSETTISH7
MOVDX,0800H
MENUENDP
SHOWPROC;
显示语句
MOVAH,09H
SHOWENDP
SET_TIMEPROC;
设置定时时间
MOVSI,OFFSETDST
MOVDX,0
SUBAL,30H
MOV[SI+1],AL
MOV[SI],AL
MOV[SI+3],AL
MOV[SI+2],AL
MOV[SI+5],AL
MOV[SI+4],AL
SET_TIMEENDP
-------------------------------------------------------------------------
SET_INTPROC
MOVAX,351CH
MOVAX,ES
MOVINT_SEG,AX
MOVINT_OFF,BX;
保存原中断向量
MOVAX,251CH
MOVDX,SEGINT_PRO
MOVDX,OFFSETINT_PRO
INT21H;
设置新中断向量
SET_INTENDP
SET_SZSZPROC
MOVDI,OFFSETYY
MOVAL,[SI+4]
ORAL,30H
MOV[DI+9],AL
MOVAL,[SI+5]
MOV[DI+8],AL
MOVAL,[SI+3]
MOV[DI+4],AL
MOVAL,[SI+2]
MOV[DI+5],AL
MOVAL,[SI+1]
MOV[DI],AL
MOVAL,[SI]
MOV[DI+1],AL
SET_SZSZENDP
PDDSPROC;
PUSHDI
MOVDI,OFFSETDST
MOVBX,[SI]
MOVAX,[DI]
CMPAX,BX
JNZEXIT
MOVBX,[SI+2]
MOVAX,[DI+2]
MOVBX,[SI+4]
MOVAX,[DI+4]
CALLSOUND
EXIT:
POPDI
PDDSENDP
SOUNDPROC
MOVBX,600
MOVCX,100
MOVDX,CX
INAL,61H
ANDAL,11111100B
TRIG:
XORAL,2
OUT61H,AL
MOVCX,BX
DELAY:
LOOPDELAY
DECDX
JNETRIG
RET
SOUNDENDP
INT_PROPROCFAR
INCCOUNT
CMPCOUNT,12H
JNZKK
MOVAL,0
MOVCOUNT,AL
MOVAX,[SI+4]
ADDAX,1
AAA
MOV[SI+4],AX;
修改秒
CMPAX,600H
MOVAX,[SI+2]
MOV[SI+2],AX;
修改分
MOVAX,[SI]
CMPAX,0204H
KK:
IRET
INT_PROENDP
CODESENDS
ENDSTART