ApuntesuP UC Unidad1

Embed Size (px)

Citation preview

  • 7/24/2019 ApuntesuP UC Unidad1

    1/18

    MICROPROCESADORES Y MICROCONTROLADORES

    1. MICROPROCESADORES1.1 INTRODUCCIN A LOS MICROPROCESADORES1.1.1 DEFINICION DEL MICROPROCESADOR

    Microprocesador

    El microprocesador (uP) es un circuito integrado que contiene todos los elementos de una "unidadcentral de procesamiento" o CPU (por sus siglas en ingls; Central Process Unit). En la actualidaden el interior de este componente electrnico existen millones de transistores integrados.

    Actualmente se dispone de una seccin especial para alojarlo dentro de una computadora. Elmicroprocesador est compuesto principalmente por: Registros, la Unidad de Control y la Unidadaritmtico-lgica.

    Unidad Central de Proceso (CPU)

    Es el "cerebro" de una computadora, de manera ms precisa, es la parte de una computadora quese encarga de controlar el proceso y la transferencia de informacin. La funcin de la CPU es

    interpretar las instrucciones de un programa y coordinar su ejecucin. La CPU desde que esenergizada realiza en forma repetitiva ciclos de instruccin, los cuales se componen de lasactividades descritas en la figura 1.1.

    Figura 1.1Ciclo bsico de instruccin de la CPU

    Para realizar este ciclo bsico, la CPU debe ser capaz de coordinar sus dispositivos internos yexternos para realizar:

    Lecturas desde memoria interna (registros) y memoria externa Escrituras a memoria interna y externa Decodificacin de instrucciones (basada en la consulta de una unidad de microcdigo

    interna a la CPU) Operaciones de tipo aritmtico y lgico.

    1.1.2 DIFERENCIA ENTRE EL MICROPROCESADOR Y EL MICROCONTROLADOR

    Microprocesador (P): Es una CPU en un slo circuito integrado

    Microcomputadora (PC): Es una computadora cuya CPU es un P

    Microcontrolador (C): Es una microcomputadora en un slo circuito integrado

    Computadora (PC): Una computadora es un sistema secuencial sncrono programable, lacual para desempear sus funciones debe poseer adems de la CPU: (1) Conductos parael flujo de la informacin, (2) Dispositivos para almacenar informacin y (3) Dispositivospara comunicarse con el exterior

  • 7/24/2019 ApuntesuP UC Unidad1

    2/18

    La figura 1.2 muestra en forma esquemtica y muy general la estructura de una computadora.

    Figura 1.2Estructura general de una computadora

    La figura 1.3 muestra una comparacin sencilla entre los microprocesadores y losmicrocontroladores

    Figura 1.3 Comparacin entre los microprocesadores y los microcontroladores

    1.1.3 TIPOS DE MICROPROCESADORES SEGN SU VELOCIDAD Y ANCHO DEPALABRA

    EVOLUCIN

    1971Intel fabrica el primer microprocesador (el 4004, figura 1.4) de tecnologa PMOS. Este era unmicroprocesador de 4 bits y fue fabricado por Intel, contena 2,300 transistores y corra a 108 Khzpoda direccionar slo 4096 (4k) localidades de memoria de 4 bits, reconoca 45 instrucciones ypoda ejecutar una instruccin en 20 seg en promedio.

    Figura 1.4El primer microprocesador (4004) de Intel1972Intel desarroll una versin ms poderosa (el 8008), el cual poda manipular bytes completos, porlo cual fue un microprocesador de 8 bits. La memoria que este poda manejar se increment a 16kbytes, sin embargo, la velocidad de operacin continu igual.

  • 7/24/2019 ApuntesuP UC Unidad1

    3/18

    1973Intel lanza al mercado el 8080 el primer microprocesador de tecnologa NMOS, se increment lacapacidad de direccionamiento de memoria a 64 kbytes.

    1975Zilog lanza al mercado el Z80, uno de los microprocesadores de 8 bits ms poderosos. En esemismo ao, Motorola abate dramticamente los costos con sus microprocesadores 6501 y 6502(este ltimo adoptado por APPLE para su primera microcomputadora personal).

    1976Surgen las primeras microcomputadoras de un slo chip, que ms tarde se denominarnmicrocontroladores. Dos de los primeros microcontroladores, son el 8048 de Intel y el 6805R2 deMotorola.

    80sEn la dcada de los 80's comienza la ruptura entre la evolucin tecnolgica de losmicroprocesadores y la de los microcontroladores, ya que los primeros han ido incorporando cadavez ms y mejores capacidades para las aplicaciones en donde se requiere el manejo de grandesvolmenes de informacin y por otro lado, los segundos han incorporado ms capacidades que lespermiten la interaccin con el mundo fsico en tiempo real, adems de mejores desempeos en

    ambientes de tipo industrial.

    90sEn los 90s aparecen los siguientes microprocesadores como base principal en la construccin deprocesamiento digital:

    1993: Intel Pentium, Motorola 68060, AMD K5, MIPS R10000 1995: Intel Pentium Pro 1997: Intel Pentium II, AMD K6, PowerPC (versiones G3 y G4), MIPS R120007 1999: Intel Pentium III, AMD K6-2

    Al inicio del ao 2000, aparecen los siguientes microprocesadores de mayores capacidades deproceso:

    2000: Intel Pentium 4 (figura 1.5), Intel Itanium 2, AMD Athlon XP, AMD Duron, PowerPC

    G4, MIPS R14000

    Figura 1.5El microprocesador Pentium 4 de Intel Figura 1.6El microprocesador AMD Athlon 64 X2

    2005: Intel Pentium D, Intel Extreme Edition con hyper threading, Intel Core Duo, AMDAthlon 64, AMD Athlon X2, AMD Athlon FX.

    2006: Intel Core 2 Duo, Intel Core 2 Extreme, AMD Athlon 64 X2 (Figura 1.6) 2007: Intel Core 2 Quad, AMD Quad Core, AMD Quad Fx

    En relacin a los microcontroladores, actualmente el mercado de fabricantes se circunscribe en lossiguientes: el microcontrolador PIC de Microchip, el ST-62XX de SGS-Thomson o el Z86XX deZilog. La eleccin del microcontrolador toma en consideracin a las caractersticas siguientes: bajoprecio, velocidad, reducido consumo, pequeo tamao, facilidad de uso, fcil programabilidad o laabundancia de informacin y de herramientas econmicas de soporte.

  • 7/24/2019 ApuntesuP UC Unidad1

    4/18

    RESUMEN DE ESPECIFICACIONES TECNICAS (uPs Intel) (Tabla 1.1)

    Fecha de

    presentacin

    Velocidad

    de reloj

    Ancho

    debus

    Nmero de

    transistores

    Memoria

    direccionable

    Memoria

    virtual

    Breve

    descripcin

    4004 15/11/71 108 KHz. 4 bits 2.300 (10micras)

    640 bytePrimer chip conmanipulacinaritmtica

    8008 1/4/72 108 KHz. 8 bits 3.500 16 KBytes ManipulacinDatos/texto

    8080 1/4/74 2 MHz. 8 bits 6.000 64 KBytes10 veces las (6micras)prestaciones del8008

    8086 8/6/78

    5 MHz.

    8 MHz.

    10 MHz.

    16 bits

    29.000

    (3 micras)1 MegaByte

    10 veces lasprestaciones del8080

    8088 1/6/795 MHz.

    8 MHz.8 bits 29.000

    Idntico al 8086excepto en subus externo de 8bits

    80286 1/2/82

    8 MHz.

    10 MHz.

    12 MHz.

    16 Bits

    134.000

    (1.5 micras)16 Megabytes

    1Gigabyte

    De 3 a 6 veceslas prestacionesdel 8086

    Microprocesador

    Intel 386 DX17/10/85

    16 MHz.

    20 MHz.

    25 MHz.

    33 MHz.

    32 Bits

    275.000

    (1 micra)4 Gigabytes 64

    Terabytes

    Primer chip x86capaz demanejar juegosde datos de 32bits

    Microprocesador

    Intel 386 SX

    16/6/8816 MHz.

    20 MHz.

    16 Bits

    275.000

    (1 micra)

    4 gigabytes64

    Terabytes

    Bus capaz dedireccionar 16bits procesando

    32bits a bajocoste

    Microprocesador

    Intel 486 DX10/4/89

    25 MHz.

    33 MHz.

    50 MHz.

    32 Bits(1 micra, 0.8micras en 50MHz.)

    4 Gigabytes64

    Terabytes

    Cach de nivel 1en el chip

    Microprocesador

    Intel 486 SX22/4/91

    16 MHz.

    20 MHz.

    25 MHz.

    33 MHz.

    32 Bits

    1.185.000

    (0.8 micras)4 Gigabytes

    64

    Terabytes

    Idntico endiseo al Intel486DX, pero sincoprocesadormatemtico

    Procesador

    Pentium22/3/93

    60 MHz.

    66 MHz.

    75 MHz.

    90 MHz.

    100 MHz.

    32 Bits

    3,1 millones

    (0.8 micras)4 Gigabytes

    64

    Terabytes

    Arquitecturaescalable. Hasta5 veces lasprestaciones del486 DX a 33MHz.

    Tabla 1.1Especificaciones tcnicas de los microprocesadores Intel

  • 7/24/2019 ApuntesuP UC Unidad1

    5/18

    1.2 ARQUITECTURA DEL MICROPROCESADOR

    Arquitectura Von NewmannTradicionalmente los microprocesadores se basan en la estructura de Von Neumann (figura 1.7),que se caracteriza por disponer de una nica memoria principal en la que se almacenan los datos ylas instrucciones. A esta memoria se accede a travs de un sistema de buses nico:

    Bus de datos. La CPU necesita interactuar de alguna manera con su entorno (memoria ypuertos). Esto lo realiza mediante un conjunto de lneas paralelas llamadas bus externo dedatos.

    Bus de direcciones. Para poder accesar a localidades de memoria es necesario generaruna direccin. Dicha direccin es generada por la CPU y puesta en el bus llamado bus dedirecciones. El tamao del bus de direcciones determina el mximo de memoria accesible.

    Bus de control. Organiza y redirige la informacin hacia el bus pertinente para lainformacin que se tiene que transmitir.

    Figura 1.7Arquitectura Von Newmann

    Arquitectura HarvardEl modelo Harvard, representado en la figura 1.8, dispone de dos memorias:

    Memoria de datos Memoria de Programa

    Adems cada memoria dispone de su respectivo bus, lo que permite, que la CPU pueda accederde forma independiente y simultnea a la memoria de datos y a la de instrucciones. Como losbuses son independientes stos pueden tener distintos contenidos en la misma direccin.

  • 7/24/2019 ApuntesuP UC Unidad1

    6/18

    Figura 1.8Arquitectura Harvard

    Arquitectura OrtogonalCualquier instruccin puede utilizar cualquier elemento de la arquitectura como fuente o destino.En algunos microcontroladores como el PIC, el manejo del banco de registros, que participanactivamente en la ejecucin de las instrucciones, son ortogonales.

    Arquitectura basada en banco de registrosImplica que todos los elementos del sistema, es decir, temporizadores, puertos de entrada/salida,posiciones de memoria, etc, estn implementados fsicamente como registros.

    1.3 CONEXIONES DEL MICROPROCESADOR1.3.1 MEMORIA

    1.3.2 PERIFERICOS (INTERFASE PROGRAMABLE 8255, INTERRUPCIONESPROGRAMABLES 8259, COMUNICACIN SERIAL)

  • 7/24/2019 ApuntesuP UC Unidad1

    7/18

    1.4 LENGUAJE ENSAMBLADOR

    IntroduccinEl lenguaje ensamblador es un conjunto de Mnemnicos para representar las instrucciones quepuede realizar una computadora. Adems, es una variante legible para el ser humano del lenguajemquina que usan las computadoras para ejecutar programas. Al mismo tiempo es la mejor

    manera que se tiene para comunicarse con la PC (tambin conocida como microcomputadora) ycon el lenguaje de programacin que utilice. El ensamblador resulta indispensable cuando sedesea escribir programas que controlen la entrada/salida de la PC, agregar nuevas interfaces dee/s, escribir rutinas optimizadas de un procedimiento, escribir rutinas que aprovechen y maximicenel uso del hardware, y en general realizar cualquier tarea que no puedan llevar a cabo los demslenguajes de programacin.

    Ventajas y desventajasAunque cualquier lenguaje de programacin ofrece facilidades para realizar determinadas tareas,ninguno proporciona un control absoluto con la PC, ni informacin fundamental de lo que sucedemientras el programa se ejecuta.

    El ensamblador le brinda la oportunidad de conocer ms a fondo la operacin de la PC.

    El ensamblador, brinda la oportunidad de conservar el control total de lo que deber hacerla PC, siempre y cuando sta sea fsicamente capaz de hacerlo. Los programas en ensamblador son ms rpidos, ms compactos y tienen mayor

    capacidad que los creados en otros lenguajes. Se puede optimizar al mximo sus programas (tanto en tamao, como en velocidad de

    ejecucin). En el caso de otros lenguajes ya existe cdigo que se genera de una manerapredefinida, haciendo muy difcil su optimizacin.

    Ahora que se ha visto las diferencias entre lenguajes, tambin es justo sealar los problemas detrabajar con el ensamblador

    El primero es que una instruccin mal interpretada o un error de lgica en el programa,pueden crear un caos, a tal grado de que ser necesario apagar y encender la PC.

    El segundo problema es que la insuficiencia de conocimientos sobre el funcionamientointerno de la PC puede causar efectos impredecibles. Es necesario ajustarse a una convencin respecto al uso de interrupciones. El programa es ms complejo conforme se le agregan rutinas o funciones adicionales.

    1.4.1 REGISTROS Y CONJUNTO DE INSTRUCCIONES

    Se le llama conjunto de instrucciones a la cantidad de instrucciones validas que puede ejecutar laCPU. Generalmente se tienen dos categoras de instrucciones, dependiendo de la CPU diseada.La primera se denomina RISC (Reduced Instruction Set Computer; Computadora con un conjuntoreducido de instrucciones). Este tipo de CPU est diseado para ejecutar un conjunto deinstrucciones muy pequeo, y deja la carga de lo que se considera instrucciones de alto nivel al

    programador.

    Un ejemplo de tales instrucciones de alto nivel, sera la multiplicacin de dos operandos en unasola instruccin (MUL AX, BX). En el caso de la CPU tipo RISC, el programador carga con la tareade implementar la instruccin anterior usando instrucciones de ms bajo nivel proporcionadas porla misma CPU. Estas CPU permiten que la misma CPU sea optimizada va hardware y le dan lacapacidad de ejecutar las instrucciones de su repertorio en forma ms eficiente y rpida.

    La familia de microprocesadores 80x86 est formada por procesadores tipo CISC (ComplexInstruction Set Computer: Computadora con un Conjunto Complejo de Instrucciones), cuya

  • 7/24/2019 ApuntesuP UC Unidad1

    8/18

    orientacin es ms bien la de ejecutar instrucciones de alto nivel. Algunas familias demicroprocesadores se muestran en la tabla 1.2. En la figura 1.9 se presenta uno de lomicroprocesadores ms recientes.

    M i c r o P r o c e s a d o r e s Bu s d e d i r e c c i o n e s

    ( b i t s )

    B u s d e d a t o s

    ( b i t s )

    Ma x

    d i r e c ci o n am i e n t o

    e n M e m o r i a ( M b )

    8086/8018620 16

    1

    8088/8018820 8

    1

    8028624 16

    16

    80386 SX32 16

    16

    80386 DX

    80486 SX

    80486 DX

    32 324 Gb

    PENTIUM PENTIUM II/III/IV

    AMD K5/K6/K7

    AMD ATHLON/THUNDERBIRD

    AMD ATHLON XP/MP

    32 64 16 Gb

    INTEL ITANIUM

    AMD ATHLON6432/64 64/128 64 Gb

    Tabla 1.2. Familia de microprocesadores sealando su capacidad en el bus

    Figura 1.9.Procesador Intel Core2 Duo

    LOS REGISTROSDEL uP 8086

    El 8086 tiene 14 registros de 16 bits (Figura 1.10) que sirven para llevar el control de todo lo quesucede dentro de la PC. Dichos registros se dividen en categoras de acuerdo con su actividadpreponderante. Existen cuatro registros de uso general, dos registros de apuntadores, dosregistros ndices, cuatro registros de segmento, el registro apuntador de instrucciones, y el registrode banderas.

  • 7/24/2019 ApuntesuP UC Unidad1

    9/18

    Figura 1.10. Registros de uso general del uP 8086, registros apuntadores, registros ndice, registros desegmento y el registro apuntador de instrucciones.

    Los primeros cuatro registros AX, BX, CX y DX son registros de uso general y se pueden usartambin como registros de 8 bits. Es decir, AX, se puede dividir en AH y AL (AH es el byte alto -High- y AL es el byte bajo -Low-). Lo mismo es aplicable a los otros tres (BX en B y BL, CX en CH yCL, y DX en DH y DL). Como lo mostr la figura anterior. Estos son los nicos registros quepueden usarse de modo dual (8 o 16 bits). En la prctica, los registros de la CPU generalmenteson conocidos por sus nombres propios.

    AX Acumulador. Enva o recibe datos de puertos y para multiplicacin y divisin. BX Registro base. Calcula direcciones de memoria. CX Registro contador. Contador de ciclos. DX Registro de datos. Guarda direcciones de los puertos DS Registro del segmento de datos, ES Registro del segmento extra, SS Registro del

    segmento de pila y CS Registro del segmento de cdigo, se utilizan para guardar elvalor de un segmento en cualquiera de los registros.

    BP Registro de apuntadores base y SP Registro del apuntador de la pila . Se utilizanpara manipular la informacin que se encuentra en la pila. SI Registro ndice fuente y DI Registro ndice destino, se usan principalmente para las

    operaciones de cadena o para el paso de parmetros IP Registro de apuntador de siguiente instruccin. Este registro siempre apunta a la

    siguiente instruccin a ejecutarse. F Registro de flags (banderas). Este registro se muestra en la tabla 1.3. Est formado por

    varios bits cada uno con significado propio, que son modificados por las operaciones querealiza el uP.

  • 7/24/2019 ApuntesuP UC Unidad1

    10/18

    Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    Flag -- -- -- -- OF DF IF TF SF ZF -- AF -- PF -- CF

    Tabla 1.3. Registro de flags (banderas) del uP 8086

    Aunque es un registro de 16 bits slo algunos de ellos tienen significado. Los otros adquierenvalores indeterminados, y se dice que son bits reservados; un programa no debe tocarlos, puesaunque un equipo dado puede que no los use, otros microprocesadores podran manipularlosinternamente.

    CF Carry Flag o indicador de acarreo. Normalmente indica que "se lleva algo" despus dehaber sumado o restado.

    OF Overflow Flag o indicador de desbordamiento. Si despus de una operacin elresultado no cabe en el tamao del registro, se pone a 1.

    ZF Zero Flag o indicador de cero. Si el resultado da 0 se pone a 1. SF Sign Flag o indicador de signo. Si el resultado es negativo se pone a 1. PF Parity Flag o indicador de paridad. Con algunas operaciones lgicas o aritmticas se

    pone a 1 si el resultado es par. AF Auxiliary Flag o indicador auxiliar. Se usa para operaciones BCD. DF Direction Flag o indicador de direccin. Se usa en operaciones llamadas "de cadena",

    indicando el sentido (ascendente o descendente) en que se recorre la memoria. IF Interrupt Flag o indicador de interrupciones. Cuando se pone a 1 se permiten las

    interrupciones, a 0 se ignoran; se dice que se enmascaran. TF Trap Flag o indicador de trampa (para ejecucin paso a paso).

    1.4.2 DECLARACION DE SEGMENTOS

    Un segmento es un rea especial de un programa que inicia en un lmite de un prrafo, unsegmento en modo real puede ser de hasta 64K. Para direccionar un segmento se usan losregistros de direccionamiento de segmentos. Los tres segmentos principales son los segmentos decdigo, de datos, y de la pila. Estos segmentos se ilustran en la figura 1.11.

    Segmento de cdigo: Contiene las instrucciones de mquina que son ejecutadas. Paradireccionar este segmento se usa el registro CS.

    Segmento de Pila: La pila contiene los datos y direcciones que se necesitan guardartemporalmente. Este segmento se direcciona con el registro SS.

    Segmento de datos: Este segmento contiene datos, constantes y reas de trabajo definidos por elprograma, este segmento es direccionado por el registro por el registro DS.

    Existen otros registros de direccionamiento de segmento como el ES (segmento extra) el FS y elGS que tienen usos especializados.

    Registros deSegmento

    Figura 1.11Segmentos de los uPs Intel

    Direccin

    Direccin

    Direccin

    SS

    DS

    CS

    Segmento de la pila

    Segmento de datos

    Segmento de cdigoMEMORIA

  • 7/24/2019 ApuntesuP UC Unidad1

    11/18

    1.4.3 MODOS DE DIRECCIONAMIENTO

    La CPU ofrece varios mtodos para calcular direcciones de memoria. Los accesos a memoria sepueden categorizar como accesos para obtener la siguiente instruccin a ejecutarse, o paraobtener algn dato especfico. En cuanto a conseguir la siguiente instruccin por ejecutarse, laCPU utiliza la combinacin de los registros CS e IP, los cuales dan la direccin deseada. Antes deentrar en detalles sobre las diferentes modalidades de direccionamiento de la memoria paraobtener algn dato especfico, vale la pena aclarar algunos conceptos acerca de lo que es unsegmento, as como de la manera que se forma una direccin.

    Los segmentos

    La arquitectura del 8086 obliga a usar en combinacin un registro de segmento (CS, DS, ES y SS)y un desplazamiento, para obtener as la localidad absoluta de algn byte de informacin (ya seadatos o instrucciones) dentro de la memoria (puede ser RAM o ROM). Dichos segmentos sirvencomo los separadores de una carpeta: se puede dividir la carpeta en varios temas (medianteseparadores) y tener cierta cantidad de hojas por tema. En el caso del 8086, la cantidad de hojasse traduce en cantidad de caracteres y su lmite es de 64KB por cada tema o segmento.

    Las direcciones

    El esquema de direccionamiento que impone la CPU obliga a usar los registros de segmentos encada operacin. El 8086 tiene un bus de direcciones de 20 bits, debido a que los registros son de16 bits. Cada direccin de memoria se divide en dos partes: el segmento y el desplazamientodentro del segmento (cada uno de 16 bits). En notacin hexadecimal se tendra SSSS:DDDDdonde SSSS representa el registro de segmento seguido de dos puntos y del desplazamientorepresentada por DDDD.

    Clculo de una direccin de memoria

    La memoria est dividida en segmento y desplazamiento. Se debe juntarla en una sola direccinde 20 bits, para ello es necesario aplicar la siguiente formula:

    Registro de segmento * 10H + desplazamiento

    Por ejemplo:

    Si el segmento fuera 2A54H, y el desplazamiento de 0022H, sera:

    2A54H * 10H = 2A540H + 0022H = 2A562H

    Como slo se tienen 20 bits en el bus de direcciones, es posible que una o ms combinaciones desegmentos y desplazamientos originen la misma direccin. Tal es el caso del siguiente ejemplo:

    2A55H * 10H = 2A550H + 0012H = 2A562H

    Modos de direccionamiento. Es la forma en que una instruccin obtiene los operandosrequeridos por medio de cualquier instruccin en ensamblador, para explicarlos, utilizaremos comoejemplo la instruccin "MOV destino, origen", que transfiere datos desde el origen al destino.

    Direccionamiento InmediatoMOV AX, 50 Transferencia de un valor directamente, en este caso el 50 al registro AX

  • 7/24/2019 ApuntesuP UC Unidad1

    12/18

    Direccionamiento Directo. Un valor de 16 bits forma parte de la instruccin y esinterpretado como un acceso a la memoria. que ser movida al registro BX.MOV BX, Cuenta Transferencia del valor de la variable cuenta al registro BX

    Cuenta es una localidad de memoria que tiene alguna informacin

    Direccionamiento de Registro a Registro. En esta modalidad, solamente se realiza unacopia del registro fuente al registro destino, dejando intacto el primero.MOV AX, BX Transfiere el contenido del registro BX al registro AX

    Direccionamiento Indirecto. Trae un valor de memoria a un registro o viceversa, peroprimero se tiene que meter un registro (BX, SI, DI o BP), despus pasarlo a otro registro.MOV BX, 1047HMOV AX, [BX] (Es el registro que tiene la direccin que se quiere obtener el valor, estedebe ir entre corchetes)Si usamos los registros DX, SI, DI, tenemos que combinarlos con el registro DS, y siusamos el registro SP, hay que combinarlo con SS.Los corchetes indican que se trata de una referencia a memoria, y por lo tanto que debeinterpretarse como el contenido de la direccin especificada.

    Direccionamiento de Base.

    Solo se pueden utilizar (BX o BP) es similar al anterior.MOV AX, [BX + 4] o tambinMOV AX, [BX][4]

    Direccionamiento Indexado. Solo se pueden utilizar los registros SI o DIMOV AX, [SI + 7] o tambinMOV AX, [SI][7]

    Direccionamiento Indexado de BaseMOV AX, [BX + SI]MOV AX, [BX][SI]El desplazamiento indicado por el registro BX, se toma en funcin al segmento DS, y eldesplazamiento indicado por el registro BP se toma en funcin al registro de segmento SS.Cuando se usa el registro BP, debe incluirse un segundo operando, ya sea un ndice o unoperando inmediato. Por ejemplo:MOV AX, [BP]Ser ensamblada como:MOV AX, [BP + 0].

    1.4.4 CONTROL DE DISPOSITIVOS DE ENTRADA/SALIDA

  • 7/24/2019 ApuntesuP UC Unidad1

    13/18

    1.4.5 CONJUNTO DE INSTRUCCIONES

    Instrucciones de Movimiento de Datos:

    Son instrucciones que no operan con los datos, nicamente los mueven. La abreviaturautilizada es MOV. Se especifican dos operandos. El procesador almacena el valor especificadocomo primer operando en el lugar especificado como segundo operando.

    Instrucciones Aritmticas y Lgicas:

    Operaciones con uno o dos operandos. Se subdividen en dos clases: Aritmticas y lgicas.Aritmticas: suma (ADD), resta (SUB), multiplicacin (MUL, IMUL), divisin (DIV, IDIV),incremento (INC), decremento (DEC). Lgicas: conjuncin (AND), disjuncin (OR), negacin(NOT), desplazamientos con/sin signo (SAL, SAR,SHL, SHR), rotaciones (RCL, RCR, ROL,ROR). Las operaciones MUL, IMUL, DIV y IDIV tienen operandos implcitos.

    Instrucciones de Control:

    Otra parte importante de un programa es el control de la secuencia de instrucciones. Elprocesador debe permitir la ejecucin no secuencial de instrucciones. Este mecanismo se basa

    en dos tipos de instrucciones: comparacin y salto. La secuencia habitual para alterar el flujode ejecucin es opcionalmente comprobar una condicin y realizar un salto a un lugar diferentedel cdigo.

    Instrucciones de Comparacin:

    Los cdigos de condicin se almacenan el registro de estado y control del procesador y seactualizan con la ejecucin de cada instruccin. Ejemplo: Si se ejecuta la instruccinequivalente a t = a + b. Los cdigos de condicin se modifican de la siguiente forma. CF: Se ha producido acarreo en la suma considerando los operandos como nmerosnaturales. ZF: t = 0 SF: t < 0

    OF: Se ha producido overflow en la suma.El procesador posee instrucciones especficas que slo modifican los cdigos de condicinpero no se guarda el resultado.

    Instrucciones de Salto:

    Las instrucciones de salto hacen que el programa pase a ejecutar una instruccin que no es lasiguiente en memoria. Estas instrucciones modifican el registro contador de programa. Lainstruccin JMP requiere especificar un nico parmetro que es la direccin de memoria de lainstruccin a ejecutar a continuacin. Las instrucciones de salto condicional reciben un nicoparmetro idntico a la instruccin JMP, pero realizan el salto nicamente si la condicin a laque hacen referencia se cumple. La condicin se extrae de los bits de condicin almacenadosen el registro de estado y control.

    1.4.6 ESQUELETO DE UN PROGRAMA (FORMATO EN LENGUAJE ENSAMBLADOR)

    La programacin en lenguaje ensamblador, necesita al menos tres herramientas: un editor de textopara crear el archivo fuente, un compilador para convertirlo en archivo objeto (masm) y unenlazador (linker) para gererar finalmente el programa ejecutable. Una cuarta herramienta sera eldepurador y en caso necesario corregir el programa ejecutable (Figura 1.12).

    Se puede usar cualquier editor de texto, el compilador (llamado ensamblador ) es el MASM ( porMacro Assembler Microsoft) y el enlazador es el programa LINK. Al utilizar el editor de texto para

  • 7/24/2019 ApuntesuP UC Unidad1

    14/18

    crear el archivo, el archivo fuente es el archivo creado en lenguaje ensamblador que contienetodas las instrucciones en el formato del ensamblador). La extensin usada en ensamblador parael acrhivo fuente es .ASM. Este archivo es traducido por el MASM, generalmente como un archivointermedio porque an no es ejecutable. El enlazador (LINKER) combina uno o ms archivos .OBJpara generar el archivo ejecutable, cuya extensin es .EXE (o tambin puede ser .COM,dependiendo de la forma que se ensamblo).

    Figura 1.12Diagrama del proceso de procedimiento de programacin en ensamblador

    Utilizacin del MASM

    Una vez creado el archivo fuente, es necesario que pase por el MASM para generar el archivointermedio (formato OBJ). El comando para ello es el MASM archivo; seguido por la tecla [Enter].MASM es el nombre del macroensamblador, archivo es el nombre del programa (sin extensin), yel signo; le especifica al MASM que ensamble directamente el programa.Ejemplo:

    MASM Prueba;

    Suponiendo que el nombre del programa sea prueba. Si se omitiese el punto y coma, MASMrespondera con lo siguiente:

    Source filename [.ASM] Prueba [Enter]Object filename [prueba.obj] [Enter]Source listing [NUL.LST] [Enter]Cross-reference [NUL.CRF] [Enter]

    Masm pondr entre corchetes la respuesta que considere correcta. La opcin Source Listing(listado fuente ) permite generar un archivo que contendr linea por lnea el cdigo mquina (ennotacin hexadecimal) generado y la lnea de su cdigo fuente, Tambin contiene ingformacinadicional, por ejemplo los smbolos usados en el programa y los diferentes segmentos. El nombreNUL.LST usado por MASM indica que usted no desea dicho listado. La opcin Cross-reference(referencias recprocas) contiene informacin sobre cada smbolo de su cdigo fuente, mostrandoel nmero de lnea donde fue declarado y todas las lneas que hacen referencia a l. De nuevo, elnombre NUL.CRF indica que tampoco desea generar dicho listado.

    Todo parmetro va despues del simbolo "/". Es posible utilizar varios parmetros a la vez. Una veztecleados todos los parmetros se escribe el nombre del archivo a ensamblar. Por ejemplo, siqueremos que el MASM ensamble un programa llamado prueba, y adems deseamos que

    despliegue el nmero de lneas fuente y smbolos procesados (eso lo realiza con el parmetro /v),y si ocurre un error que nos diga en que lnea ocurri (con el parmetro /z), entonces tecleamos:

    MASM /v /z prueba;

    Cuando se usa el code view para visualizar, ejecutar y depurar un archivo, se debe ensamblar elarchivo fuente, de la siguiente forma:

    MASM /zi prueba;

  • 7/24/2019 ApuntesuP UC Unidad1

    15/18

    Usando el enlazador (linker)

    El MASM traduce (ensambla) el archivo de cdigo fuente a otro de formato .OBJ. Sin embargo,MS-DOS no puede ejecutar este ltimo archivo. Primero es necesario pasar el archivo .OBJ porotro proceso que definir muchos detalles y generar el archivo ejecutable; dicho proceso esrealizado por el Enlazador. El comando para invocar al enlazador, tiene similitud con el que se usa

    para invocar al MASM. Simplemente digite LINK archivo + (otros archivos .OBJ o libreras); porejemplo, el comando Link prueba; generar el archivo PRUEBA.EXE.

    Para ampliar el concepto anterior, suponga que tiene dos archivos con extensin .OBJ:prueba1.obj y prueba2.obj y que adems desea mezclar los dos archivos anteriores con unabiblioteca de grficos llamada bibliogr.lib. Usando el enlazador para generar el programaejecutable, se utilizar el siguiente comando:

    Link prueba1 + prueba2 + bibliogr;

    Tome en cuenta que en la lnea para comandos, el primer archivo siempre debe ser el principal; esdecir, el que controlar la secuencia de eventos. El objetivo de enlazar todos los archivos .OBJ espoder generar un solo archivo ejecutable con la extensin .EXE. En el ejemplo anterior, se

    generar el archivo Prueba1.Exe.

    Como se ejecutan los programas en dos

    Los programas con extension .COM y .Exe, tienen una estructura diferente, al momento en queestos programas se ejecutan, el sistema operativo, crea una estructura que se almacena enmemoria llamada PSP (Program Segment Prefix) de 256 bytes de tamao, esta estructura contienealguna de la siguiente informacin:

    DESPLAZAMIENTO TAMAO (BYTES) CONTENIDO

    00H 2 Llamada a la interrupcin 20H02H 2 Memoria total en prrafos

    0AH 4 Direccin se salida

    0EH 4 Direccin del manejador Ctrl-C

    12H 4 Direccin del manejador de errores

    80H 1 Longitud de lnea de comandos

    81H 127 Lnea de comandos

    Los primeros 128 bytes tienen informacin sobre el programa y los otros sobre la lnea de

    comandos. La interrupcin 20H hace que el programa se regrese al sistema operativo al trminodel mismo. La memoria total en prrafos, es la cantidad de memoria que necesita el programa paraejecutarse, un prrafo, es igual a 16 bytes. La lnea de comandos es la lnea que se teclea almomento de ejecutar un programa, esta se almacena a partir de la direccin 127, por ejemplo, sitecleramos en la lnea de comandos (A:\>):

    A:\> dir / p

    En la direccin 80H habr un 6

  • 7/24/2019 ApuntesuP UC Unidad1

    16/18

    81H = d82H = i83H = r84H = 85H = /86H = p

    El manejador Ctrl-C sirve para que al momento de la ejecucin detenemos un programa utilizandoCtrl-C, se activa y se regresa al sistema operativo. La interrupcin 12H se utiliza cuando se terminael programa por un error. La estructura del PSP, se crea cuando se ejecuta un programa .COM o.EXE, pero en realidad, estos tipos de programas son diferentes, veamos cuales son esascaractersticas:

    Programas COM

    Los programas .COM tienen que estar en un solo segmento y no pueden ser mayores a 64 KB dememoria, al momento que se ejecuta un programa .COM, el registro IP siempre apunta a ladireccin 0100H, que es 256 en decimal. Adems todos los programas .COM, tienen una pila, quenicamente es de 2 bytes de tamao, la cual se utiliza nicamente para almacenar la direccin deretorno, entonces, si restamos a 65536 que es lo mximo que puede medir un segmento, por lo

    tanto, un programa .COM, los 256 bytes del PSP, y los 2 bytes de la pila, tenemos 65278 bytes,que es la cantidad real en bytes que puede medir un programa de tipo .COM.

    Programas EXE

    Los programas .EXE, pueden contener uno o ms segmentos, ya sea de datos, de cdigo, yadems de un segmento de pila, este tipo de programas, pueden comenzar en cualquier direccin,y esto se indica a travs del registro IP, dentro de estos programas, existe una cabecera, quecontiene toda la informacin sobre el programa, por ejemplo, el nmero de segmentos, dondecomienzan, etc. Al momento de que se empieza a ejecutar un programa EXE, los registros DS, yES apuntan al PSP, el registro CS apunta al cdigo, y el registro SP al segmento de pila.

  • 7/24/2019 ApuntesuP UC Unidad1

    17/18

    El sistema Operativo, diferencia a un programa EXE y uno COM, tomando los dos primeros bytesde la cabecera, y si estos son iguales a 5A4DA, entonces este es un programa .EXE, y si esto nose cumple, entonces es un programa tipo COM.

    Formato de un programa

    Los programas en ensamblador, pueden ser de dos tipos, uno, que es un formato interno, el cualse utiliza en la creacin de programas dentro del debug, y un formato externo, el cual se utiliza enla creacin de programas fuentes, que despus se ensamblaran, enlazaran, y despus seejecutaran, sin necesidad del debug. Todas las instrucciones en ensamblador, ya sea en formatointerno, o en formato externo, tienen la forma:

    [Etiqueta]: Nemnico Operando [;Comentario]

    En donde, la etiqueta y los comentarios son opcionales

    Las etiquetas, no deben tener ms de 31 caracteres, pueden contener letras y nmeros, ocualquiera de los caracteres @, $,=, _ y ?, deben empezar con una letra, @ o _.

    Los nemnicos es el nico que obligatoriamente debe estar en una sola lnea, y en

    realidad, un nemnico es una instruccin en ensamblador. Los operandosdependen del nemnico, y pueden ser ninguno, uno o varios operandos,

    estos nicamente pueden tener hasta 31 caracteres, y estos pueden ser variables,registros, direcciones de memoria, etc.

    Los comentarios van despus del punto y coma, y sirven para hacer ms claro elfuncionamiento de un programa o la explicacin de las instrucciones, en caso de que noexista comentario, no es necesario el punto y coma.

    Adems de definir ciertas reglas para que el ensamblador pueda entender una instruccin esnecesario darle cierta informacin de los recursos que se van a utilizar, como por ejemplo lossegmentos de memoria que se van a utilizar, datos iniciales del programa y tambin donde inicia ydonde termina nuestro cdigo.

    Un programa sencillo puede ser el siguiente:

    .MODEL SMALL

    .CODEPrograma:MOV AX,4C00HINT 21H.STACKEND Programa

    El programa realmente no hace nada, nicamente coloca el valor 4C00H en el registro AX, paraque la interrupcin 21H termine el programa, pero nos da una idea del formato en un programa enensamblador.

    La directiva .MODEL define el tipo de memoria que se utilizar; la directiva .CODE nos indica quelo que esta a continuacin es nuestro programa; la etiqueta Programa indica al ensamblador elinicio del programa; la directiva .STACK le pide al ensamblador que reserve un espacio dememoria para las operaciones de la pila; la instruccin END Programa marca el final del programa.

    Ejemplo prctico de un programa que escribe una cadena en pantalla:

    .MODEL SMALL

    .CODE

  • 7/24/2019 ApuntesuP UC Unidad1

    18/18

    Programa:MOV AX, @DATAMOV DS, AXMOV DX, Offset TextoMOV AH, 9INT 21HMOV AX,4C00HINT 21H.DATATexto DB 'Mensaje en pantalla.$'.STACKEND Programa

    Los primeros pasos son iguales a los del programa anterior: se define el modelo de memoria, seindica donde inicia el cdigo del programa y en donde comienzan las instrucciones. A continuacinse coloca @DATA en el registro AX para despus pasarlo al registro DS ya que no se puede copiardirectamente una constante a un registro de segmento. El contenido de @DATA es el nmero delsegmento que ser utilizado para los datos. Luego se guarda en el registro DX un valor dado por"Offset Texto" que nos da la direccin donde se encuentra la cadena de caracteres en el segmentode datos. Luego utiliza la opcin 9 (Dada por el valor de AH) de la interrupcin 21H para desplegar

    la cadena posicionada en la direccin que contiene DX. Por ltimo utiliza la opcin 4CH de lainterrupcin 21H para terminar la ejecucin del programa (aunque cargamos al registro AX el valor4C00H la interrupcin 21H solo toma como opcin el contenido del registro AH).

    La directiva .DATA le indica al ensamblador que lo que est escrito a continuacin debealmacenarlo en el segmento de memoria destinado a los datos. La directiva DB es utilizada paraDefinir Bytes, esto es, asignar a cierto identificador (en este caso "Texto") un valor, ya sea unaconstante o una cadena de caracteres, en este ltimo caso deber estar entre comillas sencillas ' yterminar con el smbolo "$".

    1.4.7 USO DE PROCEDIMIENTOS