主题:求教实时时钟的显示程序
教材上有一个关于在屏幕上显示实时时钟的一段程序,但运行后看不到结果,请各位专家赐教:
data segment
count_val equ 18
row=7
column=12
color=07h
old1ch dd 0
hour db 0,0,':'
min db 0,0,':'
sec db 0,0
len equ $-hour
count dw count_val
data ends
code segment
assume cs:code,ds:data,es:data
start: mov ax,data
mov ds,ax
mov es,ax
mov ax,351ch
int 21h
mov word ptr old1ch,bx
mov word ptr old1ch+2,es
mov ax,code
mov ds,ax
mov dx,offset new1ch
mov ax,251ch
int 21h
lp: mov ah,0
int 16h
cmp al,'q'
jnz lp
lds dx,old1ch
mov ax,251ch
int 21h
mov ah,4ch
int 21h
bcdtoasc proc
push cx
mov ah,al
and al,0fh
mov cl,4
shr ah,cl
add ax,3030h
pop cx
ret
bcdtoasc endp
gettime proc
mov ah,2
int 1ah
mov al,ch
call bcdtoasc
xchg ah,al
mov word ptr hour,ax
mov al,cl
call bcdtoasc
xchg ah,al
mov word ptr min,ax
mov al,dh
call bcdtoasc
xchg ah,al
mov word ptr sec,ax
ret
gettime endp
new1ch proc
cmp count,0
jz next
dec count
iret
next: mov count,count_val
sti
push ds
push es
push ax
push bx
push cx
push dx
push si
push bp
call gettime
mov bh,0
mov bl,color
mov dh,row
mov dl,column
mov cx,len
mov bp,offset hour
mov al,0
mov ah,13h
int 10h
pop bp
pop si
pop dx
pop cx
pop bx
pop ax
pop es
pop ds
iret
new1ch endp
code ends
end start
data segment
count_val equ 18
row=7
column=12
color=07h
old1ch dd 0
hour db 0,0,':'
min db 0,0,':'
sec db 0,0
len equ $-hour
count dw count_val
data ends
code segment
assume cs:code,ds:data,es:data
start: mov ax,data
mov ds,ax
mov es,ax
mov ax,351ch
int 21h
mov word ptr old1ch,bx
mov word ptr old1ch+2,es
mov ax,code
mov ds,ax
mov dx,offset new1ch
mov ax,251ch
int 21h
lp: mov ah,0
int 16h
cmp al,'q'
jnz lp
lds dx,old1ch
mov ax,251ch
int 21h
mov ah,4ch
int 21h
bcdtoasc proc
push cx
mov ah,al
and al,0fh
mov cl,4
shr ah,cl
add ax,3030h
pop cx
ret
bcdtoasc endp
gettime proc
mov ah,2
int 1ah
mov al,ch
call bcdtoasc
xchg ah,al
mov word ptr hour,ax
mov al,cl
call bcdtoasc
xchg ah,al
mov word ptr min,ax
mov al,dh
call bcdtoasc
xchg ah,al
mov word ptr sec,ax
ret
gettime endp
new1ch proc
cmp count,0
jz next
dec count
iret
next: mov count,count_val
sti
push ds
push es
push ax
push bx
push cx
push dx
push si
push bp
call gettime
mov bh,0
mov bl,color
mov dh,row
mov dl,column
mov cx,len
mov bp,offset hour
mov al,0
mov ah,13h
int 10h
pop bp
pop si
pop dx
pop cx
pop bx
pop ax
pop es
pop ds
iret
new1ch endp
code ends
end start