Arqui_compu(Clase 11)Inst. MD

22
1 Arquitectura de Computadoras Clase 11 INTRUCCIONES DEL COMPUTADOR LENGUAJE DE MAQUINA El lenguaje de maquina de un computador está constituido por su repertorio de instrucciones y los formatos y convenios adoptados para representar en binario tanto las instrucciones como los datos El lenguaje que entiende el procesador es lenguaje- máquina, pero ráramente se emplea como tal, se utiliza un lenguaje de un poco más alto nivel, ensamblador o macro-ensamblador. Cada modelo de procesador tiene su propio lenguaje-máquina y necesita su propio ensamblador, pero todos los miembros de la familia Intel x86 (incluídos los actuales Pentium) comparten un núcleo que proviene de su ancestro el 8086.

description

ya esta..

Transcript of Arqui_compu(Clase 11)Inst. MD

  • 1Arquitectura de Computadoras

    Clase 11INTRUCCIONES DEL COMPUTADOR

    LENGUAJE DE MAQUINA El lenguaje de maquina de un computador est

    constituido por su repertorio de instrucciones y los formatos y convenios adoptados para representar en binario tanto las instrucciones como los datos

    El lenguaje que entiende el procesador es lenguaje-mquina, pero rramente se emplea como tal, se utiliza un lenguaje de un poco ms alto nivel, ensamblador o macro-ensamblador. Cada modelo de procesador tiene su propio lenguaje-mquina y necesita su propio ensamblador, pero todos los miembros de la familia Intel x86 (includos los actuales Pentium) comparten un ncleo que proviene de su ancestro el 8086.

  • 2ENSAMBLADOR

    Es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador

    Alto nivel

    Mediano nivel

    Bajo nivel

    Maquina

    Cobol

    Pascal

    Basic

    Java

    C

    Ensamblador

    001110011010100

    NIVELES DE LENGUAJES DE PROGRAMACIN

  • 3VENTAJAS DEL LENGUAJE ENSAMBLADOR Velocidad. Como trabaja directamente con el microprocesador al

    ejecutar un programa, pues como este lenguaje es el mas cercano a la mquina la computadora lo procesa mas rpido.

    Eficiencia de tamao. Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargar libreras y dems como son los lenguajes de alto nivel

    Flexibilidad. Es flexible porque todo lo que puede hacerse con una mquina (control total), puede hacerse en el lenguaje ensamblador de esta mquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al mximo los recursos de la mquina.

    DESVENTAJAS DEL LENGUAJE ENSAMBLADOR Tiempo de programacin. Como es un lenguaje de bajo nivel requiere

    ms instrucciones para realizar el mismo proceso, en comparacin con un lenguaje de alto nivel.

    Programas fuente grandes. Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos ms instrucciones primitivas para describir procesos equivalentes.

    Falta de portabilidad. Porque para cada mquina existe un lenguaje ensamblador; por ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos codificar en una mquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras

    La formacin de los programadores es ms compleja que la correspondiente a los programadores de alto nivel, ya que no slo las tcnicas de programacin, sino tambin el conocimiento del interior de la mquina.

  • 4FORMATO DE LAS INSTRUCCIONES

    C.O.:Es el cdigo de operacin (op-code) C.D.:Es el campo o cdigo de direccin

    Un computador puede tener varios formatos para diferentes tipos de instrucciones las cuales pueden tener uno o ms bytes.

    EJEMPLO: FORMATO DE INSTRUCCIONES

    Para un procesador de 8 bits de datos y 16 bits de direccin podramos tener los siguientes formatos

  • 5SET DE INSTRUCCIONES DEL 8088/8086

    1. Instrucciones de transferencia de datos2. Instrucciones aritmticas3. Instrucciones lgicas4. Instrucciones de manipulacin de Strings

    (cadena de caracteres)5. Instrucciones de transferencia de control6. Instrucciones de control del procesador

    1. INSTRUCCIONES DE TRANSFERENCIA DE DATOS

    MOV --- movimiento de datosPUSH,POP --- operaciones al StackXCHG --- intercambio de datosIN,OUT --- entrada/salida a puertosXLAT --- trasladar datos (conversin

    de datos)

  • 62. INSTRUCCIONES ARITMETICAS

    ADD --- suma INC --- incrementoSUB --- restaDEC --- decrementoNEG --- negativo (realiza el complemento a

    2)CMP --- comparacinMUL --- multiplicacinDIV --- divisin

    3. INSTRUCCIONES LOGICAS

    NOT --- inversin o complementacinAND,ORXOR --- or exclusivoTEST --- chequeo de bitsSHR,SHL --- desplazamientos a

    derecha/izquierdaROR/ROL --- rotaciones a la

    izquierda/derecha

  • 74. INSTRUCCIONES DE MANIPULACION DE STRINGS

    MOVS --- mover un string (byte/word)CMPS --- comparar dos stringsSCAS --- busqueda en un stringLODS --- cargar desde un stringSTOS --- almacenar dentro de un

    string

    5. INSTRUCCIONES DE TRANSFERENCIA DE CONTROL

    CALL --- llamada a sub-rutinaRET --- retorno de una subrutinaJMP --- saltoJZ,JNZ --- saltos condicionalesLOOP --- iteraccin (lazo)LOOPNZ --- iteraccin condicionalINT --- interrupcinIRET --- retorno de interrupcin

  • 86. INSTRUCCIONES DE CONTROL DEL PROCESADOR

    CLC,STC --- clear/set flagsHLT --- detener el procesador

    MODOS DE DIRECCIONAMIENTO

    C.O.:Es el cdigo de operacin (op-code) M.D.:Es el modo de direccionamiento C.D.:Es el campo o cdigo de direccin

  • 9DIRECCION EFECTIVA (DE)

    Es la direccin que se obtiene a travs de un clculo en el que intervienen el campo de direccin(C.D.) y el campo modo de direccionamiento (M.D.)

    DIRECCIONAMIENTO IMPLICITO O INHERENTE

    Se refiere a acumuladores y registros internos de la CPU

    DE no existeEjemplo: ADD rLas instrucciones que emplean este

    modo de direccionamiento no tienen campo de direccin

  • 10

    DIRECCIONAMIENTO ABSOLUTO O DIRECTO

    El CD especifica la direccin del operando en memoria

    DE= CDDATO = (CD)Ejemplo: ADD (20)

    DIRECCIONAMIENTO DIRECTO O ABSOLUTO

    Direccin AOpcode

    Instruccin

    Memoria

    Operando

  • 11

    DIRECCIONAMIENTO INMEDIATO

    C.D. especifica en forma inmediata el dato

    DE=no existeDATO=CD Ejemplo: ADD 20

    DIRECCIONAMIENTO INMEDIATO

    OperandoOpcode

    Instruccin

  • 12

    DIRECCIONAMIENTO INDEXADO

    Precisa un registro especial de la CPU Registro de Indice (IX)

    La direccin efectiva se obtiene por la suma de: Base especificada en el CD El contenido del registro de indice

    DE=IX+CDDATO=(IX+CD) Ejemplo: ADD 20,XFacilita el acceso a tablas

    DIRECCIONAMIENTO INDIRECTO

    CD especifica la direccin cuyo contenido es la direccin efectiva del operando.

    DE=(CD)DATO=((CD)) Ejemplo: ADD @20Variante: Indirecto por registro

    La direccin del operando se encuentra en un registro de la CPU

  • 13

    DIRECCIONAMIENTO INDIRECTO

    Direccin AOpcode

    Instruccin

    Memoria

    Operando

    Direcc. Operando

    DIRECCIONAMIENTO RELATIVO

    CD especifica un desplazamiento con relacin a una direccin de referencia.

    Esta direccin de referencia normalmente es el Contador de Programa

    El desplazamiento puede ser positivo o negativo

    DE = PC +- CDUtilizado normalmente en instrucciones de

    salto, convierte al programa en reubicable

  • 14

    DIRECCIONAMIENTO POR PAGINA

    La memoria en este tipo de direccionamiento se divide en pginas.

    El C.D. especifica slo la direccin dentro de la pgina y debe ser suficiente para poder direccionar a todas las palabras de la pgina.

    DIRECCIONAMIENTO INDIRECTO E INDEXADO

    Pre-IndexacinDE(Intermedia) = IX+CDDE=(DE intermadia) =(IX+CD)

    Post-InexacinDE(Intermedia) = (CD)DE=IX+DE intermedia

  • 15

    EJEMPLO MODOS DE DIRECCIONAMIENTO

    Determinar la direccin efectiva y el dato que finalmente sumaramos al acumulador si estaramos aplicando una instruccin de sumar datos de la memoria al acumulador usando los siguientes tipos de direccionamientos: Indirecto Inmediato Directo Indirecto e indexado con Post-indexacin. Indexado

    EJEMPLO MODOS DE DIRECCIONAMIENTO

    Teniendo en cuenta los siguientes datos: El contenido del campo de direccin de la instruccin

    es 60 Hex. El registro de indice tiene el valor 50 Hex. En la memoria tenemos los siguientes datosDireccin de Memoria Contenido

    40 Hex. 20 Hex50 80 60 4090 35B0 60110 50120 30

  • 16

    EJEMPLO MODOS DE DIRECCIONAMIENTO

    Respuesta:

    MODOS DE DIRECCIONAMIENTO DEL 8086

    Para describir los modos de direccionamiento usaremos la instruccin MOV destino, origen.

  • 17

    DIRECCIONAMIENTO IMPLICITO (MODO REGISTRO)

    Transfiere el contenido de un registro a otro del mismo tamao.

    El nico MOV que no se permite es el que se hace entre un registro de segmento y otro.

    Tampoco se puede modificar el registro de segmento de cdigo

    MOV AX,BX (AX

  • 18

    DIRECCIONAMIENTO DIRECTO

    La direccin viene almacenada en la misma instruccin

    MOV AX,DireccinMOV AX,[100H]

    DIRECCIONAMIENTO INDIRECTO POR REGISTRO

    Transfiere un dato entre un registro y una direccin de memoria direccionada por un registro ndice o base (BP, BX, DI, SI)

    MOV AX,[BX] (Ax

  • 19

    DIRECCIONAMIENTO POR REGISTRO BASE INDEXADO

    Direcciona en forma indirecta los datos de memoria. Se usa un registro base (BP o BX) ms un registro ndice (DI o SI). Si se usa BP se toma como dato de pila

    MOV AX,[BX+SI+5] (AX BX+4+DS x 10H)

  • 20

    DIRECCIONAMIENTO POR REGISTRO INDEXADO

    Para ubicar el dato se agrega un desplazamiento al contenido del registro indice (SI, DI).

    MOV [SI+4],AX (AX -> SI+4+DS x 10H)

    DIRECCIONAMIENTO RELATIVO AL CONTADOR DE PROGRAMA

    Usados en instrucciones de salto (JMP) y llamada (CALL)

    La direccin efectiva se calcula sumando al contenido del contador de programa un desplazamiento de 8 16 bits

    JMP 1000H

  • 21

    Modos de direccionamiento del 80386

    Direccionamiento por registro MOV EBX,EAX

    Direccionamiento inmediato MOV AL,05H

    Direccionaniento directo: MOV AL,[2000H]

    Direccionamiento indirecto por registro MOV ECX,[EBX]

    Direccionamiento indexado MOV AL,100H[ESI] MOV AL,[ESI+100H]

    Modos de direccionamiento del 80386

    Direccionamiento indexado por registro base con desplazamiento MOV EAX,5[EBX+ESI] MOV EAX,[EBX+ESI+5] MOV EAX,[EBX+ESI] ; sin desplazamiento

    Direccionamiento por registro base MOV EAX,[EBX+4]

    Direccionaniento indexado con factor de escala El factor de escala debe ser 2, 4 u 8 MOV AX,5[ESI*2]

  • 22

    Modos de direccionamiento del 80386

    Direccionamiento por indice y base por factor de escala MOV EAX,[EBX+ESI*4]

    Direccionamiento por indice y base con desplazamiento y factor de escala MOV EAX,5[EBX+ESI*4]