1.8 - Desplegado de mensajes en el monitor
En este momento podemos comenzar a escribir las verdaderas instrucciones que
le indicarán a la computadora que mensaje y como lo va a desplegar. Sugiero que
comencemos por borrar la pantalla. Esto se puede realizar de muy diversas
formas, aquí lo haremos usando el BIOS, el cual es un microchip que se encuentra
dentro de toda PC y controla las funciones básicas de entrada y salida
(Basic Input Output System).
Lo que haremos es decirle al chip "¡Hey! dime en que modo está trabajando la tarjeta de vídeo", cuando obtengamos la respuesta le diremos: "Dile a la tarjeta de vídeo que deje de trabajar en ese modo y que comience a trabajar en el modo de video que me diste". Una instrucción rara, pues lo que le estamos ordenando es que deje de trabajar en el modo en el que está trabajando !y que comience a trabajar en ese mismo modo!
Así se lo decimos en su propio lenguaje: principio: mov ah, 0fh int 10h mov ah, 0 int 10h
Lo primero que vemos es una "etiqueta", con ella le damos nombre a un punto dentro del código, si más tarde dentro del programa deseamos repetir esta parte del código solo tenemos que decir "salta a 'principio'" y ya está. El primer grupo de instrucciones después de la etiqueta le dicen al BIOS que obtenga la modalidad en la que está trabajando el vídeo. Aquí vemos por primera vez una interrupción (int 10h). Las interrupciones son funciones ya incorporadas dentro del BIOS y del sistema operativo MS-DOS que realizan tareas comunes como leer del disco, mostrar un mensaje en el monitor, o ¡borrar la pantalla!. Enseguida, mediante una función de la interrupción 10h, le decimos que cambie a la misma modalidad de vídeo. Bueno, ahora que la pantalla está limpia, podemos mostrar nuestro mensaje en el monitor. Aquí está el código: lea dx, mensaje_a_mostrar mov ah, 9h int 21h Con la primera instrucción le decimos al procesador "Carga en el registro DX, la dirección de memoria de la variable llamada 'mensaje_a_mostrar'". Enseguida le decimos que la despliegue en pantalla con la función 9h de la interrupción 21h. Nuestra tarea está terminada, así que digámosle a la computadora que no hay más instrucciones que procesar. int 20h Las instrucciones están terminadas, pero todavía tenemos que decirle a la computadora que valor va a tener la variable:
'mensaje_a_mostrar'. mensaje_a_mostrar db "¡Hola Mundo!$",0
El signo de pesos al final de la cadena, es necesario para que el sistema operativo sepa en donde se acaba la cadena (una cadena es un grupo de caracteres) que va a desplegar. Una vez que terminamos con las instrucciones y valores para la máquina, hay que marcar el archivo para que el compilador sepa que ya terminamos de darle instrucciones a la maquina.
CODE ENDS end principio
¡Al fin! ¡Llegamos al final!
Aquí está el código fuente completo: CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE, ES:CODE
ORG 100h
principio:
mov ah, 0Fh
mov ah, 0
int 10h
lea dx, mensaje_a_mostrar
mov ah, 9h
int 21h
int 20h
mensaje_a_mostrar db "¡Hola Mundo!$",0
CODE ENDS
end principio
Lo que haremos es decirle al chip "¡Hey! dime en que modo está trabajando la tarjeta de vídeo", cuando obtengamos la respuesta le diremos: "Dile a la tarjeta de vídeo que deje de trabajar en ese modo y que comience a trabajar en el modo de video que me diste". Una instrucción rara, pues lo que le estamos ordenando es que deje de trabajar en el modo en el que está trabajando !y que comience a trabajar en ese mismo modo!
Así se lo decimos en su propio lenguaje: principio: mov ah, 0fh int 10h mov ah, 0 int 10h
Lo primero que vemos es una "etiqueta", con ella le damos nombre a un punto dentro del código, si más tarde dentro del programa deseamos repetir esta parte del código solo tenemos que decir "salta a 'principio'" y ya está. El primer grupo de instrucciones después de la etiqueta le dicen al BIOS que obtenga la modalidad en la que está trabajando el vídeo. Aquí vemos por primera vez una interrupción (int 10h). Las interrupciones son funciones ya incorporadas dentro del BIOS y del sistema operativo MS-DOS que realizan tareas comunes como leer del disco, mostrar un mensaje en el monitor, o ¡borrar la pantalla!. Enseguida, mediante una función de la interrupción 10h, le decimos que cambie a la misma modalidad de vídeo. Bueno, ahora que la pantalla está limpia, podemos mostrar nuestro mensaje en el monitor. Aquí está el código: lea dx, mensaje_a_mostrar mov ah, 9h int 21h Con la primera instrucción le decimos al procesador "Carga en el registro DX, la dirección de memoria de la variable llamada 'mensaje_a_mostrar'". Enseguida le decimos que la despliegue en pantalla con la función 9h de la interrupción 21h. Nuestra tarea está terminada, así que digámosle a la computadora que no hay más instrucciones que procesar. int 20h Las instrucciones están terminadas, pero todavía tenemos que decirle a la computadora que valor va a tener la variable:
'mensaje_a_mostrar'. mensaje_a_mostrar db "¡Hola Mundo!$",0
El signo de pesos al final de la cadena, es necesario para que el sistema operativo sepa en donde se acaba la cadena (una cadena es un grupo de caracteres) que va a desplegar. Una vez que terminamos con las instrucciones y valores para la máquina, hay que marcar el archivo para que el compilador sepa que ya terminamos de darle instrucciones a la maquina.
CODE ENDS end principio
¡Al fin! ¡Llegamos al final!
Aquí está el código fuente completo: CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE, ES:CODE
ORG 100h
principio:
mov ah, 0Fh
mov ah, 0
int 10h
lea dx, mensaje_a_mostrar
mov ah, 9h
int 21h
int 20h
mensaje_a_mostrar db "¡Hola Mundo!$",0
CODE ENDS
end principio
Comentarios
Publicar un comentario