Lenguaje Ensamblador
Enviado por alanzelo • 9 de Abril de 2015 • 1.719 Palabras (7 Páginas) • 187 Visitas
Diagrama a bloques básico del mapa de direccionamiento de un micro-procesador X86.
Programa Utilización
Compilador
(Compiler)
(TASM)
Se encarga de transformar las instrucciones de lenguaje ensamblador (conocido como códi-go fuente y extensión asm) a código máquina (conocido como código objeto con extensión obj), ubicar los elementos o bloques de datos, código del programa y área de pila (stack) en segmentos correspondientes al modelo de memoria indicado en el código fuente.
Crea los símbolos y los identifica con los datos y/o direcciones según corresponda (es posible observarlo en un archivo de listado con extensión lst)).
Ligador
(Linker)
(TLINK) Substituye los símbolos generados por el compilador por librerías para así obtener el código final para que pueda ser ejecutado en la PC, ya sea como programa ejecutable, de coman-dos, librería u otro.
Las librerías constituyen un conjunto de programas previamente compilados que pueden ser requeridos por el programa para su ejecución. Un ejemplo son las funciones externas al pro-grama, macros, etc.
Cargador
(Loader) Su función consiste en ubicar o colocar (cargar) el código del programa, datos y área de pila (stack) en la memoria física (direccionable por el microprocesador) y disponible por el Siste-ma Operativo dentro de la PC.
Es el responsable de proporcionar las direcciones correctas a los registros segmentos del mi-croprocesador conforme al modelo de memoria indicado en el código fuente.
Recordar que una DIRECCIÓN EFECTIVA de memoria para un microprocesador 8088 y 8086 (20 líneas de direcciones) es representada utilizando la siguiente sintáxis:
Segmento : desplazamiento
Debido a que ambos registros son de 16 bits y es necesario calcular una dirección para 20 líneas de direc-ciones, es necesario representarlos en 20 bits. La dirección efectiva se calcula de la siguiente forma:
Dirección efectiva = (segmento)(10 h)+ desplazamiento
El efecto de multiplicar al dato contenido en el registro segmento por la constante 10h, da como resultado agregar a la derecha del dato contenido en el registro segmento un 0.
Por ejemplo, la dirección de un dato esta representado como A8C9 : F876.
El valor del registro de desplazamiento es: F876 h
El valor del registro de segmento es: A8C9 h
Valor de (segmento)(10h) es: A8C90 h
Dirección efectiva = (segmento)(10 h)+ desplazamiento
Dirección efectiva = (A8C9 h)(10 h)+ F876 h
Dirección efectiva = A8C90 h + F876 h
Dirección efectiva = B8506 h
La forma básica de utilizar a los registros segmentos con sus desplazamientos es la siguiente:
Segmento Desplazamiento Utilización
CS IP Dirección de instrucción
SS SP o BP Dirección de pila
DS D, BX o Dirección de 16 bits
SI Dirección de datos
Dirección de cadena fuente
ES DI Dirección de cadena destino
Otros microprocesadores más avanzados y con más líneas de direcciones utilizan ésta y otras técnicas para calcular una dirección efectiva.
En los primeros años de los circuitos integrados, los dispositivos fabricados eran utilizados para funciones especificas; a éstos circuitos se les conoce con el acrónimo de ASIC (Application Specific Integrated Circuit) y fuera esa función, no eran capaces de funcionar correctamente.
Un microprocesador es un dispositivo electrónico programable, es decir, su comportamiento depende de un conjunto de instrucciones (código de programa) que extrae de memoria y ejecuta secuencialmente hasta encontrar una salida o paro del programa, otorgándole una funcionabilidad mayor a la del ASIC.
Las instrucciones tienen como función manipular los elementos internos del microprocesador para generar ciertas condiciones útiles para un programa. Internamente el microprocesador divide esa instrucción en micro instrucciones con la finalidad de generar señales internas para obtener el resultado deseado, llevándose así cierta cantidad de ciclos de reloj para lograrlo. Los elementos internos del microprocesador X86 constituyen al denominado MODELO DE PROGRAMACIÓN, que no es otra cosa que los registros internos que lo inte-gran, el tamaño de éstos y la utilización que tiene cada uno.
Registro Utilización Registro Utilización Registro Utilización
AX Acumulador CS Segmento de código SP Apuntador de pila
BX Índice base DS Segmento de datos BP Apuntador base
CX Contador ES Segmento extra IP Apuntador de instrucción
DX Datos SS Segmento de pila Flags Banderas
Bandera Utilización
C Indica si ocurrió una condición de acarreo o préstamo.
P Indica si los datos tiene paridad par (1) o impar (0).
A Indica un acarreo auxiliar entre los bits 3 y 4 al realizar una operación aritmética
Z Indica que un dato es cero.
S Indica si un número es con signo o negativo (1) o no está activado o es positivo (0).
T Trampa o modo de depuración.
I Acepta las señales de interrupción externa IRQ si el bit es 1. En caso contrario no la acepta.
D Utilizado para el control de incremento (0) o decremento (1) para los registros índices.
O Desbordamiento al sumar o restar números con signo
Las instrucciones por lo general manipulan los registros internos para pasarles información, la cual puede ser o no extraída de la memoria direccionable o de un puerto mapeado a memoria. La forma de transferir la información por medio de las instrucciones
...