Glosario técnico - Lenguaje Ensamblador


Glosario técnico - Lenguaje Ensamblador

Conceptos básicos.

Lenguaje de alto nivel: es aquel que se aproxima más al lenguaje natural humano que al lenguaje binario de las computadoras. Su función principal radica en que a partir de su desarrollo, existe la posibilidad de que se pueda utilizar el mismo programa en distintas máquinas, es decir que es independiente de un hardware determinado. La única condición es que la PC tenga un programa conocido como traductor o compilador, que lo traduce al lenguaje específico de cada máquina. Entre estos lenguajes figuran ejemplos como PASCAL, BASIC, FORTRAN y C++. (Lanzillotta, 2004).

Lenguaje de bajo nivel: también llamado lenguaje ensamblador, permite al programador escribir instrucciones de un programa usando abreviaturas del inglés, también llamadas palabras nemotécnicas, tales como: ADD, DIV, SUB, etc. Un programa escrito en un lenguaje ensamblador tiene el inconveniente de que no es comprensible para la computadora, ya que, no está compuesto por ceros y unos. Para traducir las instrucciones de un programa escrito en un lenguaje ensamblador a instrucciones de un lenguaje máquina hay que utilizar un programa llamado ensamblador. (Pes, 2009).
Lenguaje ensamblador: es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. (Wikipedia, 2009).
Lenguaje máquina: El lenguaje máquina es el único que entiende la computadora digital, es su "lenguaje natural". En él sólo se pueden utilizar dos símbolos: el cero (0) y el uno (1). Por ello, al lenguaje máquina también se le denomina lenguaje binario. (Pes, 2009).
Compilador: los compiladores son programas o herramientas encargadas de compilar. Un compilador toma un texto (código fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (código objeto).


Clasificación de los ensambladores.
Ensambladores Cruzados (Cross-Assembler): Se denominan así los ensambladores que se utilizan en una computadora que posee un procesador diferente al que tendrán las computadoras donde va a ejecutarse el programa objeto producido. El empleo de este tipo de traductores permite aprovechar el soporte de medios físicos (discos, impresoras, pantallas, etc.), y de programación que ofrecen las máquinas potentes para desarrollar programas que luego los van a ejecutar sistemas muy especializados en determinados tipos de tareas.
Ensambladores Residentes: Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su ejecución, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de que se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un lugar a otro, como se hacía en cross-assembler, y sin necesidad de programas simuladores.

Microensambladores: Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intérprete de las mismas interpretaba de igual forma un determinado código de operación.
Macroensambladores: Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generados el programa objeto. Puede variar la complejidad de los mismos, dependiendo de las posibilidades de definición y manipulación de las macroinstrucciones, pero normalmente son programas bastantes complejos, por lo que suelen ser ensambladores residentes.
Ensambladores de una fase: Estos ensambladores leen una línea del programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina o la ejecuta si se trata de una pseudoinstrucción. También va construyendo la tabla de símbolos a medida que van apareciendo las definiciones de variables, etiquetas, etc.
Ensambladores de dos fases: Los ensambladores de dos fases se denominan así debido a que realizan la traducción en dos etapas. En la primera fase, leen el programa fuente y construyen una tabla de símbolos; de esta manera, en la segunda fase, vuelven a leer el programa fuente y pueden ir traduciendo totalmente, puesto que conocen la totalidad de los símbolos utilizados y las posiciones que se les ha asignado. Estos ensambladores son los más utilizados en la actualidad.
Instrucciones simbólicas
Una instrucción en ensamblador consta de códigos de operación, operaciones, operandos y comentarios.
La etiqueta, es el símbolo que añadido a una instrucción permite que se pueda referenciar simbólicamente en el programa.
El código de operación, es generalmente un símbolo, aunque en algunos sistemas es un entero octal, hexadecimal o decimal que indica la operación que se quiere realizar.
El campo operando, es un campo de dirección de datos que puede estar dividido en varios subcampos de acuerdo con la constitución interna de la computadora correspondiente.
El comentario, que no es obligatorio, no es procesado por el ensamblador. Nos dice que las instrucciones pueden ser de formato fijo, formato libre y formato mixto.
CONJUNTO DE INSTRUCCIONES (Microprocesadores 8086/8088)
Se pueden clasificar en los siguientes grupos:
Instrucciones de Transferencia de Datos
Estas instrucciones mueven datos de una parte a otra del sistema; desde y hacia la memoria principal, de y a los registros de datos, puertos de E/S y registros de segmentación.
Las instrucciones de transferencia de datos son las siguientes:
MOV                  transfiere
XCHG                intercambia
IN                      entrada
OUT                  salida
XLAT                 traduce usando una tabla
LEA                   carga la dirección efectiva
LDS                   carga el segmento de datos
LES                   carga el segmento extra
LAHF                carga los indicadores en AH
SAHF                guarda AH en los indicadores
PUSH FUENTE (sp) ←←fuente
POP DESTINO  destino←←(sp)
Control de Bucles (instrucciones simples)
Éstas posibilitan el grupo de control más elemental de nuestros programas. Un bucle es un bloque de código que se ejecuta varias veces. Hay 4 tipos de bucles básicos:
• Bucles sin fin
• Bucles por conteo
• Bucles hasta
• Bucles mientras
Las instrucciones de control de bucles son las siguientes:
• INC    incrementar
• DEC  decrementar
• LOOP realizar un bucle
• LOOPZ, LOOPE realizar un bucle si es cero
• LOOPNZ, LOOPNE realizar un bucle si no es cero
• JCXZ salta si CX es cero
Instrucciones de Prueba, Comparación y Saltos.  
Este grupo es una continuación del anterior, incluye las siguientes instrucciones:  
TEST   verifica 
CMP   compara
 JMP   salta
JE, JZ   salta si es igual a cero 
JNE, JNZ  salta si no igual a cero 
JS   salta si signo negativo 
JNS   salta si signo no negativo 
JP, JPE  salta si paridad par 
JNP, JOP  salta si paridad impar 
JO   salta si hay capacidad excedida 
JNO   salta si no hay capacidad excedida 
JB, JNAE  salta si por abajo (no encima o igual) 
JNB, JAE  salta si no está por abajo (encima o igual) 
JBE, JNA  salta si por abajo o igual (no encima) 
JNBE, JA  salta si no por abajo o igual (encima) 
JL, JNGE  salta si menor que (no mayor o igual) 
JNL, JGE  salta si no menor que (mayor o igual) 
JLE, JNG  salta si menor que o igual (no mayor) 
JNLE, JG  salta si no menor que o igual (mayor)  
Instrucciones de Llamado y Retorno de Subrutinas.  
Para que los programas resulten eficientes y legibles tanto en lenguaje ensamblador como en lenguaje de alto nivel, resultan indispensables las subrutinas:  
CALL   llamada a subrutina 
RET   retorno al programa o subrutina que llamó
Instrucciones Aritméticas.  
Estas instrucciones son las que realiza directamente el 8086/8088  
a. Grupo de adición:
ADD   suma 
ADC   suma con acarreo 
AAA   ajuste ASCII para la suma 
DAA   ajuste decimal para la suma  
b. Grupo de sustracción:
SUB  resta 
SBB  resta con acarreo negativo 
AAS  ajuste ASCII para la resta 
DAS  ajuste decimal para la resta  
c. Grupo de multiplicación:
MUL   multiplicación 
IMUL   multiplicación entera 
AAM   ajuste ASCII para la multiplicación  
d. Grupo de división:
DIV   división 
IDIV   división entera 
AAD   ajuste ASCII para la división  
e. Conversiones:
CBW   pasar octeto a palabra 
CWD   pasar palabra a doble palabra 
NEG   negación  
f. Tratamiento de cadenas:
Permiten el movimiento, comparación o búsqueda rápida en bloques de datos:  
MOVC   transferir carácter de una cadena 
MOVW   transferir palabra de una cadena 
CMPC   comparar carácter de una cadena 
CMPW   comparar palabra de una cadena 
SCAC   buscar carácter de una cadena 
SCAW   buscar palabra de una cadena 
LODC   cargar carácter de una cadena 
LODW   cargar palabra de una cadena 
STOC   guardar carácter de una cadena 
STOW   guardar palabra de una cadena
REP   repetir 
CLD   poner a 0 el indicador de dirección 
STD   poner a 1 el indicador de dirección  
Instrucciones Lógicas. 
Son operaciones bit a bit que trabajan sobre octetos o palabras completas:  
NOT   negación 
AND   producto lógico 
OR   suma lógica 
XOR   suma lógica exclusiva
Instrucciones de Desplazamiento, Rotación y Adeudos.  
Básicamente permiten multiplicar y dividir por potencias de 2  
SHL, SAL  desplazar a la izquierda (desplazamiento aritmético) 
SHR   desplazar a la derecha 
SAR   desplazamiento aritmético a la derecha 
ROL   rotación a la izquierda 
ROR   rotación a la derecha 
RCL   rotación con acarreo a la izquierda 
RCR   rotación con acarreo a la derecha 
CLC   borrar acarreo 
STC   poner acarreo a 1  
Instrucciones de Pila.  
Una de las funciones de la pila del sistema es la de salvaguardar (conservar) datos (la otra es la de salvaguardar las direcciones de retorno de las llamadas a subrutinas):  
PUSH   introducir 
POP   extraer 
PUSHF   introducir indicadores 
POPF   extraer indicadores  
Instrucciones de Control del microprocesador.  
Hay varias instrucciones para el control de la CPU, ya sea a ella sola, o en conjunción con otros procesadores:  
NOP   no operación 
HLT   parada 
WAIT   espera 
LOCK   bloquea 
ESC   escape
Instrucciones de Interrupción.
STI   poner a 1 el indicador de interrupción 
CLI   borrar el indicador de interrupción 
INT   interrupción 
INTO   interrupción por capacidad excedida (desbordamiento) 
IRET   retorno de interrupción

Comentarios

Entradas populares de este blog

Unidad II. Notaciones Prefija,Infija y Posfija

¿Por qué los registros de 32 bits se llaman EAX, EBX, ECX, EDX, etc.

2.2.3 Triplos.