汇编语言定时器.docx

上传人:b****3 文档编号:24784450 上传时间:2023-06-01 格式:DOCX 页数:14 大小:15.64KB
下载 相关 举报
汇编语言定时器.docx_第1页
第1页 / 共14页
汇编语言定时器.docx_第2页
第2页 / 共14页
汇编语言定时器.docx_第3页
第3页 / 共14页
汇编语言定时器.docx_第4页
第4页 / 共14页
汇编语言定时器.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编语言定时器.docx

《汇编语言定时器.docx》由会员分享,可在线阅读,更多相关《汇编语言定时器.docx(14页珍藏版)》请在冰豆网上搜索。

汇编语言定时器.docx

汇编语言定时器

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模板 > 中国风

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

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