Está en la página 1de 11

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

FUNDAMENTOS TEORICOS
NUMEROS BINARIOS, OCTALES Y HEXADECIMALES. El sistema de numeracin utilizado habitualmente es la base 10; es decir, consta de 10 dgitos (0-9) que podemos colocar en grupos, ordenados de izquierda a derecha y de mayor a menor. Cada posicin tiene un valor o peso de 10n donde n representa el lugar contado por la derecha: 1357 = 1 x 103 + 3 x 102 + 5 x 101 + 7 x 100 Explcitamente, se indica la base de numeracin como 135710. En un ordenador el sistema de numeracin es binario -en base 2, utilizando el 0 y el 1hecho propiciado por ser precisamente dos los estados estables en los dispositivos digitales que componen una computadora. Anlogamente a la base 10, cada posicin tiene un valor de 2n donde n es la posicin contando desde la derecha y empezando por 0: 1012 = 1 x 22 + 0 x 21 + 1 x 20 Adems, por su importancia y utilidad, es necesario conocer otros sistemas de numeracin como pueden ser el octal (base 8) y el hexadecimal (base 16). En este ltimo tenemos, adems de los nmeros del 0 al 9, letras -normalmente en maysculasde la A a la F. Llegar a un nmero en estos sistemas desde base 2 es realmente sencillo si agrupamos las cifras binarias de 3 en 3 (octal) o de 4 en 4 (hexadecimal): Base 2 a base 8: 101 0112 = 538 Base 2 a base 16: 0010 10112 = 2B16 A la inversa, basta convertir cada dgito octal o hexadecimal en binario: Base 8 a base 2: 248 = 010 1002 Base 16 a base 2: 2416 = 0010 01002 De ahora en adelante, se utilizarn una serie de sufijos para determinar el sistema de numeracin empleado: Sufijo Base Ejemplos b o,q d h 2 8 10 16 01101010b 175o 789d 6A5h

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

En caso de que no aparezca el sufijo, el nmero se considera decimal; es decir, en base 10.

CAMBIO DE BASE. Pese a que las conversiones entre base 2 y base 8 y 16 son prcticamente directas, existe un sistema general para realizar el cambio de una base a otra. El paso de cualquier base a base 10 lo vimos antes: 6A5h = 6 x 162 + 10 x 161 + 5 x 160 Inversamente, si queremos pasar de base 10 a cualquier otra habr que realizar sucesivas divisiones por la base y tomar los restos:

donde 4 es el ltimo cociente (menor que la base) y los restantes dgitos son los restos en orden inverso. ESTRUCTURA ELEMENTAL DE LA MEMORIA. BIT. Toda la memoria del ordenador se compone de dispositivos electrnicos que pueden adoptar nicamente dos estados, que representamos matemticamente por 0 y 1. Cualquiera de estas unidades de informacin se denomina BIT, contraccin de binary digit en ingls. BYTE. Cada grupo de 8 bits se conoce como byte u octeto. Es la unidad de almacenamiento en memoria, la cual est constituida por un elevado nmero de posiciones que almacenan bytes. La cantidad de memoria de que dispone un sistema se mide en Kilobytes (1 Kb = 1024 bytes), en Megabytes (1 Mb = 1024 Kb), Gigabytes (1 Gb = 1024 Mb), Terabytes (1 Tb = 1024 Gb) o Petabytes (1 Pb = 1024 Tb). Los bits en un byte se numeran de derecha a izquierda y de 0 a 7, correspondiendo con los exponentes de las potencias de 2 que reflejan el valor de cada posicin. Un byte nos permite, por tanto, representar 256 estados (de 0 a 255) segn la combinacin de bits que tomemos. NIBBLE. Cada grupo de cuatro bits de un byte constituye un nibble, de forma que los dos nibbles de un byte se llaman nibble superior (el compuesto por los bits 4 a 7) e inferior (el compuesto por los bits 0 a 3). El nibble tiene gran utilidad debido a que cada uno almacena un dgito hexadecimal:

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

