📄 t3.asm
字号:
;***********时钟延时##:$$:&&*********************************
data segment
buffer db 10
db ?
db 10 dup(?)
data ends
stack segment stack
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,es:data,ss:stack
begin:
mov ax,data
mov ds,ax
mov ch,0 ;时
mov dh,0 ;分
mov dl,0 ;秒
again: call delay ;调用延时子程序
;call clear ;调用清屏子程序
mov al,dl
add al,01h
daa
mov dl,al
cmp al,60h
jne dispy
mov dl,0
mov al,dh
add al,1
daa
mov dh,al
cmp al,60h
jne dispy
mov dh,0
mov al,ch
add al,1
daa
mov ch,al
cmp al,24h
jne dispy
mov ch,0
dispy: lea bx,buffer ;放入缓冲区显示
mov al,0dh ;回车放入缓冲区
mov [bx],al
inc bx
;mov al,0ah ;换行放入缓冲区
;mov [bx],al
;inc bx
mov al,ch
call tran
inc bx
mov al,':'
mov [bx],al
inc bx
mov al,dh
call tran
inc bx
mov al,':'
mov [bx],al
inc bx
mov al,dl
call tran
inc bx
mov al,'$'
mov [bx],al
push bx
push cx
push dx
lea dx,buffer
mov ah,9
int 21h
pop dx
pop cx
pop bx
jmp again
;*****************转成ASCII码*******************************
tran proc
mov cl,al
shr al,1
shr al,1
shr al,1
shr al,1
or al,30h
mov [bx],al
inc bx
mov al,cl
and al,0fh
or al,30h
mov [bx],al
ret
tran endp
;***********************************************************
;******延时子程序*************************
delay proc
push cx
push dx
mov dx,04ffh
up: xor cx,cx
a: nop
loop a
dec dx
jnz up
pop dx
pop cx
ret
delay endp
;*****************************************
;**************清屏子程序******************
clear proc near
push ax
push bx
push cx
push dx
mov ax,0600h ;ah=06(滚动) al=00(全屏空白)
mov bh,0fh ;黑色背景(0) 白色前景(f)
sub cx,cx ;左上角行:列
mov dx,184fh ;右下角行:列
int 10h
pop dx
pop cx
pop bx
pop ax
ret
clear endp
;*******************************************
code ends
end begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -