• Lunes 18 de Noviembre de 2024, 22:47

Autor Tema:  Que Error Tiene Este Codigo...  (Leído 1965 veces)

Victorn

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Que Error Tiene Este Codigo...
« en: Miércoles 2 de Noviembre de 2005, 00:00 »
0
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!!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Que Error Tiene Este Codigo...
« Respuesta #1 en: Miércoles 2 de Noviembre de 2005, 00:22 »
0
Cita de: "Victorn"
es el codigo del reloj....... y no imprime nada.... porfa alguien lo puede ver, para que me diga cual podria ser el posible error!!

¿Con que ensamblador estas generado el ejecutable?

A mi me funciona perfectamente despues de generar el ejecutable con MASM, imprime la hora y la va actualizando en la esquina superior derecha. ¿Ese era el objetivo, verdad?

A simple vista hay una incongruencia entre el MODEL y el org 100h cuyo comentario dice que es un archivo COM, si queres generar un COM tenes que usar el modelo TINY y no el SMALL.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Victorn

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Que Error Tiene Este Codigo...
« Respuesta #2 en: Miércoles 2 de Noviembre de 2005, 17:36 »
0
Cita de: "Eternal Idol"
Cita de: "Victorn"
es el codigo del reloj....... y no imprime nada.... porfa alguien lo puede ver, para que me diga cual podria ser el posible error!!

¿Con que ensamblador estas generado el ejecutable?

A mi me funciona perfectamente despues de generar el ejecutable con MASM, imprime la hora y la va actualizando en la esquina superior derecha. ¿Ese era el objetivo, verdad?

A simple vista hay una incongruencia entre el MODEL y el org 100h cuyo comentario dice que es un archivo COM, si queres generar un COM tenes que usar el modelo TINY y no el SMALL.
toy usando el turbo assembler

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Que Error Tiene Este Codigo...
« Respuesta #3 en: Miércoles 2 de Noviembre de 2005, 23:55 »
0
Cita de: "Victorn"
toy usando el turbo assembler
Bueno, proba a usar TINY o sacar el org y si sigue sin funcionar proba con MASM.

 :smartass:  :ph34r:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.