no imprime nada en pantalla!
.MODEL SMALL
.STACK 100
pantalla equ 0b800h ; segmento de memoria de pantalla
interrs segment at 0h
org 1ch*4
direc label word ; direccion rutina reloj
interrs ends
codigo segment
assume cs:codigo, ds:codigo
org 100h ; origen por ser fichero tipo COM
empezar:
jmp instalar ; bifurca a la rutina de iniciacion
hora db 8 dup ('?')
reloj proc
cli ; inhibir interrupciones
; restaurar registros
push ax
push bx
push cx
push dx
push si
push di
push ds
push es
;
;
; obtener hora de las palabras 40h:6ch (inferior) y 40h:6eh (superior)
mov ax,40h; segmento
mov es,ax
mov si,6ch ; desplazamiento
mov ax,es:[si]; parte inferior contador
mov dx,es:[si+2]; parte superior contador
mov bx,32771
div bx ;dx=resto, ax=horas*2
shr ax,1 ;ax=horas (dividir entre dos)
mov ch,al ; ch=horas
;
mov ax,dx
mov dx,0
mov bx,1092
div bx ;dx=resto, ax=minutos
mov cl,al; cl=minutos¡
;
mov ax,dx
mov dx,0
mov bx,18
div bx;dx=resto, ax=segundos
mov dh,al;dh= segundos
; poner la hora en formato decimal sobre campo hora
;
mov bh,10 ;bh= 10 (constate)
mov ah,0 ; ah=0
mov al,ch ; ax=horas
div bh; ax=horas en decimal
add ax, 3030h
mov word ptr hora,ax; mover
mov hora+2,':'
mov ah,0 ; ah=0
mov al,cl ; ax=minutos
div bh ; ax=minutos en decimal
add ax,3030h
mov word ptr hora+3,ax; mover
mov hora+5,':';
mov ah,0 ;ah=0
mov al,dh ; dh=segundos
div bh
add ax,3030h
mov word ptr hora+6,ax; mover
mov hora+8,':'
mov ah,0 ;ah=0
mov al,dl ; dl=sentesimas
div bh ;ax=segundos en decimal
add ax,3030h
mov word ptr hora+9,ax ; mover
;direccionar zona memoria en pantalla con es:[di]
;
mov ax,pantalla
mov es,ax
mov di,2*(80-length hora)
; mover la hora
mov cx, length hora
mov si,0 ; desplazamiento inicial
mover:
mov al,hora[si] ; caracter campo hora
mov es:[di],al; moverlo a memora de pantalla
inc di
mov byte ptr es:[di], 07h ; mover atributo normal
inc si
inc di
loop mover
;restaurar registros
fin:
pop es
pop ds
pop di
pop si
pop dx
pop cx
pop bx
pop ax
sti ; permitir interrupciones
iret ;una interrupcion debe terminar con iret
reloj endp
;
instalar proc
;direccionar segmento de vectores de enterrupciones con es
assume es:interrs
mov ax,0
mov es,ax
; poner en el vector 1ch=28 la direccion de la rutina del reloj
cli ; inhibir interrupcioones
mov direc,offset reloj ; desplazamiento
mov direc+2,cs ; segmento
;terminar rutina de instalacion, pero dejar residente la rutina
mov dx,offset instalar; dx=ultima direccion +1 respecto al segmento de la rutina de interrupcion
sti ;permitir interrupciones
int 27h ; terminar pero dejar residente
instalar endp
;
codigo ends
end empezar
es el codigo del reloj....... y no imprime nada.... porfa alguien lo puede ver, para que me diga cual podria ser el posible error!!