Está en la página 1de 12

INTROD.

AL ASSEMBLER

Contenido
I. INTRODUCCION.
Objetivos de la sesión II. LENG. DE ALTO Y BAJO NIVEL
Iii. LENG. ENSAMBLADOR
Aprender la temática del Assembler IV. JERARQUIA DE LA TRADUCCION.

Ing. CIP. Francisco Mori


Lenguaje de bajo nivel

Se encuentran vinculados a la estructura del computador. Están diseñados


para sacar el máximo partido de las características físicas del computador.
Características:
 Dependencia absoluta de la arquitectura del computador.

Imposibilidad de transportar programas entre distintas máquinas, salvo


que sean de la misma familia o compatibles.
 Instrucciones poco potentes y Programas muy largos.

Tipos: * Leng. máquina. * Leng. ensamblador.


 La codificación de programas en binario es conveniente y natural
para la circuitería del computador, pero es difícil para un programador.
 El Leng. Máquina: Es lo único que la circuitería de la máquina interpreta.
Sus instrucciones se encuentran codificadas en binario.
 Leng. Ensamblador: Es la representación de la codificación binaria de
un computador. Surgió para facilitar la escritura de programas de
computador.
 Es un lenguaje simbólico que da nombres a las instrucciones de máquina,
y a las posiciones de memoria que contienen instrucciones o datos.
Continuación…. Leng. Ensamblador
 Representados mediante códigos nemotécnicos. constituye la
representación más directa del código máquina específico para cada
arquitectura legible por un programador.
 Existe una correspondencia biunívoca entre las instrucciones de
máquina y las instrucciones de un leng. ensamblador.
 Debe ser traducido a lenguaje máquina para poder ser interpretado y
ejecutado directamente por el computador.
Lenguajes de alto nivel y bajo nivel

 Compilador (Compiler): traductor de lenguaje de alto nivel a lenguaje


ensamblador.
• Hoy los compiladores traducen los programas directamente a lenguaje
máquina.
• Ensamblador (Assembler): traductor de leng. ensamblador a leng. máquina.
• Montador (Linker): Crea el código máquina ejecutable final.
• Cargador (Loader): Carga el código ejecutable en M.P. y lo prepara
para su
ejecución.
High-level language program
Lenguajes de alto nivel y bajo nivel
¿Que factores miden la calidad de los programas ejecutables?
• Tamaño en N° de palabras de memoria
• Velocidad.
Al respecto, hoy los compiladores generan un código de máquina de alta
calidad pequeño y rápido, haciendo poco atractiva la programación en
ensamblador. Sin embargo es recomendable programar en ensamblador
cuando la velocidad del programa y su tamaño sean críticos.

Solución mixta:
• Programar en alto nivel la mayor parte del código.
• Programar en ensamblador las partes críticas en cuanto a velocidad.
• Programar en ensamblador los sistemas con un tamaño de memoria muy
reducido.
Ejecución de una instrucción
Desarrollo de programas en ensamblador: fases

Carga y Ejecución
 Consiste en la transferencia del programa ejecutable a la MP
desde el fichero en disco, y en el posterior lanzamiento de su
ejecución.
 El programa ejecutable formado por instrucciones en lenguaje
máquina se encuentra almacenado en posiciones consecutivas de
memoria.
 El Contador de Programa (PC) es un registro que contiene la dirección
de la posición de memoria que contiene la instrucción que va a
ser ejecutada a continuación. Herramienta utilizada: Cargador
pertenece al S.O.
Traducción de Ensamblador a Maquina
ESQUEMA DE UN INTÉRPRETE

Intérprete: traductor de lenguaje de alto nivel a lenguaje máquina.


• Un intérprete traduce y ejecuta las instrucciones del programa fuente una por una,
sin generar fichero alguno con código objeto.
• Los intérpretes son propios de los llamados lenguajes interpretados
(BASIC, Lips, etc..)

ESQUEMA DE UN COMPILADOR

Si el código fuente contiene errores sintácticos no se genera el código objeto.


Sintaxis del Leng Ensamblador
 Una instrucción en lenguaje ensamblador consta de los siguientes cuatro
campos:
[etiqueta:] menmónico [operandos] [;comentarios]

 Etiqueta refiere a una línea de código por su nombre. Este campo puede
incluir hasta 31 caracteres.

 Mnemónico (instrucción) y Operandos del lenguaje ensamblador se


refieren a trabajo real que ejecutará el programa. También pueden
contener directivas, ejemplo. SEGMENT, DB, ENDS, ASSUME, END,
ENDP, etc.

 Ejemplos de instrucciones: ADD AL, BL


MOV AX, 6764

 ADD y MOV son mnemónicos de códigos de operación (opcode) y “AL,


BL” y “AX, 6764” son los operandos
Comentario pueden incluirse al final ;Formato de un programa en Lenguaje Ensamblador
de una línea o constituir toda una línea ;---------------------
del programa. El ensamblador ignora PILA SEGMENT STACK
DB 64 DUP (?)
los comentarios. PILA ENDS
;----------------------
SEGMENTOS DE UN PROGRAMA DATOS SEGMENT
DATO1 DB 52H
DATO2 DB 29H
Aunque es posible escribir un programa
SUMA DB ?
en lenguaje ensamblador que use un DATOS ENDS
solo segmento, normalmente un ;----------------------
programa está conformado por al menos CODIGO SEGMENT
tres segmentos: INICIO PROC FAR ;éste es el punto de entrada del
programa
ASSUME CS: CODIGO, DS: DATOS, SS: PILA
* De Pila * De Datos * De Código MOV AX, DATOS ;carga la dirección del
segmento de datos
• MOV DS, AX ;asigna el valor a DS
El seg. de Pila: define el espacio de
MOV AL, DATO1 ;carga el primer operando
almacenamiento para la pila. MOV BL, DATO2 ;carga el segundo operando
• El seg. de Datos: define los datos ADD AL, BL ;suma los operandos
que el programa usará. MOV SUMA, AL ;almacena resultado
• El seg. de Código: contiene las MOV AH, 4CH ;prepara retorno
INT 21H ;a DOS
instrucciones del lenguaje INICIO ENDP
ensamblador CODIGO ENDS
Se usan las directivas SEGMENT y ;----------------------
ENDS para indicar al ensamblador el END INICIO ;éste el punto de salida del
inicio y fin de un segmento. programa
Segmentos de un Programa

Reserva 64
bytes de
memoria
para la pila

La directiva DB es
usada por el
ensamblador para
asignar memoria en
bloques del tamaño de
un byte

Fig. 1 Fig. 2
Archivos EXE vs Archivos COM

Archivo EXE Archivo COM


Tamaño ilimitado Máximo tamaño 64K bytes.
El segmento de pila está No hay definición del segmento
definido de pila
El segmento de datos está EL segmento de datos está
definido definido en el segmento de
código
El código y los datos pueden El código y el segmento deben
ser definidos en cualquier empezar en la dirección 0100H
dirección
Archivo más grande (requiere Archivos más pequeño
más memoria) (requiere menos memoria)
Ejercicios
Explicativos

12

También podría gustarte