Ensamblador8086
Páginas: 25 (6140 palabras)
Publicado: 25 de junio de 2010
1. 2. 3. 4. 5. 6. Introducción Registros internos Modos de direccionamiento Juego de Instrucciones Etiquetas, cometarios y directivas Problemas
1. Introducción
El lenguaje ensamblador como cualquier lenguaje de programación es un conjunto de palabras que le indican al ordenador lo que tiene que hacer. Sin embargo la diferencia fundamental es que cada instrucción escritaen lenguaje ensamblador tiene una correspondencia exacta con una operación en el procesador. Por lo que son operaciones muy sencillas tales como: “Cargar 32 en el registro BX” o “Transferir el contenido del registro CL al CH”. Así pues, las palabras del lenguaje ensamblador son nemotécnicos que representan el código máquina, lenguaje que entiende el procesador.
1.1. Tamaño de los datos
En el8086/88 se definen los siguientes tamaños de datos: 4 bits 8 bits 16 bits 32 bits nibble byte word dword
1.2. Almacenamiento de datos
El 8086/88 usa el formato de almacenamiento denominado “little endian”, esto quiere decir que el byte menos significativa (LSB) del dato es guardada en la parte baja de la memoria. Por ejemplo el dato 0x1122 será almacenado en memoria: 000….0
22 11
FFF….F Esimportante tener esto en cuanta a la hora de acceder a los datos para operar con ellos.
1.3. Segmentación
El 8086/88 tiene un ancho de bus de datos de 16 bits y un ancho de bus de direcciones de 20 bits. Con 20 bits de direcciones se puede acceder a 220 = 1 Mega posiciones de memoria. Como cada dirección de memoria contiene un byte, el total de memoria accedido por el procesador es de 1Mbyte. El bus de datos de 16 bits lo que implica que en cada acceso a memoria se leen dos
1
Ensamblador 8086/88
posiciones. Esta es la razón por que la que es importante saber el modo de almacenamiento de los datos en memoria, visto en el apartado anterior. El problema que se les planteó a los diseñadores fue que siendo los registros internos del procesador de 16 bits, y el bus de direccionesde 20; faltaban 4 bits para poder aprovechar al máximo las capacidades de direccionamiento del procesador. Para resolver esto, cada dirección de memoria será especificada como un segmento y un desplazamiento dentro de ese segmento. Esta solución divide la memoria en segmemtos de 64 K, lo cual limitó bastante los diseños de los procesadores posteriores de la familia (80286,80386 etc.); aunqueposteriormente se idearon métodos para resolver este problema, como la memoria extendida (no compatible, por supuesto, con el 8086/88). Así pues el 8086/88 dispone de una serie de registros para almacenar los valores de segmentos, como veremos en los siguientes apartados. Para obtener la dirección de memoria (dirección efectiva): se toma el valor de registro de segmento, se desplaza 4 bits, y se le sumael valor del desplazamiento. Segmento Desplazamiento + Dirección efectiva 0000 0000 0000 1010 0101 1111 0000 1010 0000 0101 1111 0101 1010 desplazado 4 bits
Esta operación la realiza el procesador de forma interna automáticamente.
2. Registros internos
El 8086/88 dispone de 4 registros de datos, 4 registros de segmento, 5 registros de índice y 1 registro de estado.
2.1. Registros dedatos
Los registros de datos son de 16 bits, aunque están divididos. lo que permite su acceso en 8 bits. Estos registros son de propósito general aunque todos tiene alguna función por defecto. AX (acumulador) se usa para almacenar el resultado de las operaciones, es al único registro con el que se puede hacer divisiones y multiplicaciones. Puede ser accedido en 8 bits como AH para la parte alta(HIGH) y AL (LOW) para la parte baja. AX: AH AL
BX (registro base) almacena la dirección base para los accesos a memoria. También puede accederse como BH y BL, parte alta y baja respectivamente. CX (contador) actúa como contador en los bucles de repetición. CL (parte baja del registro) almacena el desplazamiento en las operaciones de desplazamiento y rotación de múltiples bits. DX (datos) es...
Leer documento completo
Regístrate para leer el documento completo.