Vistas de página en total

miércoles, 10 de julio de 2013

CABECERA TIME

        Vamos a ver ahora una cabecera que añadirá, junto con sus librerías asociadas, las funciones necesarias para tomar la hora.
      Ahora no hemos añadido a esta cabecera las funciones de fecha. Eso lo podremos hacer más tarde.
   
     En este caso creamos una macro que creará una estructura con el formato de hora, si no ha sido creada antes,  y posteriormente la variable asociada que deseamos. Por lo tanto creamos un tipo de variable time.

     Para empezar, tendremos tres funciones gettime, asctime, y delay. La primera está implementada directamente en la macro y la usaremos en el siguiente blog para crear un pequeño ejercicio impresión de hora y en el siguiente blog crearé un MASTERMIND.

      Luego añadiremos las librerías de asctime y delay.
      Ascitime nos permitirá tomar la hora directamente en formateada en una cadena.
      Delay lo usaremos para crear retardos en los programas.

TIME.MAC
; Copyright (C) 2013  José Ángel Moneo Fernández

;    This program is free software: you can redistribute it and/or modify
;    it under the terms of the GNU General Public License as published by
;    the Free Software Foundation, either version 3 of the License, or
;   (at your option) any later version.

;    This program is distributed in the hope that it will be useful,
;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;    GNU General Public License for more details.

;    You should have received a copy of the GNU General Public License
;    along with this program.  If not, see <http://www.gnu.org/licenses/>.

;macro para generar varible hora
time macro nombre
ifndef _time
    _time struc
        ti_hora dw 2 dup (?)
        ti_min dw 2 dup (?)
        ti_seg dw 2 dup (?)
        ti_dec dw 2 dup (?)
    _time ends
endif
     nombre _time ?
endm

;devuelve un número aleatorio en ax
random macro 
    push dx
    mov ah,00
    int 1ah
    mov ax,dx
    pop dx
endm
;obtiene la hora y la comunica a una varialbe con la estructura _time
gettime macro hora
     push cx
     push dx
     mov ah,2ch
     int 21h
     mov byte ptr hora&.ti_hora,ch
     mov byte ptr hora&.ti_min,cl
     mov byte ptr hora&.ti_seg,dh
     mov byte ptr hora&.ti_dec,al
     pop dx
     pop cx
endm
asctime macro cadena
ifndef _asctime
   extrn _asctime:near
endif
        lea ax,cadena
        push ax
        call _asctime
        pop ax
  endm

delay macro tiempo
ifndef _delay
        extrn _delay:near
endif
        mov ax,tiempo
        push ax
        call _delay
        pop ax
 endm


No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.