Vous êtes sur la page 1sur 3

Programa 1. Programa que despliega un mensaje (Hola Mundo!

)
El siguiente es un programa básico en todos los lenguajes de programación, se
suele usar como primer ejemplo porque su implementación no supone mucha
dificultad, únicamente consiste en imprimir una cadena de caracteres en pantalla.
Código del programa:

Figura 1.1 Programa “Hola Mundo!” en ensamblador de DLX.

Explicación del código.


La línea 1 es simplemente un comentario que hacemos para describir algo en
nuestro código. Los comentarios comienza con un punto y coma ( ;) y estos son
ignorados a la hora de correr el programa, podemos poner los comentarios
necesarios para describir algunas partes del código. En este caso sólo se puso un
comentario que describe qué es lo que hace el programa, pero podemos poner un
comentario por cada línea del código si queremos, esto es opcional.
La línea 2 tiene la directiva .data, que sirve para almacenar los datos siguientes a
esa directiva (Osea desde la línea 3 hasta la línea 6) en la zona de datos, en este
caso usamos la directiva para guardar la cadena “Hola Mundo!” que se encuentra
en la línea 3 así como su espacio (Línea 5, mediante la directiva .word)
En la línea 3 definimos una etiqueta llamada Mensaje, la cual va a contener una
cadena de caracteres, para ello antes incluimos la directiva .asciiz o podemos
utilizar la directiva .ascii, son similares. Luego entre comillas escribimos la cadena
a visualizar, en este caso es “Hola Mundo!”
La línea 5 contiene otra etiqueta, llamada Imprimir, en la cual mediante la directiva
.word indicamos que se cargará una palabra, referenciando a la anterior etiqueta
(Mensaje) que contiene la cadena de caracteres a imprimir.
En la línea 7 se indica la directiva .text, la cual hace que el código que siga a partir
de ahí sean almacenados en la zona de código, en otras palabras, a partir de aquí
comenzará la codificación de la lógica del programa.
En la línea 9 se indica una etiqueta llamada main en la cual simplemente
indicamos que esa etiqueta será la principal donde estará la programación de todo
lo que queramos hacer. En este caso podemos omitirla si queremos ya que el
código del programa únicamente tiene una etiqueta en el área de código (No
confundir con el área de datos que contiene dos etiquetas: Las etiquetas Mensaje
e Imprimir).
La línea 11 utiliza la instrucción addi, la cual tiene el siguiente formato:

addi destino, origen, Valor a almacenar


Dónde:
addi es la instrucción de suma inmediata , es decir, sumar una constante.
destino es el registro a donde queremos almacenar el resultado de la
operación.
origen es el registro donde se encuentra el valor que queremos operar.
Valor a almacenar es la constante a sumar al registro origen.

En este caso tenemos la siguiente instrucción:


addi r14,r0,Imprimir
La anterior línea hará que sumemos lo que hay en la cadena imprimir al registro
registro r0, y almacenar el resultado en r14. Ahora, ¿Por qué usar los registros
r14 y r0? Sencillo, el registro r14 tiene una función especial, y es el de almacenar
valores que deseemos imprimir en pantalla, como pueden ser valores enteros,
flotantes, dobles, cadenas de caracteres, etc. Es por ello que usamos ese registro
especialmente. La razón de usar el registro r0 es simplemente porque este registro
siempre tendrá un valor de cero, es por ello que estaremos usando en muchas
ocasiones este registro para cargar valores como constantes a los registros.
Nota: Todos los registros si no se han usado por defecto tienen el valor de cero, la
diferencia entre el registro r0 y los demás registros es que el registro r0 no puede
ser modificado por el programador, es decir, siempre tendrá un valor de 0.
En otras palabras, la línea 11 funciona de esta manera: Se almacena la suma
entre lo que hay en r0 (0) y la etiqueta Imprimir (Que recordemos, contiene una
referencia hacia una cadena de caracteres, es decir, apunta hacia la etiqueta
Mensaje). Por lo tanto r14 = 0 + Imprimir, y siguiendo la anterior explicación
tenemos que r14 = “Hola Mundo!”
La línea 12 hace una llamada al sistema mediante la función trap, esta función
puede tener otros valores diferentes de 5, pero en este caso el valor 5 indica una
salida a pantalla, es decir, imprimir en pantalla lo que hay en el registro 14 (r14).

Vous aimerez peut-être aussi