Binario Hex. Decimal Binario Hex. Decimal 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 8 9 A B C D E F 8 9 10 11 12 13 14 15

OPERACIONES ARITMTICAS SENCILLAS EN BINARIO. Para sumar nmeros, tanto en base 2 como hexadecimal, se sigue el mismo proceso que en base 10:
1010 1010b + 0011 1100b -------------1110 0110b Podemos observar que la suma se desarrolla de la forma tradicional; es decir: sumamos normalmente, salvo en el caso de 1 + 1 = 102 , en cuyo caso tenemos un acarreo de 1 (lo que nos llevamos).

AGRUPACIONES DE BYTES. Tipo Palabra Doble palabra Prrafo Pgina Segmento

Definicin 2 bytes contiguos 2 palabras contiguas (4 bytes) 16 bytes 256 bytes, 16 Kb, etc. 64 Kbytes

Cudruple palabra 4 palabras contiguas (8 bytes)

REPRESENTACIN DE LOS DATOS EN MEMORIA. NUMEROS BINARIOS: mximo nmero representable: Tipo 1 byte 2 bytes 4 bytes Sin signo 255 65.535 4.294.967.295

8 bytes 18.446.744.073.709.551.615

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

Tipo 1 byte 2 bytes 4 bytes

Positivo 127 32.767 2.147.483.647

Negativo -128 -32.768 -2.147.483.648

8 bytes 9.223.372.036.854.775.807 -9.223.372.036.854.775.808 Los nmeros binarios de ms de un byte se almacenan en la memoria en los procesadores de Intel en orden inverso: 01234567h se almacenara: 67h, 45h, 23h, 01h. NUMEROS BINARIOS CODIFICADOS EN DECIMAL (BCD). Consiste en emplear cuatro bits para codificar los dgitos del 0 al 9 (desperdiciando las seis combinaciones que van de la 1010 a la 1111). La ventaja es la simplicidad de conversin a/de base 10, que resulta inmediata. Los nmeros BCD pueden almacenarse desempaquetados, en cuyo caso cada byte contiene un dgito BCD (Binary-Coded Decimal); o empaquetados, almacenando dos dgitos por byte (para construir los nmeros que van del 00 al 99). La notacin BCD ocupa cuatro bits -un nibble- por cifra, de forma que en el formato desempaquetado el nibble superior siempre es 0. CDIGO ASCII. El cdigo A.S.C.I.I. (American Standard Code for Information Interchange) es un convenio adoptado para asignar a cada carcter un valor numrico; su origen est en los comienzos de la Informtica tomando como muestra algunos cdigos de la transmisin de informacin de radioteletipo. Se trata de un cdigo de 7 bits con capacidad para 128 smbolos que incluyen todos los caracteres alfanumricos del ingls, con smbolos de puntuacin y algunos caracteres de control de la transmisin. Con posterioridad, con la aparicin de los microordenadores y la gran expansin entre ellos de los IBM-PC y compatibles, la ampliacin del cdigo ASCII realizada por esta marca a 8 bits, con capacidad para 128 smbolos adicionales, experimenta un considerable auge, siendo en la actualidad muy utilizada y recibiendo la denominacin oficial de pgina de cdigos 437 (EEUU). Se puede consultar al final de este libro. Es habitualmente la nica pgina soportada por las BIOS de los PC. Para ciertas nacionalidades se han diseado otras pginas especficas que requieren de un software externo. En las lenguas del estado espaol y en las de la mayora de los dems pases de la UE, esta tabla cubre todas las necesidades del idioma. 1.8. - OPERACIONES LGICAS EN BINARIO. Se realizan a nivel de bit y pueden ser de uno o dos operandos: x NOT (x) 0 1 00 01 10 11 1 0 0 0 0 1 0 1 1 1 0 1 1 0

x y x AND y x OR y x XOR y

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

