📄 1.asm
字号:
.model small
.386
.stack 100
.code
start:
JMP Initialize
time dw 10 ;set time for waiting
date1 dw ?
DO proc far
push ax
push ds
push dx
push es
push di
mov ax,@code
mov ds,ax
sti ;开中断
dec time
jnz exit
;/////动画////////////////////////////////////////////////////////////
L: mov ax,0013h
int 10h
mov ax,0a000h
mov es,ax
mov di,4800
mov ah,0
L1:
mov cx,50000
delay:
mov al,0
loop delay
inc ah
inc di
mov es:[di],ah
in al,64H
and al,01H
jne T
cmp di,6400
jne L1
mov di,14400
mov ah,0
L2:
mov cx,50000
delay1:
mov al,0
loop delay1
inc ah
inc di
mov es:[di],ah
in al,64H
and al,01H
jne T
cmp di,16000
jne L2
mov di,24000
mov ah,0
L3:
mov cx,50000
delay2:
mov al,0
loop delay2
inc ah
inc di
mov es:[di],ah
in al,64H
and al,01H
jne T
cmp di,25600
jne L3
mov di,33600
mov ah,0
L4:
mov cx,50000
delay3:
mov al,0
loop delay3
inc ah
inc di
mov es:[di],ah
in al,64H
and al,01H
jne T
cmp di,35200
jne L4
mov di,43200
mov ah,0
L6:
mov cx,50000
delay5:
mov al,0
loop delay5
inc ah
inc di
mov es:[di],ah
in al,64H
and al,01H
jne T
cmp di,44800
jne L6
jmp L
;/////////////////////////////////////////////////////////
T: mov ax,date1 ;重置时间
mov time ,ax
mov ax,0003H
int 10H
exit:
in al,64H ;判断是否有键盘输入
and al,01H
je exit1
mov ax,date1 ;重置时间
mov time ,ax
exit1:
cli ;关中断
pop di
pop es
pop dx
pop ds
pop ax
iret
DO endp
Initialize: ;初始化
mov ax,@code
mov ds,ax
lea dx,DO ;重置1c中断
mov ax,seg DO
mov ds,ax
mov al,1cH
mov ah,25H
int 21H
mov ax,@code
mov ds,ax
in al,21H ;允许中断屏蔽
and al,11111110b
out 21H,al
sti
mov ax,time ;时间计算
mov dx,18
mul dx
mov time,ax
mov date1,ax
MOV DX, OFFSET Initialize
INT 27H ;驻留并退出
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -