• Viernes 26 de Abril de 2024, 04:42

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - AJJENJJO

Páginas: [1]
1
ASM (Ensamblador) / Re: Mostrar Hora, Minutos Y Segundos X Pantalla (8086)
« en: Miércoles 22 de Diciembre de 2004, 14:31 »
GRACIAS, m ha servido de ayuda.



Ahora tengo otra pregunta: como puedo poner ese programa residente utilizando la interrupción 27h?

Código: Text
  1.  
  2. (...)
  3. CLI&#59;inhibir interrupciones
  4. MOV AX,OFFSET reloj&#59;desplazamiento de la rutina de usuario
  5. MOV ES:[DI],AX&#59;desplazamiento a tabla de vectores de int.
  6. MOV ES:[DI+2],CS&#59;segmento a tabla de vectores de int.
  7. STI&#59;activar interrupciones
  8.  
  9. MOV DX, OFFSET residente
  10. ;dirección de la instrucción siguiente a la última de la rutina que debe quedar residente
  11.  
  12. reloj:
  13. (...)
  14.  
  15. residente:
  16. 27h
  17.  
  18. END
  19.  
  20.  

Lo he intentado de varias maneras pero no he dado con la tecla, alguien me prodría ayudar?

2
ASM (Ensamblador) / Re: Mostrar Hora, Minutos Y Segundos X Pantalla (8086)
« en: Viernes 10 de Diciembre de 2004, 11:42 »
GRACIAS, ya m di cuenta y lo cambié; pro aún así na d na.

He incluso los segundos llegan hasta 99 y no sé q hacer. A ver si m podéis ayudar

3
ASM (Ensamblador) / Re: Tasm ¿como Imprimir En Pantalla?
« en: Sábado 4 de Diciembre de 2004, 12:13 »
aconsejo que muevas lo que quieras mostrar a una tabla; esto es :

                 MOV cadena[SI],AL

y después lo muestres con las instrucciones

                 LEA DX,cadena
                 MOV AH,9
                 INT 21h


espero q t sea de ayuda

4
ASM (Ensamblador) / Re: Abrir Fichero Ubicado En Disketera
« en: Sábado 4 de Diciembre de 2004, 12:02 »
este es el código que lo hace:

MODEL SMALL

.STACK 100h

.DATA
   ruta DB 'a:\hola.txt',0
   error1 DB 'ERROR DE APERTURA DEL FICHERO',13,10,'$'
   error DB 0   
   ident_fich DW 0

.CODE
   MOV AX,SEG ruta
   MOV DS,AX

   LEA DX,ruta      
   MOV AL,0      
   MOV AH,3Dh   ;función abrir fichero
   INT 21h
   JC mostrar_error1    ;si CF=1 mostramos el error de apertura
   MOV ident_fich,AX   

fin:
   MOV AH,4CH
   INT 21h

mostrar_error1:
   LEA DX,error1      ;mostramos el error de apertura
   MOV AH,9      ;función de escribir por pantalla
   INT 21h
   JMP fin

END

5
ASM (Ensamblador) / Re: Abrir Fichero Ubicado En Disketera
« en: Sábado 4 de Diciembre de 2004, 12:01 »
eso me suena a arquitectura II

6
ASM (Ensamblador) / Mostrar Hora, Minutos Y Segundos X Pantalla (8086)
« en: Sábado 4 de Diciembre de 2004, 10:45 »
Hola, querría saber si alguien m puede ayudar para poder mostrar la horas, minutos y segundos del ordenador por pantalla; con este código sólo se m muestra bien la hora, pro no m va bien los minutos y no sé q hacer.

.MODEL SMALL

.STACK 100

.DATA
   min DW 1
.CODE

   MOV AL,3h    ;establece modo texto
   MOV AH,0
   INT 10h

   XOR AX,AX
   MOV ES,AX
   MOV DI,1Ch

   CLI         ;inhibir interrupciones
   MOV AX,OFFSET reloj   ;desplazamiento de la rutina de usuario
   MOV ES:[DI],AX      ;desplazamiento a tabla de vectores de int.
   MOV ES:[DI+2],CS   ;segmento a tabla de vectores de int.
   STI         ;activar interrupciones

   MOV DX, OFFSET residente
   ;dirección de la instrucción siguiente a la última de la rutina que debe quedar residente

reloj:
   MOV AX,40h      ;segmento
   MOV ES,AX      ;empleamos el segmento extra
   MOV SI,6Ch      ;desplazamiento
   MOV AX,ES:[SI]      ;parte inferior contador
   MOV DX,ES:[SI+2]   ;parte superior contador
   MOV BX,32760      ;1/2 hora
   DIV BX         ;DX=resto, AX=horas*2
   SHR AX,1      ;AX=horas
   MOV CH,AL      ;hh:mm:ss pasan a CH:CL:DH
   MOV min,DX         ;guardamos los minutos antes de machacar

   MOV AL,CH
   MOV BH,10
   DIV BH

;MOSTRAMOS PRIMER DIGITO DE LA HORA
   MOV BX,0B800h      ;metemos en BX la posición donde se sitúa
   MOV ES,BX      ;empleamos el segmento extra
   MOV BX,144      ;desplazamiento el modo texto      
   MOV CL,48      ;carácter a mostrar por pantalla
   ADD CL,AL
   MOV ES:[BX],CL

;MOSTRAMOS SEGUNDO DIGITO DE LA HORA
   MOV BX,0B800h      ;metemos en BX la posición donde se sitúa
   MOV ES,BX      ;empleamos el segmento extra
   MOV BX,146      ;desplazamiento el modo texto      
   MOV CL,48      ;carácter a mostrar por pantalla
   ADD CL,AH
   MOV ES:[BX],CL

;MOSTRAMOS LOS DOS PUNTOS
   MOV BX,0B800h      ;metemos en BX la posición donde se sitúa
   MOV ES,BX      ;empleamos el segmento extra
   MOV BX,148      ;desplazamiento el modo texto      
   MOV CL,':'      ;carácter a mostrar por pantalla
   MOV ES:[BX],CL   

   MOV DX,0
   MOV AX,min
   MOV BX,1092      ;min
   DIV BX   
   MOV AH,0
   MOV CL,AL      ;DX=resto, AX=MIN
            ;hh:mm:ss pasan a CH:CL:DH
   MOV BH,10
   DIV BH

;MOSTRAMOS PRIMER DIGITO DE LOS MINUTOS
   MOV BX,0B800h      ;metemos en BX la posición donde se sitúa
   MOV ES,BX      ;empleamos el segmento extra
   MOV BX,150      ;desplazamiento el modo texto      
   ADD CL,48      ;carácter a mostrar por pantalla
   ADD CL,AL
   MOV ES:[BX],CL
   

;MOSTRAMOS SEGUNDO DIGITO DE LOS MINUTOS
   MOV BX,0B800h      ;metemos en BX la posición donde se sitúa
   MOV ES,BX      ;empleamos el segmento extra
   MOV BX,152      ;desplazamiento el modo texto      
   ADD CL,48      ;carácter a mostrar por pantalla
   ADD CL,AH
   MOV ES:[BX],CL
   
   
;AQUI FALTA CONVERSION PARA MIN Y SEG, CON LAS 4 ULT INST PERO 1092 Y QUEDA DX=0 AX=MIN
;IGUAL CON SEG


residente:
   INT 27h         ;solicitud a DOS de TSR




END

He visto q hay un post referido a esto, pro va a través de interrupciones. Y yo no lo quiero hacer así, yo lo quiero hacer a través del segmento de datos, y una vez hecho bien dejarlo resident

A vé si m podéis ayudar, GRACIAS

Páginas: [1]