REGISTROS DEL 8086 Estos procesadores disponen de 14 registros de 16 bits (el 286 alguno ms, pero no se suele emplear bajo DOS). La misin de estos registros es almacenar las posiciones de memoria que van a experimentar repetidas manipulaciones, ya que los accesos a memoria son mucho ms lentos que los accesos a los registros. Adems, hay ciertas operaciones que slo se pueden realizar sobre los registros. No todos los registros sirven para almacenar datos, algunos estn especializados en apuntar a las direcciones de memoria. La mecnica bsica de funcionamiento de un programa consiste en cargar los registros con datos de la memoria o de un puerto de E/S, procesar los datos y devolver el resultado a la memoria o a otro puerto de E/S. Obviamente, si un dato slo va a experimentar un cambio, es preferible realizar la operacin directamente sobre la memoria, si ello es posible. A continuacin se describen los registros del 8086. AX BX CX DX SP BP SI DI CS DS SS ES IP flags

Registros Registro Registros Registros punteros de puntero de de de datos pila e instrucciones y segmento ndices flags

- Registros de datos: AX, BX, CX, DX: pueden utilizarse bien como registros de 16 bits o como dos registros separados de 8 bits (byte superior e inferior) cambiando la X por H o L segn queramos referirnos a la parte alta o baja respectivamente. Por ejemplo, AX se descompone en AH (parte alta) y AL (parte baja). Evidentemente, cualquier cambio sobre AH o AL altera AX!: valga como ejemplo que al incrementar AH se le estn aadiendo 256 unidades a AX. AX = Acumulador. Es el registro principal, es utilizado en las instrucciones de multiplicacin y divisin y en algunas instrucciones aritmticas especializadas, as como en ciertas operaciones de carcter especfico como entrada, salida y traduccin. Obsrvese que el 8086 es suficientemente potente para realizar las operaciones lgicas, la suma y la resta sobre cualquier registro de datos, no necesariamente el acumulador. BX = Base. Se usa como registro base para referenciar direcciones de memoria con direccionamiento indirecto, manteniendo la direccin de la base o comienzo de tablas o matrices. De esta manera, no es preciso indicar una posicin de memoria fija, sino la nmero BX (as, haciendo avanzar de unidad en unidad a BX, por ejemplo, se puede ir accediendo a un gran bloque de memoria en un bucle). CX = Contador.

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

Se utiliza comnmente como contador en bucles y operaciones repetitivas de manejo de cadenas. En las instrucciones de desplazamiento y rotacin se utiliza como contador de 8 bits. DX = Datos. Usado en conjuncin con AX en las operaciones de multiplicacin y divisin que involucran o generan datos de 32 bits. En las de entrada y salida se emplea para especificar la direccin del puerto E/S.

- Registros de segmento: Definen reas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas reas pueden solaparse total o parcialmente. No es posible acceder a una posicin de memoria no definida por algn segmento: si es preciso, habr de moverse alguno. CS = Registro de segmento de cdigo (code segment). Contiene la direccin del segmento con las instrucciones del programa. Los programas de ms de 64 Kb requieren cambiar CS peridicamente. DS = Registro de segmento de datos (data segment). Segmento del rea de datos del programa. SS = Registro de segmento de pila (stack segment). Segmento de pila. ES = Registro de segmento extra (extra segment). Segmento de ampliacin para zona de datos. Es extraordinariamente til actuando en conjuncin con DS: con ambos se puede definir dos zonas de 64 Kb, tan alejadas como se desee en el espacio de direcciones, entre las que se pueden intercambiar datos.

- Registros punteros de pila: SP = Puntero de pila (stack pointer). Apunta a la cabeza de la pila. Utilizado en las instrucciones de manejo de la pila. BP = Puntero base (base pointer). Es un puntero de base, que apunta a una zona dentro de la pila dedicada al almacenamiento de datos (variables locales y parmetros de las funciones en los programas compilados).

