- El entorno
- Problemas
- FAQs
¿Qué es
ensamblador?
Es
un lenguaje de programación de bajo nivel, para los computadores,
microprocesadores, microcontroladores, y otros circuitos integrados
programables.
¿Por qué debería
interesarme el lenguaje ensamblador?
Para
comprender qué sucede cuando un computador ejecuta una sentencia de alto nivel,
determinar el tiempo de ejecución de una instrucción de alto nivel, y que es
útil para compiladores, sistemas operativos, juegos, etc.
¿Cómo puedo
comenzar a programar en ensamblador?
Lo
primero que necesitas es un entorno de programación adecuado, usaremos Mars, es
un software libre y gratuito que podremos descargar de esta página: http://www.softpedia.com/get/Programming/Coding-languages-Compilers/Vollmar-MARS.shtml
Una
vez en la página cliquearemos en la imagen a la izquierda que pone DOWNLOAD en
azul, y luego elegiremos un enlace a la derecha, “Softpedia Secure Download
(US)” no debería dar problemas, y ya solo queda esperar a que nos pida permiso
para descargarlo.
También
debes tener instalado y actualizado JAVA.
Una vez abierto
el programa, ¿Cómo funciona este entorno?
Como
en todo programa arriba a la izquierda tiene dos iconos iluminados, el primero
es el de crear un archivo nuevo, y el segundo es el abrir un archivo guardado
anteriormente. También podemos observar que debajo de estos dos iconos,
encontramos dos pestañas, EDIT y EXECUTE, en EDIT escribiremos el código, todas
las instrucciones, y en EXECUTE, observaremos las secuencias de instrucciones
que se ejecutarán, y en las que podremos poner puntos de ruptura, son puntos situados
a la izquierda de cada instrucción, con los que le indicamos al programa que
haga una parada, para estudiar como avanza la ejecución.
También
encontramos una tabla a la derecha, es una tabla en el que irá almacenando en
los registros, los cambios que se vallan realizando, según las instrucciones.
Tengo escrito
las instrucciones, pero no sé como ejecutarlo, y la pestaña de “execute” sigue
vacía, ¿Qué sucede?
En
Mars, todo código debes guardarlo antes de ejecutarlo, y una vez guardado se
iluminará un botón con un destornillador cruzado por una llave, ese es el botón
de ensamblar, una vez pulsado, nos llevará a la pestaña de “execute” y se
iluminarán los iconos para controlar el avance o retroceso del código, podemos
darle al botón de “play”, para que el programa se ejecute entero, o si le damos
al botón que tiene un “1”, avanzaremos paso a paso, viendo como se ejecuta cada
instrucción y viendo los cambios en los registros. También podemos modificar a
la velocidad que se ejecuta con “play”, en la barra de la derecha, si bajamos
la velocidad, irá a tantas instrucciones por segundo como indiquemos.
¿Puedo indicar
con algún comentario que hace cada instrucción?
Si,
debes poner antes del comentario “#”, esto separará la instrucción del
comentario, y tendrás el resto de la línea para comentar.
¿Cómo puedo
imprimir o pedir un dato entero por pantalla?
Para
imprimir, primero debes cargar en $v0 el código 1, que se usa para imprimir un
entero, ese entero que quieres imprimir debe estar guardado en el registro $a0,
y una vez completado estos dos pasos, usaremos la llamada al sistema “syscall”.
Y para pedir un entero simplemente cargamos en $v0 el código 5, y hacemos la
llamada al sistema “syscall”, y guardará el dato que se le introduzca a
continuación en $v0. Lo siguiente que deberías hacer es mover ese dato a un
registro más seguro.
El
ultimo icono con el símbolo “?”, es la ayuda, ahí podrás encontrar todas las
instrucciones, directivas y llamadas al sistema que puedes usar.
¿Hay alguna
forma de trabajar con varios datos?
Si,
usando vectores, estos debes declararlos en la cabecera, debajo de “.data”, indicando
el tipo de datos, número de posiciones e incluso el contenido, si queremos
introducir los datos por pantalla y guardarlos en el vector, reservaremos
espacio con la directiva “.space”. Una cosa que debes tener en cuenta, es que
el nombre que le demos al vector no hace referencia a todo el vector (como en
C++), sino que señala a la dirección de memoria del primer elemento.
Dependiendo del tipo de dato, tendremos que tener en cuenta cuantos bytes usa
para cada elemento del vector, es decir si es de tipo “half”, es decir, 2
bytes, el segundo elemento estará situado a 2 bytes por delante del inicial, el
tercero estará a 2 bytes más del segundo, es decir, multiplicar por 2 el tamaño
del tipo de dato, y sumárselo a la posición inicial, y así sucesivamente.
- Sugerencias
-Quizá convenga primero trabajar cada instrucción por separado, esto ayudaría a comprender mejor como funciona el lenguaje y que hace cada instrucción.