ðHwww.oocities.org/ar/moni2201/computacion1.htmwww.oocities.org/ar/moni2201/computacion1.htm.delayedx"€ÕJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ`hˆ­¾OKtext/htmlpÑ2÷­¾ÿÿÿÿb‰.HSun, 20 Jun 2004 17:03:20 GMT@Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)en, *€ÕJ­¾ Programando

Programando.

 

Temas de programacion

 

En esta parte de la pagina se indican enlaces a distitos temas de programacion :

 

Temas de c++. http://www.oocities.org/ar/moni2201/temas_c.htm

 

 

C++,para aquellos que deseen aprender sobre este tema les aconsejo el curso C++ con clase.

 

C++ , Programa escrito en C++,que permite la ordenacion de numeros con subindice de menor a mayor.

 

 

 El assembler.

 

 

 

El assembler para los que nos interesa la computacion, deberia ser el tema inicial clave;en palabras de Jorge Gimenez(Trimegistro) http://usuarios.advance.com.ar/trimegis/wintro.txt

,el assembler da la posibilidad de conocer el hard,la PC en si y permite acelerar otras aplicaciones hechas en lenguaje de alto nivel como c o basic,aunque el codigo en si es algo confuso,ya que esta escrito para la maquina.

El lector puede consultar mi pagina Primer programa en Assembler Hola mundo,que le permitira ir entrando en el tema y Suma de dos numeros ,que describe como realizar un programa en assembler para sumar dos numeros.

 

Graficos en la PC

 

En nuestro caso comencemos con lo siguiente programa escrito en assembler(el lector puede consultar en este enlace para conocer mas detalles de como escribir el programa en assembler y ejecutarlo)  y que permite generar un punto de colo en la pantalla:

 

;El siguiente programa genera un punto de color en la pantalla

  DOSSEG

 

 .MODEL SMALL

 

 .STACK 200h

 

 .CODE

 

;el siguiente procedimiento cambia el modo de pantalla

 

mov ah,0h        ;funcion 0

mov al,13h       ;modo grafico con una resolucion de 320x200 y 256 colores

int 10h          ;pongo en modo grafico   

 

mov cx,0h        ;columna 0

mov dx,20h       ;fila 20

mov ah,0ch       ;funcion escribir el pixel

mov al,2h        ;valor del pixel (color 0-3)

mov bh,0h        ;pagina de video (hay varias)

int 10h          ;ejecuto la interrupcion

 

 

 MOV   AX, 4C00h             ; Exit to DOS sufunction

 INT   21h                   ; Generate interrupt 21h

 

 

END

 

El modo de video 13H

 

Cada modo de video tiene dos caracteristicas, primero la resolucion o numero de pixels horizontales y verticales, 320 y 200 en nuestro caso, y segundo el numero de colores que pueden aparecer simultaneamente en pantalla, 256 para nosotros. Por pixel se entiende minimo elemento (punto) que se puede representar en pantalla.

La ROM-BIOS del PC es una zona de memoria no modificable, en la cual disponemos de una serie de funciones y servicios para su uso por el sistema operativo ( utilizables por el usuario ), que gestionan accesos a disco, control de la tarjeta de video, gestion de impresora, etc. Estas funciones son las llamadas "interrupciones de software" y proporcionan al programador todo el control sobre el hardware del PC.
    La manera de llamar a una de esas interrupciones, en lenguaje assembler, consiste en preparar todos los parametros que esta requiera (cargar los registros del PC, como AX, BX, CX, con los valores adecuados) y ejecutar la llamada a la interrupcion. Supongamos que queremos iniciar el modo de video 13h. Cargamos los registros como se solicita y efectuamos la llamada(escrito en rojo en el programa):

mov ah,0                   
mov al,13h               
int 10h

Para establecer el modo de video se puede emplear una funcion del lenguaje de programacion que se trate o bien llamar directamente a la BIOS, si no se desea emplear la libreria grafica del compilador, la funcion 0 (AH=0) de servicios de video de la BIOS (INT 10h) establece el modo de video solicitado en AL.

Definiciones de terminos

