Como programar en ensamblador Intel 8086
viernes, octubre 22, 2010 | Author: Aldo JB Madueño
Tal y como indica el titulo ahora os voy a hablar sobre el lenguaje ensamblador. 

¿Que es el lenguaje ensamblador? 
Pues el lenguaje ensamblador es un lenguaje de nivel medio, es decir, es algo intermedio entre el lenguaje humano y el lenguaje del procesador. Normalmente esta compuesto por instrucciones cortas de 3 o 4 caracteres seguidas de unos parámetros denominados parámetro fuente y parámetro destino. 

Normalmente la sintaxis de las instrucciones dependen del tipo de procesador y ademas los programas escritos en ensamblador solo se pueden ejecutar correctamente en el procesador para el que han sido programados. O sea un programa en ensamblador escrito para procesador Intel solo funcionara correctamente para los procesadores Intel y va a provocar efectos diferentes en un procesador Athlon de AMD. 

A continuación veremos más a fondo que es el lenguaje ensamblador de la arquitectura Intel 8086. 

Introducción en la arquitectura Intel 8086 
Antes de poner nos a programar en ensamblador tenemos que conocer cual es la arquitectura de los procesadores Intel, o sea, conocer como están organizados los componentes internos del procesador. Esto es necesario por que el lenguaje ensamblador se encarga de gestionar los componentes internos del procesador mediante instrucciones cortas. Como por ejemplo para sumar dos números primero tenemos que ordenar en dirección de memoria dichos números y a continuación realizar la suma mediante la instrucción: add destino, fuente. En dichas instrucción vamos a indicar cuales son las direcciones de memoria en las que están almacenados los dos datos. Una vez que la suma ha sido realizada el resultado se almacena en el dirección de memoria indicada por destino. 

¿Como está organizada la memoria en Intel 8086?: pues para la organización del I-8086 se ha utilizado el modelo Litle Endian que quiere decir que las primeras instrucción están en las dirección de memoria mas baja y las ultimas instrucciones están almacenadas en las ultimas direcciones de memoria (cada dirección de memoria tiene asignado un número presentado normalmente en codificación hexadecimal). 

¿Que partes tiene el procesador?: pues el procesador o CPU del I-8086 tienes las siguientes partes: 
- Registro: son memorias internas de la CPU. Son las más rapidas del ordenador. Normalmente la información que vamos a procesar se almacena en estos registro para aumentar las velocidades de procesamiento. Más adelante veremos cuales son estos registros y como se utlizan 
- Unidad de Control: se encarga de distribuir las tareas que tienen que realizar todas las partes del ordenador y cuando las tiene que realiza. 
- Unidad Aritmético-Lógica: se encarga de realizar cálculos, realizar comparaciones etc. 

Ademas del procesador el ordenador tiene dispositivos de entrada/salida como la pantalla, teclado, ratón, impresoras etc. Así que los buses que se encargan de distribuir la información por todas partes. El esquema es el que está a continuación: 

 

Registros del procesador 
El I-8086 tiene 14 registro de 16 bits cada uno. A continuación se describe cada uno de ello: 

- 4 registros de propósito general: esto 4 registro son AX, BX, CX, DX. Cada uno de ellos esto formado por otros 2 registros de 8 bits cada uno. El registro AX está formado por AH (byt de mas peso) y AL (byt de menos peso). El registro BX está formado por BH (byt de mas peso) y BL (byt de menos peso). El registro CX está formado por CH(byt de mas peso) y CL (Byt de menos peso). El registro DX está formado por DH (byt de mas peso) y DL (byt de menos peso). Cada uno de ellos se puede utilizar para lo que queramos aunque para algunas instrucciones utilices preferentemente algunos de ellos. 

4 registros de direcciones: Almacenan direcciones efectivas 
utilizadas por distintas instrucciones. SI (source index), DI (destination index), BP 
(base pointer), SP (stack pointer). 

4 registros de segmento: Almacenan identificadores de segmento, que 
combinados con los registros de dirección (o los de propósito general) identifican 
direcciones físicas. CS (code segment), DS (Data segment), SS (Stack 
segment), ES (Extra data segment). 

2 registros de propósito específico: 
IP – Dirección de la instrucción a ejecutar (combinado con CS) 
PSW – Palabra de estado del procesador, o registro de flags. 

¿Que es la palabra de estado del procesador? 
La palabra de estado o registro de flags es un registro de la CPU de 16 bits y cada uno de estos bits tiene una significado especifico. A continuacion veremos cuales son: 

- CF: acarreo / desbordamiento natural +, -, >>, << 
- PF: Paridad = 1 si número par de bits 1 en el byte de menos peso del resultado 
- AF: Acarreo auxiliar (del bit 3 al 4) 
- ZF: = 1 si el resultado = 0 
- SF: = 1 si el resultado < 0 
- TF: Bit de traza. Manipulado por programa 
- IF: Máscara de interrupción. Si 0, la UC no acepta interrupciones externas 
- DF: sentido de incremento de punteros en instrucciones de cadena. Si 0, los punteros se incrementan. Si 1, se decrementan bit 11 OF Desbordamiento entero: el resultado no puede representarse en complemento a 2. 

Una vez que hemos visto que son los registro del procesador Intel 8086 el esquema conceptual se queda así: 

 

Instrucciones del lenguaje Ensamblador del I-8086 
- Suma: para suma dos números se utiliza la instrucción add 
Formato: add destino, fuente 
Descripción: Suma destino con fuente y almacena el resultado en destino. Destino y fuente puedes ser direcciones de memoria, registros o datos directos. 

- Restar: para restar dos números se utliza la instrucción sub 
Formato: sub destino, fuente 
Descripción: resta destino y fuente y almacena el resultado en destino. Igual que la suma destino y fuente pueden ser direcciones de memoria, registros o datos directos. 

- Mover: mover un dato desde fuente a destino se utliza la instrucción mov 
Formato: mov destino, fuente 
Descripción: mueve el valor del operando fuente en la dirección que apunta el operando destino 

Para más información podeis consultar el manual del ensamblador. No os voy a contar todas las instrucciones por que la lista es muy larga. También podéis realizar búsquedas en google poniendo manual de ensamblador seguido del procesador con el cual vais a programar. 

Los vídeos que está a continuación es solamente educativo. NO enseña a hachear!!! Solamente da a conocer que habilidades hay que tener. 



This entry was posted on viernes, octubre 22, 2010 and is filed under . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.