Está en la página 1de 14

Ensambladores

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de rdenes ejecutables por un microprocesador. Ejemplo: en el lenguaje ensamblador para un procesador x86: La sentencia
MOV AL, 061h

Asigna el valor hexadecimal 61 (97 decimal) al registro "AL". El programa ensamblador lee la sentencia de arriba y produce su equivalente binario en lenguaje de mquina
Binario: 10110000 01100001 (hexadecimal: B061)

Ensambladores

MOV es un "opcode". Este es seguido por una lista de argumentos o parmetros, completando una instruccin de ensamblador. AL es un registro de 8 bits del procesador, al cual se le asignar el valor hexadecimal 61. El cdigo de mquina generado por el ensamblador consiste de 2 bytes. El primer byte contiene empaquetado la instruccin MOV y el cdigo del registro hacia donde se va a mover el dato:

Ensambladores

En el segundo byte se especifica el nmero 61h, escrito en binario como 01100001, que se asignar al registro AL, quedando la sentencia ejecutable como:
10110000 01100001

Esta instruccin puede ser entendida y ejecutada directamente por el procesador.

Ensambladores

El lenguaje ensamblador no se limita nicamente a la programacin de microprocesadores para computadora, se extiende tambin a los microcontroladores (PICs) El programa escrito en lenguaje ensamblador se denomina cdigo fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente cdigo mquina, que suele tener la extensin *.hex.

Ensambladores

El cdigo fuente en ensamblador


Est compuesto por una sucesin de lneas de texto las cuales se estructuran en hasta cuatro campos o columnas separados por uno o ms espacios entre s.
Campo de etiquetas. Expresiones alfanumricas escogidas por el

usuario para identificar una determinada lnea. Todas las etiquetas tienen asignado el valor de la posicin de memoria en la que se encuentra el cdigo al que acompaan.
Campo de cdigo. Corresponde al opcode de una instruccin, de

una directiva o de una llamada a macro.


Campo de operandos y datos. Contiene los operandos que precisa

el opcode utilizado. Segn el cdigo, puede haber dos, uno o ningn operando.
Campo de comentarios. Dentro de una lnea, todo lo que se

encuentre a continuacin de un punto y coma (;) ser ignorado por el programa ensamblador y considerado como comentario.

El cdigo fuente en ensamblador


Campo de cdigo Puede corresponder ese cdigo a:
Instrucciones: son aquellos nemnicos que son

convertidos por el ensamblador en cdigo mquina que puede ejecutar el ncleo del microcontrolador. En la gama media (PIC16xxx) cada nemnico se convierte en una palabra en la memoria de programa
Directivas. Pseudoinstrucciones que controlan el proceso

de ensamblado del programa, pero no son parte del cdigo. Son indicaciones al programa ensamblador de cmo tiene que generar el cdigo mquina
Macros: Secuencia de nemnicos que pueden insertarse

en el cdigo fuente del ensamblador de una manera abreviada mediante una llamada

Ejemplo de cdigo fuente(MPASM)

Macroensambladores

El trmino macroensamblador es usado para indicar que el ensamblador en cuestin tiene la capacidad de poder ensamblar programas con facilidad de macro. Una macro es una pseudo-instruccin que define un conjunto de instrucciones asociadas a un nombre simblico. LOAD R1, LOAD R2, ADD R1, R2 STORE (A), R1 En macro: Suma R1, R2

Cargadores
Un cargador es un programa que coloca en la memoria para su ejecucin, un programa guardado en algn dispositivo de almacenamiento secundario.

Muchos cargadores tambin incluyen relocalizacin y ligado.


La relocalizacion consiste en modificar el programa

objeto con el fin de que pueda cargarse en una direccin de memoria diferente a la especificada originalmente. El ligado consiste en combinar dos o mas programas objeto diferentes y/o adicin de librerias o macros

Software ensamblador

Macro Ensamblador IBM. Turbo Editassm. Turbo Assembler Macro Ensamblador de Microsoft.

Los programas que componen el Macro Ensamblador Microsoft v4.0 son los siguientes: MASM.EXE Microsoft Macro Assembler LINK.EXE Microsoft 8086 object linker SYMDEB.EXE Microsoft Symbolic Debuger Utility MAPSYM.EXE Microsoft Symbol File Generator CREF.EXE Microsoft Cross-Reference Utility LIB.EXE Microsoft Library Manager MAKE.EXE Microsoft Program Maintenance Utility EXEPACK.EXE Microsoft EXE File Compression Utility EXEMOD.EXE Microsoft EXE File Header Utility COUNT.ASM Sample source file for SYMDEB session README.DOC Updated information obtained after the manual was printed.

Ejemplo
;Programa hola mundo

INICIO: ;INSTRUCCIONES EN ENSAMBLADOR. MOV AX,DATA MOV DS,AX MOV DX,OFFSET CADENA MOV AH,09H INT 21H MOV AH,4CH INT 21H

STACK SEGMENT STACK ;INICIA SEGMENTO DE PILA :D DW 64 DUP(?) STACK ENDS; FIN DE SEGMENTO DE PILA DATA SEGMENT ;INICIA SEGMENTO DE DATOS CADENA DB "HOLA MUNDO!!",13,10,"$" DATA ENDS; TERMINA SEGMENTO DE DATOS ; SEGMENTO DE CODIGO DE INSTRUCIONES EN ENSAMBLADOR CODE SEGMENT ; INICIA SEGMENTO DE DATOS ASSUME CS:CODE,DS:DATA,SS:STACK

CODE ENDS ;FIN DE SEGMENTO DE CODIGO


END INICIO

Descripcin del ejemplo


1.- Las declaraciones SEGMENT y ENDS definen los segmentos a usar. 2.- La variable CADENA DB en el segmento DATA, define la cadena a ser desplegada. El signo del dlar al final de la cadena (centinela) es requerido por la funcin de visualizacin de la cadena de MS-DOS. La cadena incluye los cdigos para carriage-return y line-feed. (13,10) 3.- La etiqueta INICIO en el segmento de cdigo marca el inicio de las instrucciones del programa. 4.- La declaracin DW en el segmento de pila define el espacio para ser usado por el stack del programa.

Descripcin

5.- La declaracin ASSUME indica que registros de segmento se asociarn con las etiquetas declaradas en las definiciones de segmentos. (macros) 6.- Las primeras dos instrucciones cargan la direccin del segmento de datos en el registro DS. 7.- Las ltimas dos instrucciones del segmento CODE usa la funcin 4CH de MS-DOS para regresar el control al sistema operativo. Existen muchas otras formas de hacer esto, pero sta es la ms recomendada. 8.- La directiva END indica el final del cdigo fuente y especifica a START como punto de arranque. 09H muestra una cadena INT 21 finaliza el programa.

También podría gustarte