- Registros ndices: SI = ndice fuente (source index). Utilizado como registro de ndice en ciertos modos de direccionamiento indirecto, tambin se emplea para guardar un valor de desplazamiento en operaciones de cadenas. DI = ndice destino (destination index).

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento en operaciones con cadenas.

- Puntero de instrucciones o contador de programa: IP = Puntero de instruccin (instruction pointer). Marca el desplazamiento de la instruccin en curso dentro del segmento de cdigo. Es automticamente modificado con la lectura de una instruccin.

- Registro de estado o de indicadores (flags). Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones durante la ejecucin de un programa. Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin, que reflejan los resultados de operaciones del programa; los bits del 8 al 10 son indicadores de control y el resto no se utilizan. Estos indicadores pueden ser comprobados por las instrucciones de salto condicional, lo que permite variar el flujo secuencial del programa segn el resultado de las operaciones. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 AF PF CF

OF DF IF TF SF ZF

CF (Carry Flag): Indicador de acarreo. Su valor ms habitual es lo que nos llevamos en una suma o resta. OF (Overflow Flag): Indicador de desbordamiento. Indica que el resultado de una operacin no cabe en el tamao del operando destino. ZF (Zero Flag): Indicador de resultado 0 o comparacin igual. SF (Sign Flag): Indicador de resultado o comparacin negativa. PF (Parity Flag): Indicador de paridad. Se activa tras algunas operaciones aritmtico-lgicas para indicar que el nmero de bits a uno resultante es par. AF (Auxiliary Flag): Para ajuste en operaciones BCD. DF (Direction Flag): Indicador de direccin. Manipulando bloques de memoria, indica el sentido de avance (ascendente/descendente). IF (Interrupt Flag): Indicador de interrupciones: puesto a 1 estn permitidas. TF (Trap Flag): Indicador de atrape (ejecucin paso a paso).

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

ARQUITECTURA DE 8086

MODOS DE DIRECCIONAMIENTO. Son los distintos modos de acceder a los datos en memoria por parte del procesador. Antes de ver los modos de direccionamiento, echaremos un vistazo a la sintaxis general de las instrucciones, ya que pondremos alguna en los ejemplos:
INSTRUCCIN DESTINO, FUENTE

Donde destino indica dnde se deja el resultado de la operacin en la que pueden participar (segn casos) FUENTE e incluso el propio DESTINO. Hay instrucciones, sin embargo, que slo tienen un operando, como la siguiente, e incluso ninguno:

Auxiliar: Jorge Ignacio Arce Angelo


INSTRUCCIN DESTINO

ESTRUCTURA DE COMPUTADORES II

Como ejemplos, aunque no hemos visto an las instrucciones utilizaremos un par de ellas: la de copia o movimiento de datos (MOV) y la de suma (ADD). ORGANIZACIN DE DIRECCIONES: SEGMENTACIN. Como ya sabemos, los microprocesadores 8086 y compatibles poseen registros de un tamao mximo de 16 bits que direccionaran hasta 64K; en cambio, la direccin se compone de 20 bits con capacidad para 1Mb, hay por tanto que recurrir a algn artificio para direccionar toda la memoria. Dicho artificio consiste en la segmentacin: se trata de dividir la memoria en grupos de 64K. Cada grupo se asocia con un registro de segmento; el desplazamiento (offset) dentro de ese segmento lo proporciona otro registro de 16 bits. La direccin absoluta se calcula multiplicando por 16 el valor del registro de segmento y sumando el offset, obtenindose una direccin efectiva de 20 bits. Esto equivale a concebir el mecanismo de generacin de la direccin absoluta, como si se tratase de que los registros de segmento tuvieran 4 bits a 0 (imaginarios) a la derecha antes de sumarles el desplazamiento:
direccin = segmento * 16 + offset

