![]() |
Microprocesadores |
Nociones de lenguaje assembler
El computador solo "entiende" el lenguaje de máquina, es decir ceros y unos. Cada microprocesador responde a su propio set de instrucciones, y la familia de microprocesadores por ejemplo desde el 8088 pasando por el 80386 hasta llegar a los actuales, permite a los nuevos integrantes, comprender el lenguaje de sus antecesores incorporando nuevas prestaciones.
Para que el microprocesador pueda ejecutar una instrucción, ésta debe estar en memoria, y en ella solo pueden residir combinaciones de ceros y unos lógicos, que es el lenguaje que utiliza el computador. Para llevar a cabo el estudio del lenguaje assembler, se supondrá que cada instrucción consta de 8 bits divididos en dos partes:
Código de operación: son los 3 primeros bits y especifican la operación que debe realizar el microprocesador.
Dirección de la memoria: son los 5 bits restantes e indican, o bien la posición donde se busca el dato con el cual se va a realizar la operación descripta por los 3 bits del código de operaciones, o bien, a donde se va a almacenar algún resultado del proceso.
Las operaciones en el microprocesador se llevan a cabo en la ALU, a su vez un registro denominado acumulador es utilizado para tener el dato antes de realizarse la operación y el resultado luego de la misma. Teniendo en cuenta estas consideraciones se supondrán los siguientes códigos de operación:
000 -> Cargar el acumulador del microprocesador con el contenido de la dirección
que indican los 5 bits siguientes de esta instrucción.
001 -> Sumar lo que está en el acumulador con lo que indica la dirección
de los 5 bits siguientes de esta instrucción, dejando el resultado en
el acumulador.
010 -> Llevar el contenido del acumulador a la dirección que indican
los 5 bits siguientes de esta instrucción.
011 -> Detener el programa.
Ahora se verá a modo de ejemplo un pequeño programa ya ingresado a la RAM, que utiliza los códigos anteriores. A la izquierda aparece la instrucción en lenguaje de máquina y a la derecha la operación que se realiza:
000 11100 -> Carga el acumulador con lo que tiene la dirección 11100.
001 11101 -> Suma lo que tiene el acumulador con lo que tiene la dirección
11101.
010 11111 -> Almacena el resultado de la suma en la dirección 11111.
011 -> Detiene el programa.
Antiguamente se programaba a los computadores directamente en lenguaje de máquina por medio de una serie de llaves o interruptores que, según estuvieran abiertas o cerradas, permitían el ingreso de ceros o unos lógicos.
A principios de 1950 comienza a desarrollarse el lenguaje ensamblador, conocido generalmente como assembler, a fin de hacer más fácil la tarea del programador. A cada instrucción del lenguaje de máquina se le asigna una sigla o mnemónico correspondiente al idioma inglés relacionada con el significado de la instrucción, y las direcciones de memoria son expresadas en forma hexadecimal, que resulta más sencillo que en binario.
Luego, los códigos de operación vistos anteriormente pueden ser representados como:
000 -> LDA (Load Accumulator): carga el acumulador con lo que indica la
dirección de la instrucción.
001 -> ADD (en inglés significa agregar o sumar): realiza la suma
del contenido del acumulador con lo que está en la dirección de
memoria indicada por la instrucción.
010 -> STA (Store Accumulator): almacena el contenido del acumulador en la
dirección de memoria especificada en la instrucción.
011 -> HLT (Halt): detiene la ejecución del programa.
Entonces, teniendo en cuenta que las direcciones están expresadas en el sistema hexadecimal de numeración, el programa quedaría de la siguiente forma:
LDA 1C -> Carga el acumulador con lo que tiene en la dirección .
ADD 1D -> Suma lo que tiene el acumulador con lo que tiene la dirección
.
STA 1F -> Almacena el resultado en la dirección .
HLT -> Detiene el programa.
Si bien con este tipo de lenguaje es más fácil programar, modificar
programas y corregir errores que con el lenguaje de máquina, la programación
consume mucho tiempo y no resulta muy sencilla. Además, hay que recordar
que el programa desarrollado en lenguaje assembler, vale para una marca y modelo
de microprocesador y no puede transportarse a otro.
Del libro "FUNDAMENTOS DE COMPUTACIÓN Y COMUNICACIONES"- Ing. Gabriel Duperut
Para ampliar los contenidos de este tema: www.amazon.com/dp/B01EI6QKXC |