1.asm
来自「用win32汇编语言编写的 包括界面设计的 汇编程序编辑和编译运行」· 汇编 代码 · 共 161 行
ASM
161 行
.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 + =
减小字号Ctrl + -
显示快捷键?