Arqui_compu(Clase 11)Inst. MD
-
Upload
daniel-cordova -
Category
Documents
-
view
18 -
download
0
description
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]