📄 clock!.asm
字号:
code segment
org 100h
assume cs:code , ds:code
main:
jmp start;要跳开数据部分,不能执行
welcome db '+---------------------------------------------------+' ,0ah ,0dh
db '+ This is a clock +' ,0ah ,0dh
db '+ ---write by Future Yao+' ,0ah ,0dh
db '+---------------------------------------------------+' ,0ah ,0dh ,'$'
old_int dd ?
start:
mov dx,seg welcome
mov ds,dx
mov dx ,offset welcome
mov ah ,09h
int 21h
mov ax ,351Ch
int 21h;读取中断向量
mov word ptr old_int , bx
mov word ptr old_int[2] , es
mov dx , offset TSR
push cs
pop ds
mov ax , 251Ch
int 21h
mov dx , offset main
int 27h
TSR proc far
;保护现场
push ax
push bx
push cx
push dx
push si
push di
push bp
push sp
push es
push ds
sti
call disp
cli
;返回现场
pop ds
pop es
pop sp
pop bp
pop di
pop si
pop dx
pop cx
pop bx
pop ax
jmp cs:old_int
TSR endp
disp proc near
push ax
push cx
push dx
push es
push bx
;进行初始化
mov ax,0b800h
mov es,ax
;获得时间
mov ah, 02h
int 1ah
mov ax, 0eh
;显示小时的高位
mov bh,ch
shr bh,1
shr bh,1
shr bh,1
shr bh,1
add bh,30h
mov es:0090h,bh
mov es:0091h,ax
;显示小时的低位
and ch,0fh
add ch,30h
mov es:0092h,ch
mov es:0093h,ax
;显示分隔符号:
mov byte ptr es:0094h,':'
mov es:0095h,ax
;显示分钟的高位
mov bh,cl
shr bh,1
shr bh,1
shr bh,1
shr bh,1
add bh,30h
mov es:0096h,bh
mov es:0097h,ax
;显示分钟的低位
and cl,0fh
add cl,30h
mov es:0098h,cl
mov es:0099h,ax
;显示分隔符号:
mov byte ptr es:009ah,':'
mov es:009bh,ax
;显示秒的高位
mov bh,dh
shr bh,1
shr bh,1
shr bh,1
shr bh,1
add bh,30h
mov es:009ch,bh
mov es:009dh,ax
;显示秒的低位
and dh,0fh
add dh,30h
mov es:009eh,dh
mov es:009fh,al
pop bx
pop es
pop dx
pop cx
pop ax
ret
disp endp
code ends
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -