汇编语言定时器.docx
- 文档编号:24784450
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:14
- 大小:15.64KB
汇编语言定时器.docx
《汇编语言定时器.docx》由会员分享,可在线阅读,更多相关《汇编语言定时器.docx(14页珍藏版)》请在冰豆网上搜索。
汇编语言定时器
DATASSEGMENT
COUNTDB0
HHDW3DUP(0)
DSTDW3DUP(0),'$'
YYDW0,':
',0,':
',0,'$'
INT_SEGDW?
INT_OFFDW?
GGDB'00:
00:
00$'
TISH1DB'Pressnotspacetostack!
$'
TISH2DB'Ifyouwanttoexit,pressspace!
$'
TISH3DB'Pleasesettime:
$'
TISH4DB'|Functiontable$'
TISH5DB'|Function1:
Pause(P)$'
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
CALLSET_POINT;移动光标到指定位置
MOVDX,OFFSETTISH1
CALLSHOW
MOVDX,0C20H
CALLSET_POINT
MOVDX,OFFSETGG
CALLSHOW;显示开始计时提示语
MOVAH,01H
INT21H
CMPAL,20H
JZTT
CALLSET_INT
CALLMAIN;进入主程序
MOVAH,4CH
INT21H
TT:
LOOPWA
;----------------------------------------------------------------------
MAINPROC
PUSHAX
PUSHSI
PUSHDX
PUSHBX
PUSHDS
FF:
MOVAX,DATAS
MOVDS,AX
MOVDX,0A18H
CALLSET_POINT
MOVDX,OFFSETTISH2
CALLSHOW;显示退出提示语
MOVDX,0C20H
CALLSET_POINT;移动光标到屏幕中间
CALLSET_SZSZ;根据小端法则将数据交叉放在指定空间
CALLPDDS;判断是否到定时时间
MOVDX,OFFSETYY
CALLSHOW
MOVAH,01H
INT16H
JZFF
MOVAH,00H
INT16H
CMPAL,20H
JZQUIT
CMPAL,70H;P
JZPAUSE
CMPAL,63H;C
JZFF
CMPAL,7AH;Z
JZZERO
LOOPFF
PAUSE:
CLI
MOVAH,01H
INT21H
CMPAL,63H
JNZPAUSE
STI
LOOPFF
ZERO:
MOVAX,0
MOVSI,OFFSETHH
MOV[SI],AX
MOV[SI+2],AX
MOV[SI+4],AX
LOOPFF
QUIT:
CLI
MOVAX,251CH;回复原中断向量
MOVDX,INT_SEG
MOVDS,DX
MOVDX,INT_OFF
INT21H
STI
POPDS
POPBX
POPDX
POPSI
POPAX
RET
MAINENDP
;-----------------------------------------------------------------------
CLEARPROC;刷新屏幕
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAX,0600H
MOVBH,01010001B
MOVCX,0000H
MOVDX,084FFH
INT10H
MOVBH,00110000B
MOVCX,0900H
MOVDX,0A4FH
INT10H
MOVBH,01110000B
MOVCX,0B00H
MOVDX,184FH
INT10H
POPDX
POPCX
POPBX
POPAX
RET
CLEARENDP
;------------------------------------------------------------------------
SET_POINTPROC;设置光标
MOVAH,02H
MOVBH,00H
INT10H
RET
SET_POINTENDP
;-----------------------------------------------------------------------
MENUPROC;功能栏显示
PUSHDX
MOVDX,0100H
CALLSET_POINT
MOVDX,OFFSETTISH9
CALLSHOW
MOVDX,0300H
CALLSET_POINT
MOVDX,OFFSETTISH4
CALLSHOW
MOVDX,0400H
CALLSET_POINT
MOVDX,OFFSETTISH5
CALLSHOW
MOVDX,0500H
CALLSET_POINT
MOVDX,OFFSETTISH6
CALLSHOW
MOVDX,0600H
CALLSET_POINT
MOVDX,OFFSETTISH7
CALLSHOW
MOVDX,0800H
CALLSET_POINT
MOVDX,OFFSETTISH9
CALLSHOW
POPDX
RET
MENUENDP
;------------------------------------------------------------------------
SHOWPROC;显示语句
MOVAH,09H
INT21H
RET
SHOWENDP
;------------------------------------------------------------------------
SET_TIMEPROC;设置定时时间
MOVSI,OFFSETDST
MOVDX,0
MOVAH,01H
INT21H
SUBAL,30H
MOV[SI+1],AL
MOVAH,01H
INT21H
SUBAL,30H
MOV[SI],AL
MOVAH,01H
INT21H
SUBAL,30H
MOV[SI+3],AL
MOVAH,01H
INT21H
SUBAL,30H
MOV[SI+2],AL
MOVAH,01H
INT21H
SUBAL,30H
MOV[SI+5],AL
MOVAH,01H
INT21H
SUBAL,30H
MOV[SI+4],AL
RET
SET_TIMEENDP
;-------------------------------------------------------------------------
SET_INTPROC
MOVAX,351CH
INT21H
MOVAX,ES
MOVINT_SEG,AX
MOVINT_OFF,BX;保存原中断向量
CLI
MOVAX,251CH
MOVDX,SEGINT_PRO
MOVDS,DX
MOVDX,OFFSETINT_PRO
INT21H;设置新中断向量
STI
RET
SET_INTENDP
;------------------------------------------------------------------------
SET_SZSZPROC
MOVSI,OFFSETHH
MOVDI,OFFSETYY
MOVAL,[SI+4]
ORAL,30H
MOV[DI+9],AL
MOVAL,[SI+5]
ORAL,30H
MOV[DI+8],AL
MOVAL,[SI+3]
ORAL,30H
MOV[DI+4],AL
MOVAL,[SI+2]
ORAL,30H
MOV[DI+5],AL
MOVAL,[SI+1]
ORAL,30H
MOV[DI],AL
MOVAL,[SI]
ORAL,30H
MOV[DI+1],AL
RET
SET_SZSZENDP
;------------------------------------------------------------------------
PDDSPROC;判断是否到定时时间
PUSHAX
PUSHBX
PUSHSI
PUSHDI
MOVSI,OFFSETHH
MOVDI,OFFSETDST
MOVBX,[SI]
MOVAX,[DI]
CMPAX,BX
JNZEXIT
MOVBX,[SI+2]
MOVAX,[DI+2]
CMPAX,BX
JNZEXIT
MOVBX,[SI+4]
MOVAX,[DI+4]
CMPAX,BX
JNZEXIT
CALLSOUND
EXIT:
POPDI
POPSI
POPBX
POPAX
RET
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
PUSHAX
PUSHSI
CLI
MOVAX,DATAS
MOVDS,AX
MOVSI,OFFSETHH
INCCOUNT
CMPCOUNT,12H
JNZKK
MOVAL,0
MOVCOUNT,AL
MOVAX,[SI+4]
ADDAX,1
AAA
MOV[SI+4],AX;修改秒
CMPAX,600H
JNZKK
MOVAX,0
MOV[SI+4],AX
MOVAX,[SI+2]
ADDAX,1
AAA
MOV[SI+2],AX;修改分
CMPAX,600H
JNZKK
MOVAX,0
MOV[SI+2],AX
MOVAX,[SI]
ADDAX,1
AAA
MOV[SI],AX
CMPAX,0204H
JNZKK
MOVAX,0
MOV[SI],AX
KK:
POPSI
POPAX
STI
IRET
INT_PROENDP
CODESENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 定时器