En la prctica, una direccin se indica con la notacin SEGMENTO:OFFSET; adems, una misma direccin puede expresarse de ms de una manera: por ejemplo, 3D00h:0300h es equivalente a 3D30:0000h. Es importante resaltar que no se puede acceder a ms de 64 Kb en un segmento de datos. Por ello, en los procesadores 386 y superiores no se deben emplear registros de 32 bit para generar direcciones (bajo DOS), aunque para los clculos pueden ser interesantes (no obstante, s sera posible configurar estos procesadores para poder direccionar ms memoria bajo DOS con los registros de 32 bits, aunque no resulta por lo general prctico). TIPOS O MODOS DE DIRECCIONAMIENTO. - Direccionamiento inmediato: El operando es una constante situada detrs del cdigo de la instruccin. Sin embargo, como registro destino no se puede indicar uno de segmento (habr que utilizar uno de datos como paso intermedio).
ADD AX,0fffh

El nmero hexadecimal 0fffh es la constante numrica que en el direccionamiento inmediato se le sumar al registro AX. Al trabajar con ensambladores, se pueden definir smbolos constantes (ojo, no variables) y es ms intuitivo:
dato EQU MOV 0fffh AX,dato ; smbolo constante

Si se referencia a la direccin de memoria de una variable de la siguiente forma, tambin se trata de un caso de direccionamiento inmediato:
dato de dato DW MO 0fffh AX,OFFSET dato ; ahora es una variable ; AX = "direccin de memoria"

Auxiliar: Jorge Ignacio Arce Angelo

ESTRUCTURA DE COMPUTADORES II

Porque hay que tener en cuenta que cuando traduzcamos a nmeros el smbolo podra quedar:
17F3:0A11 DW MOV FFF AX,0A11

- Direccionamiento de registro: Los operandos, necesariamente de igual tamao, estn contenidos en los registros indicados en la instruccin:
MOV MOV DX,AX AH,AL

- Direccionamiento directo o absoluto: El operando est situado en la direccin indicada en la instruccin, relativa al segmento que se trate:
MOV MOV AX,[57D1h] AX,ES:[429Ch]

Esta sintaxis (quitando la 'h' de hexadecimal) sera la que admite el programa DEBUG (realmente habra que poner, en el segundo caso, ES: en una lnea y el MOV en otra). Al trabajar con ensambladores, las variables en memoria se pueden referenciar con etiquetas simblicas:
MOV MOV dato DW AX,dato AX,ES:dato 1234h ; variable del programa

En el primer ejemplo se transfiere a AX el valor contenido en la direccin apuntada por la etiqueta dato sobre el segmento de datos (DS) que se asume por defecto; en el segundo ejemplo se indica de forma explcita el segmento tratndose del segmento ES. La direccin efectiva se calcula de la forma ya vista con anterioridad: Registro de segmento * 16 + desplazamiento_de_dato (este desplazamiento depende de la posicin al ensamblar el programa). - Direccionamiento indirecto: El operando se encuentra en una direccin sealada por un registro de segmento*16 ms un registro base (BX/BP) o ndice (SI/DI). (Nota: BP acta por defecto con SS).
MOV MOV AX,[BP] ES:[DI],AX ; AX = [SS*16+BP] ; [ES*16+DI] = AX

- Indirecto con ndice o indexado: El operando se encuentra en una direccin determinada por la suma de un registro de segmento*16, un registro de ndice, SI o DI y un desplazamiento de 8 16 bits. Ejemplos:
MOV ADD AX,[DI+DESP] [SI+DESP],BX MOV ADD AX,desp[DI] desp[SI],BX

- Indirecto con base e ndice o indexado a base: El operando se encuentra en una direccin especificada por la suma de un registro de segmento*16, uno de base, uno de ndice y opcionalmente un desplazamiento de 8 16 bits:

Auxiliar: Jorge Ignacio Arce Angelo


MOV MOV AX,ES:[BX+DI+DESP] CS:[BX+SI+DESP],CX

ESTRUCTURA DE COMPUTADORES II
MOV MOV AX,ES:desp[BX][DI] CS:desp[BX][SI],CX

También podría gustarte