Pixel: Cuando ejecutamos un programa en modo grafico, mirando a la pantalla podemos darnos cuenta de que el dibujo ahi representado esta formado por una serie de unidades minimas (unos pequenos puntos cuadrados), cada una de ellas con un color, y con la acumulacion de las cuales se forman las figuras graficas que vemos representadas en el monitor.

La palabra pixel viene de la abreviacion del termino ingles PEL -picture element- (elemento del dibujo), y representa la unidad minima capaz de ser representada por el monitor en esa resolucion.

Resolucion: Acabamos de nombrar la palabra resolucion en la definicion de pixel, y es que en la pantalla caben un numero determinado de pixels (o puntos) a lo ancho y a lo alto de ella. Asi, podemos ver que, en un determinado juego, en la pantalla caben 320 pixels a lo ancho y 200 a lo alto,es decir 320x200=64000 puntos, mientras en Windows pueden caben por ejemplo 640x480 pixels en la misma pantalla.

Programa que llena la pantalla de puntos de un color.

Supongamos ahora que queremos llenar toda la pantalla de puntos de un color,como si generamos un fondo de un color,trabajamos en el modo de video 13h,tenemos que generar 64000 puntos,podemos comenzar con la fila 0 y generar 320 puntos(imprimir) a lo largo de toda la fila,luego pasar a la fila 1 y generar nuevamente 320 puntos,a continuacion la fila 3 hasta llegar a la fila 199(de 0 a 199,200 filas),como se muestra en el siguiente dibujo :

los puntos verdes no se veran,sino sera un color que cubra toda la pantalla,para ello usamos el siguiente algoritmo:

;grafico5,es un programa que imprime toda la pantalla de puntos de un color,como trabajamos

;en el modo 13h con una resolucion de 320 puntos a lo ancho y 200 puntos a ;lo alto

;que hacen 320x200=64000 puntos en total

 

 

dosseg

.model small

.stack 200h

.code

 

#######################################################################;Cambiamos el modo grafico

mov ah,0h

mov al,13h     ;modo grafico con una resolucion de 320x200 y 256 colores

int 10h        ;pongo el modo grafico

 

#######################################################################;

;la siguiente parte del programa genera un for-next para las filas y otro

;dentro del mismo para las columnas

 

mov dx,0h      ;iniciamos la impresion en la fila 0

continuar_filas:

 

;------------------------------------------------------------------------

mov cx,0h      ;iniciamos la impresion en la columna 0

continuar_columnas:

;------------------------------------------------------------------------

;funcion que imprime el pixel

mov ah,0ch

mov al,2h

mov bh,0h

int 10h

;------------------------------------------------------------------------

 

add cx,1h      ;aumentamos la columna en 1

cmp cx,013fh    ;comparamos si llegamos a la columna 319

 

;------------------------------------------------------------------------

 

jz terminar_columnas  ;si llegamos a 319 columnas

jmp continuar_columnas

terminar_columnas:

;------------------------------------------------------------------------

 

add dx,1h      ;aumentamos la fila en 1

cmp dx,0c7h    ;comparamos si llegamos a la fila 199

jz terminar_filas  ;si llegamos a 199 filas terminamos la impresion

jmp continuar_filas

 

terminar_filas:

 

;#######################################################################

mov ax,4c00h      ;salgo a DOS

int 21h

end

 

 

El resultado del programa se ve a continuacion :

 

 

Distintos colores ,el siguiente programa imprime en la pantalla en le modo de video 13h varias posibiliddes de colores,el codigo esta en el siguiente enlace y es un archivo .com , el lector puede consultar la diferencia con un .exe ,en este enlace,

 

 

 

 

Temas relacionados con lo estudiado :

 

Cual es la diferencia entre un archivo .EXE y uno .COM , http://www.forosdelweb.com/s458d5828b08218a9b120e7f60cef47ca/msg151116.html

 

LOS FICHEROS EJECUTABLES, http://arte.mundivia.es/astruc/doctxt03.htm

 

Some Basic Interrupts , http://microasm.emu8086.com/interrupts.html

 

 

 http://www.oocities.org/ar/moni2201/computacion1.htm